mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 19:42:36 +02:00
fix: update datalayers switcher when datalayer visibility changes
Co-authored-by: David Larlet <david@larlet.fr>
This commit is contained in:
parent
953b37a181
commit
79d60d0995
2 changed files with 17 additions and 3 deletions
|
@ -966,12 +966,18 @@ export class DataLayer extends ServerStored {
|
||||||
this.propagateHide()
|
this.propagateHide()
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle(status) {
|
toggle(force) {
|
||||||
// From now on, do not try to how/hidedataChanged
|
// From now on, do not try to how/hidedataChanged
|
||||||
// automatically this layer.
|
// automatically this layer.
|
||||||
|
let display = force
|
||||||
this._forcedVisibility = true
|
this._forcedVisibility = true
|
||||||
if (!this.isVisible() || status) this.show()
|
if (force === undefined) {
|
||||||
|
if (!this.isVisible()) display = true
|
||||||
|
else display = false
|
||||||
|
}
|
||||||
|
if (display) this.show()
|
||||||
else this.hide()
|
else this.hide()
|
||||||
|
this._umap.bottomBar.redraw()
|
||||||
}
|
}
|
||||||
|
|
||||||
zoomTo() {
|
zoomTo() {
|
||||||
|
|
|
@ -193,6 +193,7 @@ export class BottomBar extends WithTemplate {
|
||||||
this.elements.layers.addEventListener('change', () => {
|
this.elements.layers.addEventListener('change', () => {
|
||||||
const select = this.elements.layers
|
const select = this.elements.layers
|
||||||
const selected = select.options[select.selectedIndex].value
|
const selected = select.options[select.selectedIndex].value
|
||||||
|
if (!selected) return
|
||||||
this._umap.eachDataLayer((datalayer) => {
|
this._umap.eachDataLayer((datalayer) => {
|
||||||
datalayer.toggle(datalayer.id === selected)
|
datalayer.toggle(datalayer.id === selected)
|
||||||
})
|
})
|
||||||
|
@ -209,16 +210,23 @@ export class BottomBar extends WithTemplate {
|
||||||
this.elements.caption.hidden = !showMenus
|
this.elements.caption.hidden = !showMenus
|
||||||
this.elements.browse.hidden = !showMenus
|
this.elements.browse.hidden = !showMenus
|
||||||
this.elements.filter.hidden = !showMenus || !this._umap.properties.facetKey
|
this.elements.filter.hidden = !showMenus || !this._umap.properties.facetKey
|
||||||
|
this.buildDataLayerSwitcher()
|
||||||
|
}
|
||||||
|
|
||||||
|
buildDataLayerSwitcher() {
|
||||||
this.elements.layers.innerHTML = ''
|
this.elements.layers.innerHTML = ''
|
||||||
const datalayers = this._umap.datalayersIndex.filter((d) => d.options.inCaption)
|
const datalayers = this._umap.datalayersIndex.filter((d) => d.options.inCaption)
|
||||||
if (datalayers.length < 2) {
|
if (datalayers.length < 2) {
|
||||||
this.elements.layers.hidden = true
|
this.elements.layers.hidden = true
|
||||||
} else {
|
} else {
|
||||||
|
this.elements.layers.appendChild(Utils.loadTemplate(`<option value=""></option>`))
|
||||||
this.elements.layers.hidden = false
|
this.elements.layers.hidden = false
|
||||||
|
const visible = datalayers.filter((datalayer) => datalayer.isVisible())
|
||||||
for (const datalayer of datalayers) {
|
for (const datalayer of datalayers) {
|
||||||
|
const selected = visible.length === 1 && datalayer.isVisible() ? 'selected' : ''
|
||||||
this.elements.layers.appendChild(
|
this.elements.layers.appendChild(
|
||||||
Utils.loadTemplate(
|
Utils.loadTemplate(
|
||||||
`<option value="${datalayer.id}">${datalayer.getName()}</option>`
|
`<option value="${datalayer.id}" ${selected}>${datalayer.getName()}</option>`
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue