@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
41 lines (40 loc) • 1.41 kB
JavaScript
import GroupLayer from '../../../models/layers/grouplayer';
import ThemeLayer from '../../../models/layers/themelayer';
import TreeViewElement from './treeviewelement';
export default class TreeViewGroupElement extends TreeViewElement {
constructor(layer, name) {
super(layer, name);
Object.defineProperty(this, "layer", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.layer = layer;
}
sortedChildren() {
return this.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.stateManager.batchChanges(() => {
this.layerManager.toggleGroupOrTheme(this.layer);
this.toggleLayers(this.layer.children, this.layer.activeState);
});
}
toggleLayers(layers, activeState) {
for (const layer of layers) {
this.layerManager.toggle(layer, activeState);
if (layer instanceof GroupLayer || layer instanceof ThemeLayer) {
this.toggleLayers(layer.children, activeState);
}
}
}
}