diff --git a/umap/static/umap/js/modules/data/layer.js b/umap/static/umap/js/modules/data/layer.js index 0529f627..6a686833 100644 --- a/umap/static/umap/js/modules/data/layer.js +++ b/umap/static/umap/js/modules/data/layer.js @@ -88,7 +88,6 @@ export class DataLayer extends ServerStored { if (!this.createdOnServer) { if (this.showAtLoad()) this.show() - this.isDirty = true } // Only layers that are displayed on load must be hidden/shown @@ -591,7 +590,7 @@ export class DataLayer extends ServerStored { options.name = translate('Clone of {name}', { name: this.options.name }) delete options.id const geojson = Utils.CopyJSON(this._geojson) - const datalayer = this._umap.createDataLayer(options) + const datalayer = this._umap.createDirtyDataLayer(options) datalayer.fromGeoJSON(geojson) return datalayer } diff --git a/umap/static/umap/js/modules/importer.js b/umap/static/umap/js/modules/importer.js index 02ebd340..1da6d566 100644 --- a/umap/static/umap/js/modules/importer.js +++ b/umap/static/umap/js/modules/importer.js @@ -161,7 +161,7 @@ export default class Importer extends Utils.WithTemplate { get layer() { return ( this._umap.datalayers[this.layerId] || - this._umap.createDataLayer({ name: this.layerName }) + this._umap.createDirtyDataLayer({ name: this.layerName }) ) } diff --git a/umap/static/umap/js/modules/umap.js b/umap/static/umap/js/modules/umap.js index 258b45db..b0bb3137 100644 --- a/umap/static/umap/js/modules/umap.js +++ b/umap/static/umap/js/modules/umap.js @@ -323,14 +323,14 @@ export default class Umap extends ServerStored { dataUrl = decodeURIComponent(dataUrl) dataUrl = this.renderUrl(dataUrl) dataUrl = this.proxyUrl(dataUrl) - const datalayer = this.createDataLayer() + const datalayer = this.createDirtyDataLayer() await datalayer .importFromUrl(dataUrl, dataFormat) .then(() => datalayer.zoomTo()) } } else if (data) { data = decodeURIComponent(data) - const datalayer = this.createDataLayer() + const datalayer = this.createDirtyDataLayer() await datalayer.importRaw(data, dataFormat).then(() => datalayer.zoomTo()) } } @@ -598,8 +598,14 @@ export default class Umap extends ServerStored { return datalayer } + createDirtyDataLayer(options) { + const datalayer = this.createDataLayer(options, true) + datalayer.isDirty = true + return datalayer + } + newDataLayer() { - const datalayer = this.createDataLayer({}) + const datalayer = this.createDirtyDataLayer({}) datalayer.edit() } @@ -1383,7 +1389,7 @@ export default class Umap extends ServerStored { fallback.show() return fallback } - return this.createDataLayer() + return this.createDirtyDataLayer() } findDataLayer(method, context) { @@ -1547,7 +1553,7 @@ export default class Umap extends ServerStored { if (type === 'umap') { this.importUmapFile(file, 'umap') } else { - if (!layer) layer = this.createDataLayer({ name: file.name }) + if (!layer) layer = this.createDirtyDataLayer({ name: file.name }) layer.importFromFile(file, type) } } @@ -1573,7 +1579,7 @@ export default class Umap extends ServerStored { delete geojson._storage } delete geojson._umap_options?.id // Never trust an id at this stage - const dataLayer = this.createDataLayer(geojson._umap_options) + const dataLayer = this.createDirtyDataLayer(geojson._umap_options) dataLayer.fromUmapGeoJSON(geojson) }