Commit 8d8f74b8 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Reorganiza gestión de series temporales

parent 62261c46
Loading
Loading
Loading
Loading
+76 −26
Original line number Diff line number Diff line
define([
	'app/viewers/views/_SeriesSelectionManagement'
	, 'app/viewers/views/_TimeSeriesDataManagement'
	'app/viewers/views/_TimeSeriesDataManagement'
	, 'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'dojo/aspect'
], function(
	_SeriesSelectionManagement
	, _TimeSeriesDataManagement
	_TimeSeriesDataManagement
	, declare
	, lang
	, aspect
) {

	return declare([_TimeSeriesDataManagement, _SeriesSelectionManagement], {
	return declare(_TimeSeriesDataManagement, {
		//	summary:
		//		Extensión para la vista de detalle de actividad para el manejo de series temporales.

		constructor: function(args) {

			this.config = {
				_insertedInTimeSeriesData: {},
				emptySeriesData: {
					data: {
						stations: {},
						parameters: {},
						definitions: {}
					},
					stationIndex: {},
					parameterIndex: {},
					definitionIndex: {}
				},
				pathSeparator: '.'
			};

@@ -32,28 +37,26 @@ define([
			this._indexDataList = {};

			var parsedData = this._parseData(sourceData);
			this._generateTimeSeriesData(parsedData);
			this._generateTimeSeriesDataFromParsedData(parsedData);
		},

		_generateTimeSeriesData: function(listData) {
		_generateTimeSeriesDataFromParsedData: function(parsedData) {

			this._clear();

			for (var i = 0; i < listData.length; i++) {
				var item = listData[i],
			for (var i = 0; i < parsedData.length; i++) {
				var item = parsedData[i],
					path = item.path;

				if (path.split(this.pathSeparator).length > 2) {
				this._insertItemInDataChart(path);
			}
			}
		},

		_insertItemInDataChart: function(path) {

			if (this._indexDataList[path] !== undefined && !this._insertedInTimeSeriesData[path]) {
				this._updateDataChart = true;
				this._insertedInTimeSeriesData[path] = true;
			if (this._indexDataList[path] === undefined || path.split(this.pathSeparator).length < 3) {
				return false;
			}

			var item = this._dataList[this._indexDataList[path]],
				stationId = this._insertStation(this._dataList[this._indexDataList[this._getParentPath(path)]]),
@@ -61,7 +64,8 @@ define([
				dataDefinitionIds = this._insertDataDefinitions(item);

			this._insertOrUpdateIndex(stationId, parameterId, dataDefinitionIds);
			}

			return true;
		},

		_getParentPath: function(path) {
@@ -71,6 +75,26 @@ define([
			return path.replace(regex, '$1');
		},

		_insertStation: function(itemStation) {

			if (itemStation && !this.seriesData.data.stations[itemStation.id]) {
				this.seriesData.data.stations[itemStation.id] = itemStation;
			}

			return itemStation.id;
		},

		_insertParameter: function(item) {

			var parameter = lang.clone(item);
			if (!this.seriesData.data.parameters[item.id]) {
				delete parameter.id;
				this.seriesData.data.parameters[item.id] = parameter;
			}

			return item.id;
		},

		_insertDataDefinitions: function(item) {

			var ids = {},
@@ -95,11 +119,37 @@ define([
			return ids;
		},

		_clear: function() {
		_insertOrUpdateIndex: function(stationId, parameterId, dataDefinitionIds) {

			if (!this.seriesData.stationIndex[stationId]) {
				this.seriesData.stationIndex[stationId] = [parameterId];
			} else {
				this.seriesData.stationIndex[stationId].push(parameterId);
			}

			if (!this.seriesData.parameterIndex[parameterId]) {
				this.seriesData.parameterIndex[parameterId] = [stationId];
			} else {
				this.seriesData.parameterIndex[parameterId].push(stationId);
			}

			for (var z in dataDefinitionIds) {
				var dataDefinitionIdsJoined = dataDefinitionIds[z].join(this.idSeparator);
				if (!this.seriesData.definitionIndex[dataDefinitionIdsJoined]) {

			this._insertedInTimeSeriesData = {};
					this.seriesData.definitionIndex[dataDefinitionIdsJoined] = {
						sIds: stationId,
						pIds: parameterId
					};
				}
			}
		},

		_clear: function() {

			this.inherited(arguments);

			this.seriesData = lang.clone(this.emptySeriesData);
		}
	});
});
+5 −1
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ define([
	, "app/designs/dynamicDualContent/main/FacetsWithDynamicRightContent"
	, "app/designs/list/Controller"
	, "app/designs/list/layout/Layout"
	, 'app/details/views/_ActivityTimeSeriesDataManagement'
	, "app/viewers/views/_TimeSeriesSelectionManagement"
	, "app/redmicConfig"
	, "dojo/_base/declare"
@@ -34,6 +35,7 @@ define([
	, FacetsWithDynamicRightContent
	, ListController
	, ListLayout
	, _ActivityTimeSeriesDataManagement
	, _TimeSeriesSelectionManagement
	, redmicConfig
	, declare
@@ -55,7 +57,9 @@ define([
	, _Selectable
	, ListTemplate
){
	return declare([EmbeddedContentSelectionInTopbar, _TimeSeriesSelectionManagement], {
	return declare([
		EmbeddedContentSelectionInTopbar, _ActivityTimeSeriesDataManagement, _TimeSeriesSelectionManagement
	], {
		//	summary:
		//		Vista de ChartsView.

+0 −93
Original line number Diff line number Diff line
define([
	"dojo/_base/declare"
	, "dojo/_base/lang"
], function(
	declare
	, lang
){
	return declare(null, {
		//	summary:
		//		Extensión para la vista de  para el manejo de seleccionados.
		//	description:
		//		Añade funcionalidades de manejo de seleccionados a la vista.

		constructor: function(args) {

			this.config = {
				seriesData: {
					data: {
						stations: {},
						parameters: {},
						definitions: {}
					},
					stationIndex: {},
					parameterIndex: {},
					definitionIndex: {}
				}
			};

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

		_insertStation: function(itemStation) {

			if (itemStation && !this.seriesData.data.stations[itemStation.id]) {
				this.seriesData.data.stations[itemStation.id] = itemStation;
			}

			return itemStation.id;
		},

		_insertParameter: function(item) {

			var parameter = lang.clone(item);
			if (!this.seriesData.data.parameters[item.id]) {
				delete parameter.id;
				this.seriesData.data.parameters[item.id] = parameter;
			}

			return item.id;
		},

		_insertOrUpdateIndex: function(stationId, parameterId, dataDefinitionIds) {

			if (!this.seriesData.stationIndex[stationId]) {
				this.seriesData.stationIndex[stationId] = [parameterId];
			} else {
				this.seriesData.stationIndex[stationId].push(parameterId);
			}

			if (!this.seriesData.parameterIndex[parameterId]) {
				this.seriesData.parameterIndex[parameterId] = [stationId];
			} else {
				this.seriesData.parameterIndex[parameterId].push(stationId);
			}

			for (var z in dataDefinitionIds) {
				var dataDefinitionIdsJoined = dataDefinitionIds[z].join(this.idSeparator);
				if (!this.seriesData.definitionIndex[dataDefinitionIdsJoined]) {

					this.seriesData.definitionIndex[dataDefinitionIdsJoined] = {
						sIds: stationId,
						pIds: parameterId
					};
				}
			}
		},

		_clear: function() {

			if (this.seriesData) {
				this.seriesData.stationIndex = {};
				this.seriesData.parameterIndex = {};
				this.seriesData.definitionIndex = {};

				if (this.seriesData.data) {
					this.seriesData.data.stations = {};
					this.seriesData.data.parameters = {};
					this.seriesData.data.definitions = {};
				}
			}
		}
	});
});
+2 −2
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ define([
			}

			if (this._getListDataDfd && !this._getListDataDfd.isFulfilled()) {
				this._generateTimeSeriesData();
				this._generateTimeSeriesDataFromSelectedData();
				this._getListDataDfd.resolve();
				this._getListDataDfd = null;
			}
@@ -202,7 +202,7 @@ define([
				this._getListDataDfd = new Deferred();
				this._getListData();
			} else {
				this._generateTimeSeriesData();
				this._generateTimeSeriesDataFromSelectedData();
			}
		},

+22 −69
Original line number Diff line number Diff line
define([
	'alertify/alertify.min'
	, "app/viewers/views/_SeriesSelectionManagement"
	, "app/viewers/views/_TimeSeriesDataManagement"
	, "dojo/_base/declare"
	, "dojo/_base/lang"
	, "dojo/aspect"
	, "redmic/modules/base/_Selection"
	, 'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'dojo/aspect'
	, 'redmic/modules/base/_Selection'
], function(
	alertify
	, _SeriesSelectionManagement
	, _TimeSeriesDataManagement
	, declare
	, lang
	, aspect
	, _Selection
) {
	return declare([_TimeSeriesDataManagement, _SeriesSelectionManagement, _Selection], {

	return declare(_Selection, {
		//	summary:
		//		Extensión para la vista de  para el manejo de seleccionados.
		//		Extensión para la vista de gráficas para el manejo de seleccionados.
		//	description:
		//		Añade funcionalidades de manejo de seleccionados a la vista.

@@ -26,7 +23,6 @@ define([
			this.config = {
				_selected: {},
				_insertedInTimeSeriesData: {},
				pathSeparator: '.',
				maxParams: 10
			};

@@ -35,8 +31,8 @@ define([
			aspect.after(this, '_setOwnCallbacksForEvents', lang.hitch(this,
				this._setTimeSeriesSelectionManagementOwnCallbacksForEvents));

			aspect.before(this, "_select", lang.hitch(this, this._selectTimeSeriesSelectionManagement));
			aspect.before(this, "_deselect", lang.hitch(this, this._deselectTimeSeriesSelectionManagement));
			aspect.before(this, '_select', lang.hitch(this, this._selectTimeSeriesSelectionManagement));
			aspect.before(this, '_deselect', lang.hitch(this, this._deselectTimeSeriesSelectionManagement));
		},

		_setTimeSeriesSelectionManagementOwnCallbacksForEvents: function() {
@@ -48,7 +44,7 @@ define([

			this.inherited(arguments);

			this._emitEvt("GROUP_SELECTED");
			this._emitEvt('GROUP_SELECTED');
		},

		_selectTimeSeriesSelectionManagement: function(path) {
@@ -63,7 +59,7 @@ define([
			this._insertedInTimeSeriesData = {};
		},

		_generateTimeSeriesData: function() {
		_generateTimeSeriesDataFromSelectedData: function() {

			this._clear();

@@ -77,56 +73,13 @@ define([

			for (var i = 0; i < selectedCount; i++) {
				var path = selectedKeys[i];
				if (path.split(this.pathSeparator).length > 2) {
					this._insertItemInDataChart(path);
				}
			}
		},

		_insertItemInDataChart: function(path) {

			if (this._indexDataList[path] !== undefined && !this._insertedInTimeSeriesData[path]) {
				if (!this._insertedInTimeSeriesData[path]) {
					if (this._insertItemInDataChart(path)) {
						this._updateDataChart = true;
						this._insertedInTimeSeriesData[path] = true;

				var item = this._dataList[this._indexDataList[path]],
					stationId = this._insertStation(this._dataList[this._indexDataList[this._pathParent(path)]]),
					parameterId = this._insertParameter(item),
					dataDefinitionIds = this._insertDataDefinitions(item);

				this._insertOrUpdateIndex(stationId, parameterId, dataDefinitionIds);
					}
		},

		_pathParent: function(path) {

			var regex = /(.+)\.[0-9]+$/;

			return path.replace(regex, "$1");
		},

		_insertDataDefinitions: function(item) {

			var ids = {},
				dataDefinitions = item.dataDefinitions;

			for (var n = 0; n < dataDefinitions.length; n++) {
				if (!ids[dataDefinitions[n].z]) {
					ids[dataDefinitions[n].z] = [];
				}

				ids[dataDefinitions[n].z].push(dataDefinitions[n].id);

				if (!this.seriesData.data.definitions[dataDefinitions[n].id]) {
					var dataDef = lang.clone(dataDefinitions[n]);
					delete dataDef.id;
					delete dataDef.unit;

					this.seriesData.data.definitions[dataDefinitions[n].id] = dataDef;
			}
			}

			return ids;
		},

		_showChartIsValid: function() {
@@ -134,16 +87,16 @@ define([
			return !!Object.keys(this._insertedInTimeSeriesData).length;
		},

		_clear: function() {

			this._insertedInTimeSeriesData = {};
		_onTimeSeriesSelectionManagementHidden: function() {

			this.inherited(arguments);
			this._selectionTooBigAlertify && this._selectionTooBigAlertify.dismiss();
		},

		_onTimeSeriesSelectionManagementHidden: function() {
		_clear: function() {

			this._selectionTooBigAlertify && this._selectionTooBigAlertify.dismiss();
			this.inherited(arguments);

			this._insertedInTimeSeriesData = {};
		}
	});
});