@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
36 lines (35 loc) • 1.29 kB
JavaScript
import GroupLayer from '../../../models/layers/grouplayer.js';
import ThemeLayer from '../../../models/layers/themelayer.js';
import TreeViewElement from './treeviewelement.js';
export default class TreeViewGroupElement extends TreeViewElement {
layer;
constructor(layer, name) {
super(layer, name);
this.layer = layer;
}
sortedChildren() {
return this.context.layerManager.getSortedLayers(this.layer.children);
}
deactivateThemeOrGroup(layer) {
layer.activeState = 'off';
if (layer instanceof ThemeLayer || layer instanceof GroupLayer) {
for (const child of layer.children) {
this.deactivateThemeOrGroup(child);
}
}
}
toggle() {
this.context.stateManager.batchChanges(() => {
this.context.layerManager.toggleGroupOrTheme(this.layer);
this.toggleLayers(this.layer.children, this.layer.activeState);
});
}
toggleLayers(layers, activeState) {
for (const layer of layers) {
this.context.layerManager.toggle(layer, activeState);
if (layer instanceof GroupLayer || layer instanceof ThemeLayer) {
this.toggleLayers(layer.children, activeState);
}
}
}
}