mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 19:42:36 +02:00
fix: honour rules
and slideshow
when importing a umap file (#2270)
Side note (for another PR I'd say): this usually occurs on a non saved map, but in case the map already exist and is in sync mode, should we sync each property (safer but one call per property) or the whole properties object (lighter, but may override unwanted things in remote, and currently there is no method to do so).
This commit is contained in:
commit
2c64745c52
3 changed files with 23 additions and 14 deletions
|
@ -196,10 +196,10 @@ export default class Rules {
|
|||
constructor(umap) {
|
||||
this._umap = umap
|
||||
this.rules = []
|
||||
this.loadRules()
|
||||
this.load()
|
||||
}
|
||||
|
||||
loadRules() {
|
||||
load() {
|
||||
if (!this._umap.properties.rules?.length) return
|
||||
for (const { condition, options } of this._umap.properties.rules) {
|
||||
if (!condition) continue
|
||||
|
|
|
@ -18,7 +18,7 @@ export default class Slideshow extends WithTemplate {
|
|||
this._umap = umap
|
||||
this._id = null
|
||||
this.CLASSNAME = 'umap-slideshow-active'
|
||||
this.setProperties(properties)
|
||||
this.load()
|
||||
this._current = null
|
||||
|
||||
if (this.properties.autoplay) {
|
||||
|
@ -54,7 +54,11 @@ export default class Slideshow extends WithTemplate {
|
|||
return this.current.getNext()
|
||||
}
|
||||
|
||||
setProperties(properties) {
|
||||
load() {
|
||||
this.setProperties(this._umap.properties.slideshow)
|
||||
}
|
||||
|
||||
setProperties(properties = {}) {
|
||||
this.properties = Object.assign(
|
||||
{
|
||||
delay: 5000,
|
||||
|
|
|
@ -94,7 +94,7 @@ export default class Umap extends ServerStored {
|
|||
// Needed to render controls
|
||||
this.permissions = new MapPermissions(this)
|
||||
this.urls = new URLs(this.properties.urls)
|
||||
this.slideshow = new Slideshow(this, this._leafletMap, this.properties.slideshow)
|
||||
this.slideshow = new Slideshow(this, this._leafletMap)
|
||||
|
||||
this._leafletMap.setup()
|
||||
|
||||
|
@ -671,6 +671,17 @@ export default class Umap extends ServerStored {
|
|||
this.permissions.properties = Object.assign({}, this._backupProperties.permissions)
|
||||
}
|
||||
|
||||
setProperties(newProperties) {
|
||||
for (const key of Object.keys(SCHEMA)) {
|
||||
if (newProperties[key] !== undefined) {
|
||||
this.properties[key] = newProperties[key]
|
||||
if (key === 'rules') this.rules.load()
|
||||
if (key === 'slideshow') this.slideshow.load()
|
||||
// TODO: sync ?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hasData() {
|
||||
for (const datalayer of this.datalayersIndex) {
|
||||
if (datalayer.hasData()) return true
|
||||
|
@ -993,7 +1004,7 @@ export default class Umap extends ServerStored {
|
|||
],
|
||||
]
|
||||
const slideshowBuilder = new U.FormBuilder(this, slideshowFields, {
|
||||
callback: () => this.slideshow.setProperties(this.properties.slideshow),
|
||||
callback: () => this.slideshow.load(),
|
||||
umap: this,
|
||||
})
|
||||
slideshow.appendChild(slideshowBuilder.build())
|
||||
|
@ -1483,15 +1494,9 @@ export default class Umap extends ServerStored {
|
|||
|
||||
importRaw(rawData) {
|
||||
const importedData = JSON.parse(rawData)
|
||||
const mustReindex = 'sortKey' in Object.keys(importedData.properties)
|
||||
|
||||
let mustReindex = false
|
||||
|
||||
for (const option of Object.keys(SCHEMA)) {
|
||||
if (typeof importedData.properties[option] !== 'undefined') {
|
||||
this.properties[option] = importedData.properties[option]
|
||||
if (option === 'sortKey') mustReindex = true
|
||||
}
|
||||
}
|
||||
this.setProperties(importedData.properties)
|
||||
|
||||
if (importedData.geometry) {
|
||||
this.properties.center = this._leafletMap.latLng(importedData.geometry)
|
||||
|
|
Loading…
Reference in a new issue