@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
58 lines (57 loc) • 2.38 kB
TypeScript
import GirafeSingleton from '../../base/GirafeSingleton.js';
import BaseLayer from '../../models/layers/baselayer.js';
import GroupLayer from '../../models/layers/grouplayer.js';
import Layer from '../../models/layers/layer.js';
import ThemeLayer from '../../models/layers/themelayer.js';
export type LayerTreeChanges = {
insertedLayers: BaseLayer[];
activatedLayers: BaseLayer[];
};
export default class ThemesHelper extends GirafeSingleton {
initializeSingleton(): void;
private get state();
findBaseLayerById(layerId: number): BaseLayer;
private findBaseLayerRecursiveById;
findThemeByName(themename: string): ThemeLayer | null;
findGroupByName(groupname: string): GroupLayer | null;
findLayerByName(layername: string): Layer | null;
private findBaseLayerByName;
private findLayerRecursive;
private onSelectedThemeChanged;
private onThemeChanged;
getMinimalClonedThemeForLayer(layer: BaseLayer): ThemeLayer;
private removeOthers;
private getHierarchyFromLayer;
addThemesFromUrl(): boolean;
addGroupsFromUrl(): boolean;
addLayersFromUrl(): boolean;
addLayerFromName(layername: string): boolean;
private addLayerBaseFromName;
private extractLayerOptions;
private extractLayerOptionOpacity;
private extractLayerOptionFilter;
private extractLayerOptionTime;
/**
* Calculates the initial order (=position) for a new theme in the tree.
* Themes are added at the top of the tree, but underneath any pinned themes. Defaults to 0.
* This prevents themes of visibly "jumping" around in the tree after being added due to reordering.
*/
getInitialOrderForNewTheme(): number;
mergeThemeInLayerTree(theme: ThemeLayer, activate?: boolean, forceTop?: boolean): LayerTreeChanges;
/**
* This function merges the newLayer at its right place in the LayerTree
* @param newLayer The layer to insert somewhere in the hierarchy
* @param existingList
* @param parent
* @returns
*/
private mergeLayerWithExistingLayerTree;
private highlightLayerInLayerTree;
private addLayerToLayerTree;
removeLayersFromLayerTree(layersToRemove: BaseLayer[]): void;
private removeLayersFromExistingLayerTree;
/**
* Removes all layers from the layer tree except themes that are pinned.
*/
emptyLayerTree(): void;
}