mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 11:32:38 +02:00
fix: make sure DataLayer rank is always set (#2682)
This commit is contained in:
commit
39e4e2a33c
3 changed files with 19 additions and 7 deletions
|
@ -125,6 +125,20 @@ export class DataLayer {
|
||||||
return `datalayer-${stamp(this)}`
|
return `datalayer-${stamp(this)}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get rank() {
|
||||||
|
// Make sure we always have a valid rank. Undefined rank may happen
|
||||||
|
// after importing an old umap backup, and not touching the layers
|
||||||
|
// after that.
|
||||||
|
if (this.options.rank === undefined) {
|
||||||
|
this.options.rank = this.getDOMOrder()
|
||||||
|
}
|
||||||
|
return this.options.rank
|
||||||
|
}
|
||||||
|
|
||||||
|
set rank(value) {
|
||||||
|
this.options.rank = value
|
||||||
|
}
|
||||||
|
|
||||||
getSyncMetadata() {
|
getSyncMetadata() {
|
||||||
return {
|
return {
|
||||||
subject: 'datalayer',
|
subject: 'datalayer',
|
||||||
|
@ -1132,7 +1146,7 @@ export class DataLayer {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('name', this.options.name)
|
formData.append('name', this.options.name)
|
||||||
formData.append('display_on_load', !!this.options.displayOnLoad)
|
formData.append('display_on_load', !!this.options.displayOnLoad)
|
||||||
formData.append('rank', this.options.rank)
|
formData.append('rank', this.rank)
|
||||||
formData.append('settings', this.prepareOptions())
|
formData.append('settings', this.prepareOptions())
|
||||||
// Filename support is shaky, don't do it for now.
|
// Filename support is shaky, don't do it for now.
|
||||||
const blob = new Blob([JSON.stringify(geojson)], { type: 'application/json' })
|
const blob = new Blob([JSON.stringify(geojson)], { type: 'application/json' })
|
||||||
|
|
|
@ -5,7 +5,7 @@ export class DataLayerManager extends Object {
|
||||||
active() {
|
active() {
|
||||||
return Object.values(this)
|
return Object.values(this)
|
||||||
.filter((datalayer) => !datalayer.isDeleted)
|
.filter((datalayer) => !datalayer.isDeleted)
|
||||||
.sort((a, b) => a.options.rank > b.options.rank)
|
.sort((a, b) => a.rank > b.rank)
|
||||||
}
|
}
|
||||||
reverse() {
|
reverse() {
|
||||||
return this.active().reverse()
|
return this.active().reverse()
|
||||||
|
|
|
@ -657,9 +657,7 @@ export default class Umap {
|
||||||
const parent = this._leafletMap.getPane('overlayPane')
|
const parent = this._leafletMap.getPane('overlayPane')
|
||||||
const datalayers = Object.values(this.datalayers)
|
const datalayers = Object.values(this.datalayers)
|
||||||
.filter((datalayer) => !datalayer._isDeleted)
|
.filter((datalayer) => !datalayer._isDeleted)
|
||||||
.sort(
|
.sort((datalayer1, datalayer2) => datalayer1.rank > datalayer2.rank)
|
||||||
(datalayer1, datalayer2) => datalayer1.options.rank > datalayer2.options.rank
|
|
||||||
)
|
|
||||||
for (const datalayer of datalayers) {
|
for (const datalayer of datalayers) {
|
||||||
const child = parent.querySelector(`[data-id="${datalayer.id}"]`)
|
const child = parent.querySelector(`[data-id="${datalayer.id}"]`)
|
||||||
parent.appendChild(child)
|
parent.appendChild(child)
|
||||||
|
@ -1503,8 +1501,8 @@ export default class Umap {
|
||||||
this.datalayers.reverse().map((datalayer) => {
|
this.datalayers.reverse().map((datalayer) => {
|
||||||
const rank = datalayer.getDOMOrder()
|
const rank = datalayer.getDOMOrder()
|
||||||
if (rank >= minIndex && rank <= maxIndex) {
|
if (rank >= minIndex && rank <= maxIndex) {
|
||||||
const oldRank = datalayer.options.rank
|
const oldRank = datalayer.rank
|
||||||
datalayer.options.rank = rank
|
datalayer.rank = rank
|
||||||
datalayer.sync.update('options.rank', rank, oldRank)
|
datalayer.sync.update('options.rank', rank, oldRank)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue