grafana/public/app/plugins/panel/geomap/layers/registry.ts
Adela Almasan 118b87ee8f
Geomap: Display legend (#46886)
* Display legend for fixed colors and field; Hide tooltip on base layer;
2022-03-30 09:41:13 -05:00

43 lines
1.4 KiB
TypeScript

import { MapLayerRegistryItem, Registry, MapLayerOptions, GrafanaTheme2 } from '@grafana/data';
import Map from 'ol/Map';
import { carto } from './basemaps/carto';
import { config } from 'app/core/config';
import { basemapLayers } from './basemaps';
import { dataLayers } from './data';
export const DEFAULT_BASEMAP_CONFIG: MapLayerOptions = {
type: 'default',
name: '', // will get filled in with a non-empty name
config: {},
};
// Default base layer depending on the server setting
export const defaultBaseLayer: MapLayerRegistryItem = {
id: DEFAULT_BASEMAP_CONFIG.type,
name: 'Default base layer',
isBaseMap: true,
create: (map: Map, options: MapLayerOptions, theme: GrafanaTheme2) => {
const serverLayerType = config?.geomapDefaultBaseLayerConfig?.type;
if (serverLayerType) {
const layer = geomapLayerRegistry.getIfExists(serverLayerType);
if (!layer) {
throw new Error('Invalid basemap configuration on server');
}
return layer.create(map, config.geomapDefaultBaseLayerConfig!, theme);
}
// For now use carto as our default basemap
return carto.create(map, options, theme);
},
};
/**
* Registry for layer handlers
*/
export const geomapLayerRegistry = new Registry<MapLayerRegistryItem<any>>(() => [
defaultBaseLayer,
...basemapLayers, // simple basemaps
...dataLayers, // Layers with update functions
]);