Commit 190a643b authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Integra windrose en detalle de actividad

Filtra datos de series temporales para reconocer aquellos representables
mediante windrose, mostrando una gráfica para cada par de parámetros de
dirección y velocidad.

Corrige peticiones descontroladas de windrose, fijando el destinatario
de la respuesta de datos.

Renombra widget de gráficas de líneas para aclarar su cometido.

Elimina envoltorios de diseño no utilizados.

Fix #79.
parent 58765e61
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -6,8 +6,9 @@ define([
	, 'app/details/views/ActivityCitationMapBase'
	, 'src/detail/activity/widget/ActivityFixedObservationSeriesList'
	, 'src/detail/activity/widget/ActivityFixedObservationSeriesMap'
	, 'src/detail/activity/widget/ActivityFixedTimeseriesChart'
	, 'src/detail/activity/widget/ActivityFixedTimeseriesLineCharts'
	, 'src/detail/activity/widget/ActivityFixedTimeseriesMap'
	, 'src/detail/activity/widget/ActivityFixedTimeseriesWindrose'
	, 'app/details/views/ActivityInfrastructureMapBase'
	, 'app/details/views/ActivityLayerMapBase'
	, 'src/util/Credentials'
@@ -33,8 +34,9 @@ define([
	, ActivityCitationMapBase
	, ActivityFixedObservationSeriesList
	, ActivityFixedObservationSeriesMap
	, ActivityFixedTimeseriesChart
	, ActivityFixedTimeseriesLineCharts
	, ActivityFixedTimeseriesMap
	, ActivityFixedTimeseriesWindrose
	, ActivityInfrastructureMapBase
	, ActivityLayerMapBase
	, Credentials
@@ -359,17 +361,16 @@ define([
			};
		},

		_getActivityFixedTimeseriesChartConfig: function(mapKey, config) {
		_getActivityFixedTimeseriesLineChartsConfig: function(config) {

			return {
				width: 6,
				height: 6,
				type: ActivityFixedTimeseriesChart,
				height: 5,
				type: ActivityFixedTimeseriesLineCharts,
				hidden: true,
				props: {
					title: 'charts',
					pathVariableId: this._activityData.id,
					timeseriesDataChannel: this._getWidgetInstance(mapKey).getChannel('TIMESERIES_DATA')
					pathVariableId: this._activityData.id
				}
			};
		},
@@ -385,6 +386,19 @@ define([
					content: node
				}
			};
		},

		_getActivityFixedTimeseriesWindroseConfig: function(config) {

			return {
				width: 3,
				height: 5,
				type: ActivityFixedTimeseriesWindrose,
				props: {
					title: 'windrose',
					pathVariableId: this._activityData.id
				}
			};
		}
	});
});
+83 −6
Original line number Diff line number Diff line
@@ -20,7 +20,9 @@ define([
			this.config = {
				mainActions: {
					GET_USER_GRANTS_FOR_ACTIVITY: 'getUserGrantsForActivity',
					GOT_USER_GRANTS_FOR_ACTIVITY: 'gotUserGrantsForActivity'
					GOT_USER_GRANTS_FOR_ACTIVITY: 'gotUserGrantsForActivity',
					TIMESERIES_LINE_CHARTS_DATA: 'timeseriesLineChartsData',
					TIMESERIES_WINDROSE_DATA: 'timeseriesWindroseData'
				}
			};

@@ -254,12 +256,86 @@ define([

			this._addWidget(mapKey, mapConfig);

			var chartKey = 'activityFixedTimeseriesChart',
				chartConfig = this._getActivityFixedTimeseriesChartConfig(mapKey, layoutConfig);
			var timeseriesDataChannel = this._getWidgetInstance(mapKey).getChannel('TIMESERIES_DATA');

			this._addWidget(chartKey, chartConfig);
			this._subscribe(timeseriesDataChannel, lang.hitch(this, this._onTimeseriesDataPublished, layoutConfig));

			return [mapKey, chartKey];
			return mapKey;
		},

		_onTimeseriesDataPublished: function(layoutConfig, data) {

			this._onTimeseriesLineChartsDataPublished(layoutConfig, data);
			this._onTimeseriesWindroseDataPublished(layoutConfig, data);
		},

		_onTimeseriesLineChartsDataPublished: function(layoutConfig, data) {

			var lineChartsKey = 'activityFixedTimeseriesLineCharts',
				lineChartsConfig = this._getActivityFixedTimeseriesLineChartsConfig(layoutConfig),
				lineChartsDataChannel = this.getChannel('TIMESERIES_LINE_CHARTS_DATA');

			lineChartsConfig.props.timeseriesDataChannel = lineChartsDataChannel;

			this._addWidget(lineChartsKey, lineChartsConfig);

			this._publish(lineChartsDataChannel, data);
		},

		_onTimeseriesWindroseDataPublished: function(layoutConfig, data) {

			var allowedSpeedParameters = [
					61, // velocidad viento media
					66 // velocidad viento máxima
				],
				allowedDirectionParameters = [
					62, // dirección viento media
					67 // dirección viento máxima
				],
				filteredMeasurements = data.measurements.filter(lang.hitch(this, this._filterWindroseMeasurements, {
					allowedSpeedParameters: allowedSpeedParameters,
					allowedDirectionParameters: allowedDirectionParameters
				}));

			for (var i = 0; i < filteredMeasurements.length - 1; i += 2) {
				this._onEachWindroseDataPair({
					index: i ? i - 1 : 0,
					layoutConfig: layoutConfig,
					measurements: [filteredMeasurements[i], filteredMeasurements[i + 1]],
					allowedSpeedParameters: allowedSpeedParameters,
					allowedDirectionParameters: allowedDirectionParameters
				});
			}
		},

		_filterWindroseMeasurements: function(args, measurement) {

			var paramId = measurement.parameter.id;

			return args.allowedSpeedParameters.includes(paramId) || args.allowedDirectionParameters.includes(paramId);
		},

		_onEachWindroseDataPair: function(args) {

			var windroseKey = 'activityFixedTimeseriesWindrose' + args.index,
				windroseConfig = this._getActivityFixedTimeseriesWindroseConfig(args.layoutConfig),
				windroseDataChannel = this.getChannel('TIMESERIES_WINDROSE_DATA') + args.index,
				speedParamTitle = args.measurements[0].parameter.name,
				directionParamTitle = args.measurements[1].parameter.name;

			windroseConfig.props = this._merge([windroseConfig.props, {
				ownChannel: 'windrose' + args.index,
				title: speedParamTitle + ' + ' + directionParamTitle,
				allowedSpeedParameters: args.allowedSpeedParameters,
				allowedDirectionParameters: args.allowedDirectionParameters,
				timeseriesDataChannel: windroseDataChannel
			}]);

			this._addWidget(windroseKey, windroseConfig);

			this._publish(windroseDataChannel, {
				measurements: args.measurements
			});
		},

		_prepareEmbeddedContentsActivityWidgets: function(layoutConfig) {
@@ -275,7 +351,8 @@ define([
				embeddedContentParentNode.innerHTML = embeddedContentValue;

				var key = 'embeddedContent' + i,
					config = this._getActivityEmbeddedContentsConfig(embeddedContentParentNode.firstChild, i, layoutConfig);
					node = embeddedContentParentNode.firstChild,
					config = this._getActivityEmbeddedContentsConfig(node, i, layoutConfig);

				keys.push(key);

+0 −37
Original line number Diff line number Diff line
define([
	'app/details/views/ActivityChart'
	, 'src/redmicConfig'
	, 'dojo/_base/declare'
	, 'dojo/_base/lang'
], function(
	ActivityChart
	, redmicConfig
	, declare
	, lang
) {

	return declare(ActivityChart, {
		//	summary:
		//

		constructor: function(args) {

			this.config = {
				target: redmicConfig.services.timeSeriesTemporalData,
				activityCategory: ['ft']
			};

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

		postCreate: function() {

			this.inherited(arguments);

			this._subscribe(this.timeseriesDataChannel, lang.hitch(this, function(data) {

				this._buildAndLoadChartData(data);
			}));
		}
	});
});
+105 −0
Original line number Diff line number Diff line
define([
	'app/designs/base/_Main'
	, 'app/designs/chart/main/_ProcessDataDefinitionAndGetTimeSeries'
	'app/designs/chart/main/_ProcessDataDefinitionAndGetTimeSeries'
	, 'app/designs/chart/main/ChartsWithLegendAndToolbarsAndSlider'
	, 'app/designs/details/Controller'
	, 'app/designs/details/Layout'
	, 'app/details/views/_ActivityTimeSeriesDataManagement'
	, 'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'src/component/base/_Module'
	, 'src/component/base/_Show'
	, 'src/component/chart/ChartsContainer/_InfoOnMouseOver'
	, 'src/component/chart/ChartsContainer/_TemporalAxisWithGridDrawing'
	, 'src/component/chart/ChartsContainer/_VerticalAxesWithGridDrawing'
	, 'src/component/chart/ChartsContainer/_ZoomByDragging'
	, 'src/redmicConfig'
], function(
	_Main
	, _ProcessDataDefinitionAndGetTimeSeries
	_ProcessDataDefinitionAndGetTimeSeries
	, ChartsWithLegendAndToolbarsAndSlider
	, Controller
	, Layout
	, _ActivityTimeSeriesDataManagement
	, declare
	, lang
	, _Module
	, _Show
	, _InfoOnMouseOver
	, _TemporalAxisWithGridDrawing
	, _VerticalAxesWithGridDrawing
	, _ZoomByDragging
	, redmicConfig
) {

	return declare([Layout, Controller, _Main, _ActivityTimeSeriesDataManagement], {
	return declare([_Module, _Show, _ActivityTimeSeriesDataManagement], {
		//	summary:
		//		Vista detalle de gráficas asociadas a actividad.
		//

		constructor: function(args) {

			this.config = {
				propsWidget: {
					omitTitleBar: true,
					resizable: false
				}
				ownChannel: 'activityFixedTimeseriesLineCharts',
				target: redmicConfig.services.timeSeriesTemporalData
			};

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

		_setMainConfigurations: function() {
		_setOwnCallbacksForEvents: function() {

			this._onEvt('ME_OR_ANCESTOR_HIDDEN', lang.hitch(this, this._onMeOrAncestorHidden));
		},

		_initialize: function() {

			this.widgetConfigs = this._merge([{
				chartDesign: {
					width: 6,
					height: 6,
					type: [ChartsWithLegendAndToolbarsAndSlider, _ProcessDataDefinitionAndGetTimeSeries],
					props: {
						title: 'chart',
			this._charts = new declare([
				ChartsWithLegendAndToolbarsAndSlider, _ProcessDataDefinitionAndGetTimeSeries
			])({
				parentChannel: this.getChannel(),
				target: this.target,
				filterConfig: {
					initQuery: {
@@ -70,23 +70,36 @@ define([
				aggregationToolConfig: {
					defaultIntervalOptions: []
				}
					}
				}
			}, this.widgetConfigs || {}]);
			});
		},

		postCreate: function() {

			this.inherited(arguments);

			this._subscribe(this.timeseriesDataChannel, lang.hitch(this, function(data) {

				this._buildAndLoadChartData(data);
			}));
		},

		getNodeToShow: function() {

			return this._charts.getNodeToShow();
		},

		_buildAndLoadChartData: function(sourceData) {

			this._buildChartData(sourceData);

			this._publish(this._getWidgetInstance('chartDesign').getChannel('SET_PROPS'), {
			this._publish(this._charts.getChannel('SET_PROPS'), {
				chartsData: this._getChartsDefinitionData()
			});
		},

		_clearModules: function() {
		_onMeOrAncestorHidden: function() {

			this._publish(this._getWidgetInstance('chartDesign').getChannel('CLEAR'));
			this._publish(this._charts.getChannel('CLEAR'));
		}
	});
});
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ define([
										icon: 'fa-bar-chart',
										title: this.i18n.charts,
										btnId: 'showCharts',
										href: '#activityFixedTimeseriesChart',
										href: '#activityFixedTimeseriesLineCharts',
										returnItem: true
									}]
								}
Loading