Commit ba719487 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Corrige gestión de diferidos en carga de capas

parent 81cb33c7
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -751,7 +751,8 @@ define([
			if (!this._baseLayerKeys.length) {
				var baseLayersKeys = this._getBaseLayers();

				if (baseLayersKeys && baseLayersKeys.then) {
				if (baseLayersKeys && baseLayersKeys.then && !this._alreadyWaitingForBaseLayers) {
					this._alreadyWaitingForBaseLayers = true;
					baseLayersKeys.then(lang.hitch(this, this._loadBaseLayers));
					return;
				} else {
@@ -771,7 +772,8 @@ define([
			if (!this._optionalLayerKeys.length) {
				var optionalLayersKeys = this._getOptionalLayers();

				if (optionalLayersKeys && optionalLayersKeys.then) {
				if (optionalLayersKeys && optionalLayersKeys.then && !this._alreadyWaitingForOptionalLayers) {
					this._alreadyWaitingForOptionalLayers = true;
					optionalLayersKeys.then(lang.hitch(this, this._loadOptionalLayers));
					return;
				} else {
+54 −20
Original line number Diff line number Diff line
@@ -60,13 +60,15 @@ define([
				return this._staticLayersDefinition;	// return Object
			}

			if (!this._staticLayersDefinitionDfd || this._staticLayersDefinitionDfd.isFulfilled()) {
			if (!this._staticLayersDefinitionDfd) {
				this._staticLayersDefinitionDfd = new Deferred();
			}

			if (!this._staticLayersDefinitionDfd.isFulfilled()) {
				this._emitEvt('GET_EXTERNAL_CONFIG', {
					propertyName: this.mapLayersPropertyName
				});
			}

			return this._staticLayersDefinitionDfd;	// return Deferred
		},
@@ -165,17 +167,30 @@ define([

			var staticLayersDefinition = this._getStaticLayersDefinition();

			if (staticLayersDefinition && staticLayersDefinition.then) {
				var dfd = new Deferred();
			if (!staticLayersDefinition) {
				return;	// return undefined
			}

				staticLayersDefinition.then(lang.hitch(this, function(layersDefinitionDfd) {
			if (staticLayersDefinition.then) {
				if (this._baseLayersDfd) {
					return this._baseLayersDfd;	// return Deferred
				}

					layersDefinitionDfd.resolve(this._getBaseLayers());
				}, dfd));
				this._baseLayersDfd = new Deferred();

				return dfd;	// return Deferred
				staticLayersDefinition.then(lang.hitch(this, function() {

					this._baseLayersDfd.resolve(this._getBaseLayers());
				}));

				return this._baseLayersDfd;	// return Deferred
			}

			return this._getBaseLayersArray(staticLayersDefinition);	// return Array
		},

		_getBaseLayersArray: function(/*Object*/ staticLayersDefinition) {

			var layersArray = Object.entries(staticLayersDefinition);

			var baseLayersArray = layersArray.filter(function(layerArray) {
@@ -183,7 +198,7 @@ define([
				return layerArray[1].basemap;
			});

			return baseLayersArray.sort(function(layerArrayA, layerArrayB) {
			var layerOrdering = function(layerArrayA, layerArrayB) {

				var layerA = layerArrayA[1],
					layerB = layerArrayB[1],
@@ -201,7 +216,11 @@ define([
				if (!orderB || orderA < orderB) {
					return -1;
				}
			}).map(function(item) { return item[0]; });	// return Array
			};

			var orderedBaseLayersArray = baseLayersArray.sort(layerOrdering);

			return orderedBaseLayersArray.map(function(item) { return item[0]; });	// return Array
		},

		_getOptionalLayers: function() {
@@ -212,23 +231,38 @@ define([

			var staticLayersDefinition = this._getStaticLayersDefinition();

			if (staticLayersDefinition && staticLayersDefinition.then) {
				var dfd = new Deferred();
			if (!staticLayersDefinition) {
				return;	// return undefined
			}

				staticLayersDefinition.then(lang.hitch(this, function(layersDefinitionDfd) {
			if (staticLayersDefinition.then) {
				if (this._optionalLayersDfd) {
					return this._optionalLayersDfd;	// return Deferred
				}

					layersDefinitionDfd.resolve(this._getOptionalLayers());
				}, dfd));
				this._optionalLayersDfd = new Deferred();

				return dfd;	// return Deferred
				staticLayersDefinition.then(lang.hitch(this, function() {

					this._optionalLayersDfd.resolve(this._getOptionalLayers());
				}));

				return this._optionalLayersDfd;	// return Deferred
			}

			return this._getOptionalLayersArray(staticLayersDefinition);	// return Array
		},

		_getOptionalLayersArray: function(/*Object*/ staticLayersDefinition) {

			var layersArray = Object.entries(staticLayersDefinition);

			return layersArray.filter(function(layerArray) {
			var optionalLayersArray = layersArray.filter(function(layerArray) {

				return layerArray[1].optional;
			}).map(function(item) { return item[0]; });	// return Array
			});

			return optionalLayersArray.map(function(item) { return item[0]; });	// return Array
		}
	});
});