Commit 5cec19da authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Permite a capas de mapa contar con item de atlas

Para poder obtener la leyenda de las capas procedentes de servicios OGC,
se propaga el item recibido del servicio de atlas hasta el módulo de
capa de mapa.

Refactoriza código de adición de capa de módulo mapa.
parent 50cb43af
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -617,6 +617,7 @@ define([
				layer: layer,
				layerId: layerId,
				layerLabel: item.label,
				atlasItem: item.originalItem,
				order: order
			});
		},
+20 −5
Original line number Diff line number Diff line
@@ -39,7 +39,8 @@ define([
				queryableClass: "leaflet-queryable",
				omitContainerSizeCheck: false,

				_mapNodeValidSizeInterval: 100
				_mapNodeValidSizeInterval: 100,
				_infoForAddedLayers: {}
			};

			lang.mixin(this, this.config, args);
@@ -83,14 +84,21 @@ define([

		_onLayerAdd: function(evt) {

			var layer = evt.layer;
			var layer = evt.layer,
				layerId = layer._leaflet_id;

			this._emitEvt('LAYER_ADD', {
			var layerAddReq = {
				layer: layer,
				mapInstance: this.map
			});
			};

			if (this._infoForAddedLayers[layerId]) {
				layerAddReq.extraInfo = this._infoForAddedLayers[layerId];
				delete this._infoForAddedLayers[layerId];
			}

			this._emitEvt('LAYER_ADD', layerAddReq);

			var layerId = layer._leaflet_id;
			if (this._isBaseLayer(layerId)) {
				this._emitEvt('BASE_LAYER_CHANGE', {
					success: true,
@@ -328,6 +336,13 @@ define([
			}
		},

		_prepareInfoForLayerAddedEvent: function(layerId, data) {

			if (data.atlasItem) {
				this._infoForAddedLayers[layerId] = data.atlasItem;
			}
		},

		_onLayerAddedToPane: function(evt) {

			var node = evt.node,
+33 −15
Original line number Diff line number Diff line
@@ -302,29 +302,47 @@ define([
				return;
			}

			var optional = obj.optional,
				order = obj.order,
				layerId = this._getLayerId(obj) || uuid.v4(),
				layerLabel = obj.layerLabel || layerId;
			var layerId = this._getLayerId(obj) || uuid.v4(),
				innerLayer = this._getInnerLayer(layer, layerId);

			if (!innerLayer) {
				return;
			}

			this._prepareInfoForLayerAddedEvent(layerId, obj);
			this.addLayer(innerLayer, layerId);
			this._manageAddedLayer(innerLayer, layerId, obj);
		},

		_getInnerLayer: function(layer, layerId) {

			var innerLayer;

			// Si la capa es un módulo
			if (layer.isInstanceOf && layer.isInstanceOf(_Module)) {
				layer = layer.layer;
				innerLayer = layer.layer;

				// Si no contiene una capa de tipo leaflet (D3, por ejemplo)
				if (layerId && !layer) {
				if (!innerLayer) {
					// Si no contiene una capa de tipo Leaflet pero sí tiene ID (D3, por ejemplo)
					if (layerId) {
						this._emitEvt('LAYER_ADD', {
						layer: obj.layer,
							layer: layer,
							mapInstance: this.map
						});
					}

				if (!layer) {
					return;
				}
			}

			this.addLayer(layer, layerId);
			return innerLayer || layer;
		},

		_manageAddedLayer: function(layer, layerId, obj) {

			var optional = obj.optional,
				order = obj.order,
				layerLabel = obj.layerLabel || layerId;

			if (optional) {
				this._addLayerToSelector(layer, layerLabel, true);
+1 −2
Original line number Diff line number Diff line
@@ -247,10 +247,9 @@ define([
			return {
				parentChannel: this.getChannel(),
				layerDefinition: layerDefinition,
				styleLayer: layerItem.styleLayer,
				queryable: layerItem.queryable,
				layerId: layerId,
				layerLabel: layerLabel,
				queryable: layerItem.queryable,
				refresh: layerItem.refresh
			};
		},
+2 −1
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@ define([
				"_getMapInstance": {},
				"addButton": {},
				"_addQueryableCursor": {},
				"_removeQueryableCursor": {}
				"_removeQueryableCursor": {},
				"_prepareInfoForLayerAddedEvent": {}
			});
		}
	});
Loading