mirror of https://github.com/grafana/grafana
Geomap: default basemap config cleanup (#37069)
parent
f26f76df5a
commit
e604e69d93
@ -1,30 +0,0 @@ |
||||
import { MapLayerRegistryItem, MapLayerOptions, GrafanaTheme2 } from '@grafana/data'; |
||||
import Map from 'ol/Map'; |
||||
import { carto } from './carto'; |
||||
import { esriXYZTiles } from './esri'; |
||||
import { xyzTiles } from './generic'; |
||||
import { standard } from './osm'; |
||||
import { config } from 'app/core/config'; |
||||
|
||||
// Array of base map options to search through
|
||||
const baseLayers = [carto, esriXYZTiles, xyzTiles, standard]; |
||||
|
||||
// Default base layer depending on the server setting
|
||||
export const defaultBaseLayer: MapLayerRegistryItem = { |
||||
id: 'default', |
||||
name: 'Default base layer', |
||||
isBaseMap: true, |
||||
|
||||
create: (map: Map, options: MapLayerOptions, theme: GrafanaTheme2) => { |
||||
// Use Carto as the default base layer if not set from server
|
||||
let layer: any = carto; |
||||
if (config.geomapDefaultBaseLayer && config.geomapDefaultBaseLayer.type) { |
||||
options = config.geomapDefaultBaseLayer; // options from server
|
||||
layer = baseLayers.find((baseLayer) => baseLayer.id === options.type); |
||||
if (!layer) { |
||||
throw new Error('Invalid default base map type'); |
||||
} |
||||
} |
||||
return layer.create(map, options, theme); |
||||
}, |
||||
}; |
||||
@ -1,12 +1,41 @@ |
||||
import { MapLayerRegistryItem, Registry } from '@grafana/data'; |
||||
|
||||
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', |
||||
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 configuraiton 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
|
||||
]); |
||||
|
||||
Loading…
Reference in new issue