Commit e6cb928f authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Actualiza módulos, prepara widget de productos

parent f750f71c
Loading
Loading
Loading
Loading
+28 −29
Original line number Diff line number Diff line
define([
	"app/designs/details/Controller"
	, "app/designs/details/Layout"
	, 'app/redmicConfig'
	, "dojo/_base/declare"
	, "dojo/_base/lang"
	, "redmic/modules/layout/templateDisplayer/TemplateDisplayer"
	, "templates/InitialInfo"
	, 'redmic/modules/base/_Filter'
	, "redmic/base/Credentials"
	'app/designs/details/Controller'
	, 'app/designs/details/Layout'
	, 'app/home/views/ProductWidget'
	, 'app/home/views/SearchBarWidget'
	, 'app/home/views/SearchFastFilterWidget'
	, 'app/home/views/SearchFilterWidget'
	, 'app/home/views/SearchResultsWidget'
	, "app/home/views/SocialWidget"
	, 'app/home/views/SocialWidget'
	, 'app/home/views/StatsWidget'
	, "app/home/views/WidgetFavourites"
	, 'app/redmicConfig'
	, 'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'redmic/base/Credentials'
	, 'redmic/modules/base/_Filter'
	, 'redmic/modules/layout/templateDisplayer/TemplateDisplayer'
	, 'templates/InitialInfo'
], function(
	Controller
	, Layout
	, redmicConfig
	, declare
	, lang
	, TemplateDisplayer
	, TemplateInfo
	, _Filter
	, Credentials
	, ProductWidget
	, SearchBarWidget
	, SearchFastFilterWidget
	, SearchFilterWidget
	, SearchResultsWidget
	, SocialWidget
	, StatsWidget
	, WidgetFavourites
	, redmicConfig
	, declare
	, lang
	, Credentials
	, _Filter
	, TemplateDisplayer
	, TemplateInfo
) {

	return declare([Layout, Controller, _Filter], {
@@ -99,17 +99,16 @@ define([
					props: {
						windowTitle: 'info',
						template: TemplateInfo,
						"class": "mediumSolidContainer.borderRadiusBottom",
						target: "initial_info"
						'class': 'mediumSolidContainer.borderRadiusBottom',
						target: 'initial_info'
					}
				},
				favourites: {
				products: {
					width: 3,
					height: 6,
					type: WidgetFavourites,
					type: ProductWidget,
					props: {
						windowTitle: 'favourites',
						"class": "containerDetails"
						windowTitle: 'products'
					}
				},
				stats: {
@@ -216,7 +215,7 @@ define([

		_clearModules: function() {

			this._publish(this._getWidgetInstance('info').getChannel("CLEAR"));
			this._publish(this._getWidgetInstance('info').getChannel('CLEAR'));
		},

		_refreshModules: function() {
@@ -225,8 +224,8 @@ define([
				info: ''
			};

			if (Credentials.get("userRole") === "ROLE_GUEST") {
				obj.roleGuest = this.i18n.contentInfo1 + " ";
			if (Credentials.get('userRole') === 'ROLE_GUEST') {
				obj.roleGuest = this.i18n.contentInfo1 + ' ';
				obj.roleGuest += this.i18n.visitor;
				obj.roleGuest += this.i18n.contentInfo2;
				obj.register = this.i18n.register.toLowerCase();
@@ -237,7 +236,7 @@ define([

			this._emitEvt('INJECT_ITEM', {
				data: obj,
				target: "initial_info"
				target: 'initial_info'
			});
		}
	});
+164 −0
Original line number Diff line number Diff line
define([
	'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'redmic/modules/base/_Module'
	, 'redmic/modules/base/_Show'
	, 'redmic/modules/base/_Store'
	, 'redmic/modules/browser/_ButtonsInRow'
	, 'redmic/modules/browser/ListImpl'
	, 'templates/ProductList'
], function(
	declare
	, lang
	, _Module
	, _Show
	, _Store
	, _ButtonsInRow
	, ListImpl
	, ProductListTemplate
) {

	return declare([_Module, _Show, _Store], {
		//	summary:
		//		Widget contenedor de un listado de productos ofrecidos en la plataforma

		constructor: function(args) {

			this.config = {
				_browserTarget: 'productBrowser',
				'class': 'productPanel',
				infoTooltipClass: 'inputInfoTooltipContent',
				products: [{
					id: 1,
					name: 'speciesCatalog',
					href: 'catalog/species-catalog'
				},{
					id: 2,
					name: 'atlas',
					href: 'atlas'
				},{
					id: 3,
					name: 'serviceOgc',
					href: 'service-ogc-catalog'
				},{
					id: 4,
					name: 'tracking',
					href: 'viewer/tracking'
				},{
					id: 5,
					name: 'speciesDistribution',
					href: 'viewer/species-distribution'
				},{
					id: 6,
					name: 'timeSeries',
					href: 'viewer/charts'
				},{
					id: 7,
					name: 'trashCollection',
					href: 'viewer/trash-collection'
				},{
					id: 8,
					name: 'realTime',
					href: 'viewer/real-time'
				},{
					id: 9,
					name: 'bibliography',
					href: 'bibliography'
				}]
			};

			lang.mixin(this, this.config, args);
		},

		_initialize: function() {

			this.browserConfig = this._merge([{
				parentChannel: this.getChannel(),
				target: this._browserTarget,
				template: ProductListTemplate,
				rowConfig: {
					buttonsConfig: {
						listButton: [{
							icon: 'fa-arrow-right',
							btnId: 'link',
							title: 'openProduct',
							href: '/{href}'
						}]
					}
				}
			}, this.browserConfig || {}]);

			var browserDefinition = declare([ListImpl, _ButtonsInRow]);
			this.browser = new browserDefinition(this.browserConfig);
		},

		_afterShow: function() {

			if (this._getPreviouslyShown()) {
				return;
			}

			this._publish(this.browser.getChannel('SHOW'), {
				node: this.domNode
			});

			this._addProducts();
		},

		_addProducts: function() {

			this._emitEvt('INJECT_DATA', {
				data: this.products,
				target: this._browserTarget
			});
		},

		_dataAvailable: function(res) {

			var data = res.data;

			if (!data) {
				return;
			}

			var specificStatsData = [{
				attachedKey: 'activity',
				independentKey: 'activityOutProject'
			},{
				attachedKey: 'project',
				independentKey: 'projectOutProgram'
			},{
				attachedKey: 'program'
			}];

			var id = 1;

			for (var i in specificStatsData) {
				var specificStatsItem = specificStatsData[i],
					attachedKey = specificStatsItem.attachedKey,
					independentKey = specificStatsItem.independentKey,
					specificData = this._extractSpecificStats(data, attachedKey, independentKey);

				this._addStats({
					id: id,
					name: attachedKey,
					stats: specificData,
					href: attachedKey === 'activity' ? 'activities': attachedKey // TODO ruta incorrecta de vista
				});

				id++;
			}

			for (var item in data) {
				this._addStats({
					id: id,
					name: item,
					stats: data[item],
					href: item
				});

				id++;
			}
		}
	});
});
+2 −3
Original line number Diff line number Diff line
@@ -32,10 +32,9 @@ define([

			this.config = {
				target: redmicConfig.services.administrativeStatistics,
				_browserTarget: 'browserStatistics',
				_browserTarget: 'statisticsBrowser',
				'class': 'statsPanel',
				infoTooltipClass: 'inputInfoTooltipContent',
				_titleRightButtonsList: []
				infoTooltipClass: 'inputInfoTooltipContent'
			};

			lang.mixin(this, this.config, args);
+0 −145
Original line number Diff line number Diff line
define([
	"dojo/_base/declare"
	, "app/base/views/Module"
	, "app/home/views/_DashboardItem"
	, "dojo/_base/lang"
	, "put-selector/put"
	, "redmic/base/Credentials"
], function(
	declare
	, Module
	, _DashboardItem
	, lang
	, put
	, Credentials
) {

	return declare(_DashboardItem, {
		//	summary:
		//		Widget para la creación de un elemento Favoritos del modulo Initial
		//
		//	description:

		// items: array de String
		// 	contenido del widget
		elements: {
			"catalog": {"activities-catalog":{}, "project-catalog":{}, "program-catalog":{}, "species-catalog":{}/*,
						"organisation-catalog":{}, "platform-catalog":{}*/},
			"products": {"atlas":{}, "service-ogc-catalog":{}},
			"viewer": {"species-distribution":{}, "tracking":{}, "charts": {}, "trash-collection": {}},
			"admin": {"taxonomy":{}},
			"maintenance": {"domains":{}, "service-ogc": {}}
		},

		hrefs: [{
			url: "/catalog/activity-infrastructure/1378",
			label: "webcams",
			icon: "fa-camera"
		},{
			url: "/viewer/real-time",
			label: "real-time",
			icon: "fa-clock-o"
		}],

		suffixI18n: '-view',

		constructor: function(args){

			lang.mixin(this, args);
			this.items = Credentials.get("allowedModules");
		},

		postCreate: function() {

			this.inherited(arguments); // PostCreate del padre
			this.createStructure(this.checkItems());
		},

		checkItems: function() {
			// summary:
			// 	Recorre los items recibidos y devuelve los módulos correspondientes.
			// returns:
			// 	Array con los módulos a mostrar

			var result = [],
				items = {},
				item;

			// Pasamos los datos de los módulos a formato objeto para comprobar más rapido luego
			for (var i = 0; i < this.items.length; i++) {

				item = this.items[i];
				var obj = items[item.name] = item;

				obj.subItems = {};

				if (item.modules) {
					for (var j = 0; j < item.modules.length; j++) {
						var subItem = item.modules[j],
							subObj = obj.subItems[subItem.name] = subItem;
					}
				}

				delete obj.modules;
			}

			for (item in this.elements) {
				if (items[item]) {
					var subelements = this.elements[item];
					for (var subitem in subelements) {
						if (items[item].subItems[subitem]) {

							var label = subitem !== "list" ? subitem : item;

							if (item == "catalog") {
								label = subitem.split("-")[0] + "CatalogView";
							}

							var moduleName = this.i18n[label + this.suffixI18n] || this.i18n[label],
								moduleIcon = items[item].subItems[subitem].icon,
								iconPrefix = moduleIcon.split("-")[0],
								icon = iconPrefix + " " + moduleIcon;

							result.push(
								new Module({
									url: "/" + item + "/" + subitem,
									name: moduleName,
									icon: icon,
									domain: false
								})
							);
						}
					}
				}
			}

			for (i = 0; i < this.hrefs.length; i++) {
				var href = this.hrefs[i],
					iconHref = href.icon,
					iconHrefPrefix = iconHref.split("-")[0];

				iconHref = iconHrefPrefix + " " + iconHref;

				result.push(
					new Module({
						url: href.url,
						name: this.i18n[href.label] || href.label,
						icon: iconHref,
						domain: false
					})
				);
			}

			return result;	// return Array
		},

		createStructure: function(/*Array*/ modules) {

			this.favouritesContainerNode = put(this.contentNode, 'div.favouritesBoxItems');

			for (var i = 0; i < modules.length; i++) {
				modules[i].placeAt(this.favouritesContainerNode);
			}
		}
	});
});
+20 −0
Original line number Diff line number Diff line
@@ -1254,6 +1254,26 @@ define({
	, "organisationMoreInfo": "Las organizaciones son entidades que participan en una actividad con un rol establecido. Pueden ser de carácter público, privado o profesionales autónomos."
	, "platformMoreInfo": "Una plataforma es cualquier instalación o artefacto, ya sea fijo o móvil, desde donde se opera para la obtención de datos, o que porta los sensores o aparatos de muestreo."

	, "speciesCatalogProductName": "Catálogo de especies"
	, "atlasProductName": "Atlas"
	, "serviceOgcProductName": "Servicios OGC"
	, "trackingProductName": "Seguimiento"
	, "speciesDistributionProductName": "Distribución de especies"
	, "timeSeriesProductName": "Series temporales"
	, "trashCollectionProductName": "Recolección de basura"
	, "realTimeProductName": "Datos en tiempo real"
	, "bibliographyProductName": "Bibliografía"
	, "speciesCatalogProductDescription": "Listado de especies sincronizado con WoRMS, pero centrado en la región de la Macaronesia. Incluye aquellas especies que se encuentran referenciadas en los datos recogidos en la plataforma."
	, "atlasProductDescription": "Mapa interactivo con una selección de información relevante para los interesados en el mar y la costa, organizada por capas combinables: demarcaciones jurídicas, zonas de baño, áreas protegidas, pesquerías, batimetrías, etc."
	, "serviceOgcProductDescription": "Listado de servicios contenidos en REDMIC que se ofrecen a terceros, siguiendo los protocolos del Open Geospatial Consortium."
	, "trackingProductDescription": "Visor interactivo de datos de seguimiento. Consiste en un mapa acompañado de una barra de reproducción, que permite moverse en la dimensión temporal para ver su evolución."
	, "speciesDistributionProductDescription": "Visor interactivo sobre la distribución de las especies, representada en mallas o retículas de 0,5 - 10 km². Permite calcular el número total de especies presentes en cada cuadrícula, dato muy útil en estudios de biodiversidad y planificación territorial."
	, "timeSeriesProductDescription": "Visor interactivo para series temporales de parámetros oceanográficos, recogidos en las diferentes actividades registradas en la plataforma. Los datos están asociados a una estación, fija o eventual, donde se recogen una serie de parámetros para su estudio."
	, "trashCollectionProductDescription": "Visor interactivo centrado en datos de muestreo de recogida de basuras, fruto de diferentes campañas registradas en la plataforma. Se representa el transecto de recogida sobre el mapa y la composición cualitativa de los elementos recogidos en gráficas de frecuencia para cada elemento, acumulados, clasificación por tipología, etc."
	, "realTimeProductDescription": "Visor interactivo de series de datos, que permite su consulta en tiempo real y del pasado reciente. Contiene en su mayoría datos meteorológicos, pudiendo visualizar diferentes parámetros por estación con sus respectivas representaciones gráficas."
	, "bibliographyProductDescription": "Listado de gran cantidad de publicaciones científicas relacionadas con el medio marino en su ámbito de actuación. También se pueden encontrar manuales, textos legislativos y otros documentos relacionados con actividades concretas. Algunos de estos documentos se pueden consultar directamente en el visor, para otros se proporciona un enlace externo o simplemente sirve de escaparate para conocer de su existencia."


	// Para capas que no se pueden cambiar las keys
	, "descript_1": "Descripción"
	, "descriptio": "Descripción"
Loading