Commit 31c58d9e authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Soporta capas estáticas con carga diferida

Corrige la carga de capa de rejilla al inicio en el visor de
distribución de especies, ya que hasta ahora no se mostraba por no ser
capaz de resolver la definición de la capa en el momento de inicializar
la vista y los módulos.
parent 44b93e29
Loading
Loading
Loading
Loading
+52 −21
Original line number Diff line number Diff line
@@ -302,36 +302,52 @@ define([
			this._addMapLayer(req);
		},

		_addMapLayer: function(obj) {
		_addMapLayer: function(req) {

			var layer = obj.layer;
			var layer = req.layer;

			if (!layer) {
				console.error('Tried to add invalid layer to map "%s"', this.getChannel());
				return;
			}

			var layerId = this._getLayerId(obj) || uuid(),
				innerLayer = this._getInnerLayer(layer, layerId);
			var layerId = this._getLayerId(req) || uuid(),
				innerLayer = this._getInnerLayer(layer, layerId),
				obj = {
					layerId: layerId,
					req: req
				};

			if (!innerLayer) {
				return;
			}

			this._prepareInfoForLayerAddedEvent(layerId, obj);
			this.addLayer(innerLayer, layerId);
			this._manageAddedLayer(innerLayer, layerId, obj);
			if (innerLayer.then) {
				innerLayer.then(lang.hitch(this, function(objArg, innerLayerArg) {

					objArg.innerLayer = innerLayerArg;
					this._addInnerMapLayer(objArg);
				}, obj));

				return;
			}

			obj.innerLayer = innerLayer;
			this._addInnerMapLayer(obj);
		},

		_getInnerLayer: function(layer, layerId) {

			var innerLayer;
			// Si la capa no es un módulo, no se busca capa interna
			if (!layer.isInstanceOf || !layer.isInstanceOf(_Module)) {
				return layer;
			}

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

				if (!innerLayer) {
			// Si la capa es un módulo pero no tiene ni tendrá capa interna
			if (!innerLayer && !deferredLayer) {
				// Si no contiene una capa de tipo Leaflet pero sí tiene ID (D3, por ejemplo)
				if (layerId) {
					this._emitEvt('LAYER_ADD', {
@@ -339,12 +355,27 @@ define([
						mapInstance: this.map
					});
				}

				return;
			}

			// Si la capa es un módulo y tendrá capa interna
			if (deferredLayer) {
				return deferredLayer;
			}

			return innerLayer || layer;
			// Si la capa es un módulo y tiene capa interna
			return innerLayer;
		},

		_addInnerMapLayer: function(obj) {

			var layerId = obj.layerId,
				innerLayer = obj.innerLayer,
				req = obj.req;

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

		_manageAddedLayer: function(layer, layerId, obj) {
+8 −0
Original line number Diff line number Diff line
define([
	'dojo/_base/declare'
	, 'dojo/_base/lang'
	, 'dojo/Deferred'
	, 'src/component/map/_StaticLayersManagement'
	, 'src/component/map/layer/_LayerDimensions'
	, 'src/component/map/layer/_LayerFeatureInfo'
@@ -9,6 +10,7 @@ define([
], function(
	declare
	, lang
	, Deferred
	, _StaticLayersManagement
	, _LayerDimensions
	, _LayerFeatureInfo
@@ -44,6 +46,10 @@ define([

		_setInnerLayer: function() {

			if (!this.deferredLayer) {
				this.deferredLayer = new Deferred();
			}

			if (typeof this.innerLayerDefinition === 'string') {
				var innerLayerDefinition = this._getStaticLayerDefinition(this.innerLayerDefinition);

@@ -67,6 +73,8 @@ define([
		_setInnerLayerInstance: function(layerInstance) {

			this.layer = layerInstance;

			this.deferredLayer.resolve(this.layer);
		},

		_afterLayerAdded: function(data) {
+1 −1
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ define([
					{ layer:"grid100", label:"100x100", value:3 }
				],

				_currentZoomLevel: 7,
				_currentZoomLevel: null,
				grid5000MinZoom: 7,
				grid1000MinZoom: 10,
				grid500MinZoom: 11,