commit 5f99bfa5a8f357ae0e2e144391d0dadac92142a2
parent 01e682802d1ad4733f65c6a3ebc740290e262089
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Wed, 8 Mar 2017 22:57:19 +0300
[custom layers] fixed enabling custom layers when serialized layer string not identical to new one
Diffstat:
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/src/lib/leaflet.control.layers.configure/index.js b/src/lib/leaflet.control.layers.configure/index.js
@@ -214,8 +214,11 @@ function enableConfig(control, layers) {
unserializeState: function(values) {
if (values) {
- values.forEach((code) => this.loadCustomLayerFromString(code));
- for (let layer of this._allLayers) {
+ values = values.map((code) => {
+ let newCode = this.loadCustomLayerFromString(code);
+ return newCode || code;
+ });
+ for (let layer of [...this._allLayers, ...this._customLayers()]) {
if (layer.layer.options && values.includes(layer.layer.options.code)) {
layer.enabled = true;
}
@@ -323,7 +326,7 @@ ${buttonsHtml}`;
.replace(/\//g, '_');
}
- return encodeUrlSafeBase64(s);
+ return '-cs' + encodeUrlSafeBase64(s);
},
customLayerExists: function(fieldValues, ignoreLayer) {
@@ -380,7 +383,7 @@ ${buttonsHtml}`;
scaleDependent: fieldValues.scaleDependent,
print: true,
jnx: true,
- code: '-cs' + serialized,
+ code: serialized,
noCors: true
}
);
@@ -459,18 +462,23 @@ ${buttonsHtml}`;
},
loadCustomLayerFromString: function(s) {
- var m, fieldValues;
- m = s.match(/^-cs(.+)$/);
+ let fieldValues;
+ const m = s.match(/^-cs(.+)$/);
if (m) {
s = m[1].replace(/-/g, '+').replace(/_/g, '/');
try {
s = atob(s);
fieldValues = JSON.parse(s);
+ } catch (e) {
+ }
+
+ if (fieldValues) {
if (!this.customLayerExists(fieldValues)) {
this._customLayers.push(this.createCustomLayer(fieldValues));
}
- } catch (e) {
+ return this.serializeCustomLayer(fieldValues);
}
+
}
}