Commit 3471e021 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Refactoriza y mejora base de vistas detalle

Actualiza vistas detalle para que aprovechen funcionalidades comunes,
simplificando su funcionamiento y mantenimiento. Se ha generado una base
común a vistas detalle y otra común a vistas detalle de entidades que
guardan relación con actividades. Además, estas bases implementan ahora
lógica relativa a vistas, que no tenían realmente cabida en la
implementación del componente de diseño.

Muestra en todas las vistas detalle que tengan relación con un catálogo
(por la entidad a la que detallan) un enlace para ir al mismo. Se
convertirá pronto en un botón, en lugar de texto.

Añade enlaces a detalle de contacto desde los listados existentes.

Actualiza submódulos.
parent ea0b7f15
Loading
Loading
Loading
Loading
Compare ca156bcf to ba98ce4b
Original line number Diff line number Diff line
Subproject commit ca156bcfdaee34ab47395812d2da1072e5403b3a
Subproject commit ba98ce4b8d577386b0f4333e4d407cda8864feac
+6 −4
Original line number Diff line number Diff line
@@ -63,11 +63,13 @@ define([
			//	tags:
			//		private

			if (this.metaTags) {
			if (!this.metaTags) {
				return;
			}

			this._emitEvt('PUT_META_TAGS', {
				view: this.ownChannel
			});
		}
		}
	});
});
+89 −0
Original line number Diff line number Diff line
define([
	"app/designs/base/_Main"
	, "app/designs/details/Controller"
	, "app/designs/details/Layout"
	, "app/designs/details/_AddTitle"
	, "dojo/_base/declare"
	, "dojo/_base/lang"
	'app/designs/base/_Main'
	, 'app/designs/details/Controller'
	, 'app/designs/details/Layout'
	, 'app/designs/details/_AddTitle'
	, 'dojo/_base/declare'
	, 'src/detail/_WidgetDefinition'
	, "templates/ActivityList"
], function(
	_Main
	, Controller
	, Layout
	, _AddTitle
	, declare
	, lang
	, _WidgetDefinition
	, TemplateActivities
) {

	return declare([Layout, Controller, _Main, _AddTitle, _WidgetDefinition], {
		//	summary:
		//		Base de vistas detalle.

		constructor: function(args) {

			this.activityTarget = "activities";

			lang.mixin(this, this.config, args);
		},
		//		Base común a todas las vistas de detalle.

		_setMainConfigurations: function() {

@@ -43,12 +32,6 @@ define([
				info: this._getInfoConfig({
					template: this.templateInfo,
					target: this.target[0]
				}),
				activityList: this._getActivitiesOrProjectsConfig({
					title: 'activities',
					target: this.activityTarget,
					template: TemplateActivities,
					href: this.viewPathsWidgets.activities
				})
			}, this.widgetConfigs || {}]);
		},
@@ -62,32 +45,21 @@ define([

			this._checkPathVariableId();
			this._getMainTargetData();
			this._prepareActivityTarget();
			this._getActivityTargetData();
		},

		_getMainTargetData: function() {
		_checkPathVariableId: function() {

			this._emitEvt('GET', {
				target: this.target[0],
				requesterId: this.ownChannel,
				id: this.pathVariableId
			});
		},

		_prepareActivityTarget: function() {

			this.target[1] = lang.replace(this.activitiesTargetBase, {
				id: this.pathVariableId
			});
			if (!this.pathVariableId) {
				this._goTo404();
			}
		},

		_getActivityTargetData: function() {
		_getMainTargetData: function() {

			this._emitEvt('GET', {
				target: this.target[1],
				target: this.target[0],
				requesterId: this.ownChannel,
				id: ''
				id: this.pathVariableId
			});
		},

@@ -95,18 +67,22 @@ define([

			this.inherited(arguments);

			if (resWrapper.target === this.target[1]) {
				this._dataToActivities(res);
			if (this.target instanceof Array && this.target[0] !== resWrapper.target) {
				return;
			}

			this._putMetaTags(res.data);
		},

		_dataToActivities: function(response) {
		_putMetaTags: function(data) {

			var data = response.data;
			if (!this.metaTags || !data) {
				return;
			}

			this._emitEvt('INJECT_DATA', {
				data: data,
				target: this.activityTarget
			this._emitEvt('PUT_META_TAGS', {
				view: this.getOwnChannel(),
				data: data
			});
		}
	});
+90 −0
Original line number Diff line number Diff line
define([
	'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'src/detail/_Detail'
	, 'src/redmicConfig'
	, 'templates/ActivityList'
], function(
	declare
	, lang
	, _Detail
	, redmicConfig
	, TemplateActivities
) {

	return declare(_Detail, {
		//	summary:
		//		Base de vistas de detalle para entidades relacionadas con actividades.

		constructor: function(args) {

			this.config = {
				activityTarget: 'activities'
			};

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

		_setMainConfigurations: function() {

			this.inherited(arguments);

			this.widgetConfigs = this._merge([this.widgetConfigs || {}, {
				activityList: this._getActivitiesOrProjectsConfig({
					title: 'activities',
					target: this.activityTarget,
					template: TemplateActivities,
					href: redmicConfig.viewPaths.activityDetails
				})
			}]);
		},

		_clearModules: function() {

			this.inherited(arguments);

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

		_refreshModules: function() {

			this.inherited(arguments);

			this._prepareActivityTarget();
			this._getActivityTargetData();
		},

		_prepareActivityTarget: function() {

			this.target[1] = lang.replace(this.activitiesTargetBase, {
				id: this.pathVariableId
			});
		},

		_getActivityTargetData: function() {

			this._emitEvt('GET', {
				target: this.target[1],
				requesterId: this.ownChannel,
				id: ''
			});
		},

		_itemAvailable: function(res, resWrapper) {

			this.inherited(arguments);

			if (resWrapper.target === this.target[1] && res?.data) {
				this._dataToActivities(res.data);
			}
		},

		_dataToActivities: function(data) {

			this._emitEvt('INJECT_DATA', {
				data: data,
				target: this.activityTarget
			});
		}
	});
});
+18 −5
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ define([
	, 'src/component/layout/templateDisplayer/TemplateDisplayer'
	, 'src/component/map/_ImportWkt'
	, 'src/component/map/LeafletImpl'
	, 'src/redmicConfig'
	, 'templates/ContactSet'
	, 'templates/DocumentList'
	, 'templates/OrganisationSet'
@@ -52,6 +53,7 @@ define([
	, TemplateDisplayer
	, _ImportWkt
	, LeafletImpl
	, redmicConfig
	, TemplateContacts
	, TemplateDocuments
	, TemplateOrganisation
@@ -93,7 +95,7 @@ define([
								icon: 'fa-info-circle',
								btnId: 'details',
								title: this.i18n.info,
								href: this.viewPathsWidgets.organisations,
								href: redmicConfig.viewPaths.organisationDetails,
								pathToItem: 'organisation'
							}]
						}
@@ -121,7 +123,7 @@ define([
								icon: 'fa-info-circle',
								btnId: 'details',
								title: this.i18n.info,
								href: this.viewPathsWidgets.platforms,
								href: redmicConfig.viewPaths.platformDetails,
								pathToItem: 'platform'
							}]
						}
@@ -135,15 +137,26 @@ define([
			return {
				width: 3,
				height: 4,
				type: declare([ListImpl, _Framework]),
				type: declare([ListImpl, _Framework, _ButtonsInRow]),
				props: {
					title: 'contacts',
					target: this.contactTarget,
					template: TemplateContacts,
					bars: [{
						instance: Total
					}],
					rowConfig: {
						buttonsConfig: {
							listButton: [{
								icon: 'fa-info-circle',
								btnId: 'details',
								title: this.i18n.info,
								href: redmicConfig.viewPaths.contactDetails,
								pathToItem: 'contact'
							}]
						}
					}
				}
			};
		},

@@ -166,7 +179,7 @@ define([
								icon: 'fa-info-circle',
								btnId: 'details',
								title: this.i18n.info,
								href: this.viewPathsWidgets.documents
								href: redmicConfig.viewPaths.bibliographyDetails
							}]
						}
					}
Loading