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 { basemapLayers } from './basemaps'; |
||||||
import { dataLayers } from './data'; |
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 |
* Registry for layer handlers |
||||||
*/ |
*/ |
||||||
export const geomapLayerRegistry = new Registry<MapLayerRegistryItem<any>>(() => [ |
export const geomapLayerRegistry = new Registry<MapLayerRegistryItem<any>>(() => [ |
||||||
|
defaultBaseLayer, |
||||||
...basemapLayers, // simple basemaps
|
...basemapLayers, // simple basemaps
|
||||||
...dataLayers, // Layers with update functions
|
...dataLayers, // Layers with update functions
|
||||||
]); |
]); |
||||||
|
|||||||
Loading…
Reference in new issue