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)}`
|
||||
}
|
||||
|
||||
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() {
|
||||
return {
|
||||
subject: 'datalayer',
|
||||
|
@ -1132,7 +1146,7 @@ export class DataLayer {
|
|||
const formData = new FormData()
|
||||
formData.append('name', this.options.name)
|
||||
formData.append('display_on_load', !!this.options.displayOnLoad)
|
||||
formData.append('rank', this.options.rank)
|
||||
formData.append('rank', this.rank)
|
||||
formData.append('settings', this.prepareOptions())
|
||||
// Filename support is shaky, don't do it for now.
|
||||
const blob = new Blob([JSON.stringify(geojson)], { type: 'application/json' })
|
||||
|
|
|
@ -5,7 +5,7 @@ export class DataLayerManager extends Object {
|
|||
active() {
|
||||
return Object.values(this)
|
||||
.filter((datalayer) => !datalayer.isDeleted)
|
||||
.sort((a, b) => a.options.rank > b.options.rank)
|
||||
.sort((a, b) => a.rank > b.rank)
|
||||
}
|
||||
reverse() {
|
||||
return this.active().reverse()
|
||||
|
|
|
@ -657,9 +657,7 @@ export default class Umap {
|
|||
const parent = this._leafletMap.getPane('overlayPane')
|
||||
const datalayers = Object.values(this.datalayers)
|
||||
.filter((datalayer) => !datalayer._isDeleted)
|
||||
.sort(
|
||||
(datalayer1, datalayer2) => datalayer1.options.rank > datalayer2.options.rank
|
||||
)
|
||||
.sort((datalayer1, datalayer2) => datalayer1.rank > datalayer2.rank)
|
||||
for (const datalayer of datalayers) {
|
||||
const child = parent.querySelector(`[data-id="${datalayer.id}"]`)
|
||||
parent.appendChild(child)
|
||||
|
@ -1503,8 +1501,8 @@ export default class Umap {
|
|||
this.datalayers.reverse().map((datalayer) => {
|
||||
const rank = datalayer.getDOMOrder()
|
||||
if (rank >= minIndex && rank <= maxIndex) {
|
||||
const oldRank = datalayer.options.rank
|
||||
datalayer.options.rank = rank
|
||||
const oldRank = datalayer.rank
|
||||
datalayer.rank = rank
|
||||
datalayer.sync.update('options.rank', rank, oldRank)
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue