Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove injected vars from maps legacy #69744

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,9 @@ import {
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
} from '../../../../../../plugins/vis_type_vega/public/services';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { setInjectedVarFunc } from '../../../../../../plugins/maps_legacy/public/kibana_services';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { ServiceSettings } from '../../../../../../plugins/maps_legacy/public/map/service_settings';
import { getKibanaMapFactoryProvider } from '../../../../../../plugins/maps_legacy/public';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { KibanaMap } from '../../../../../../plugins/maps_legacy/public/map/kibana_map';

const THRESHOLD = 0.1;
const PIXEL_DIFF = 30;
Expand All @@ -82,18 +81,7 @@ describe('VegaVisualizations', () => {
let vegaVisualizationDependencies;
let vegaVisType;

const coreSetupMock = {
notifications: {
toasts: {},
},
uiSettings: {
get: () => {},
},
injectedMetadata: {
getInjectedVar: () => {},
},
};
setKibanaMapFactory(getKibanaMapFactoryProvider(coreSetupMock));
setKibanaMapFactory((...args) => new KibanaMap(...args));
setInjectedVars({
emsTileLayerId: {},
enableExternalUrls: true,
Expand Down Expand Up @@ -139,30 +127,6 @@ describe('VegaVisualizations', () => {
beforeEach(ngMock.module('kibana'));
beforeEach(
ngMock.inject(() => {
setInjectedVarFunc((injectedVar) => {
switch (injectedVar) {
case 'mapConfig':
return {
emsFileApiUrl: '',
emsTileApiUrl: '',
emsLandingPageUrl: '',
};
case 'tilemapsConfig':
return {
deprecated: {
config: {
options: {
attribution: '123',
},
},
},
};
case 'version':
return '123';
default:
return 'not found';
}
});
const serviceSettings = new ServiceSettings(mockMapConfig, mockMapConfig.tilemap);
vegaVisualizationDependencies = {
serviceSettings,
Expand Down
22 changes: 2 additions & 20 deletions src/plugins/maps_legacy/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,10 @@
*/

// @ts-ignore
import { CoreSetup, PluginInitializerContext } from 'kibana/public';
import { PluginInitializerContext } from 'kibana/public';
// @ts-ignore
import { L } from './leaflet';
// @ts-ignore
import { KibanaMap } from './map/kibana_map';
import { bindSetupCoreAndPlugins, MapsLegacyPlugin } from './plugin';
import { MapsLegacyPlugin } from './plugin';
// @ts-ignore
import * as colorUtil from './map/color_util';
// @ts-ignore
Expand All @@ -32,8 +30,6 @@ import { KibanaMapLayer } from './map/kibana_map_layer';
import { convertToGeoJson } from './map/convert_to_geojson';
// @ts-ignore
import { scaleBounds, getPrecision, geoContains } from './map/decode_geo_hash';
// @ts-ignore
import { BaseMapsVisualizationProvider } from './map/base_maps_visualization';
import {
VectorLayer,
FileLayerField,
Expand Down Expand Up @@ -75,20 +71,6 @@ export {
L,
};

// Due to a leaflet/leaflet-draw bug, it's not possible to consume leaflet maps w/ draw control
// through a pipeline leveraging angular. For this reason, client plugins need to
// init kibana map and the basemaps visualization directly rather than consume through
// the usual plugin interface
export function getKibanaMapFactoryProvider(core: CoreSetup) {
bindSetupCoreAndPlugins(core);
return (...args: any) => new KibanaMap(...args);
}

export function getBaseMapsVis(core: CoreSetup, serviceSettings: IServiceSettings) {
const getKibanaMap = getKibanaMapFactoryProvider(core);
return new BaseMapsVisualizationProvider(getKibanaMap, serviceSettings);
}

export * from './common/types';
export { ORIGIN } from './common/constants/origin';

Expand Down
12 changes: 9 additions & 3 deletions src/plugins/maps_legacy/public/kibana_services.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ let uiSettings;
export const setUiSettings = (coreUiSettings) => (uiSettings = coreUiSettings);
export const getUiSettings = () => uiSettings;

let getInjectedVar;
export const setInjectedVarFunc = (getInjectedVarFunc) => (getInjectedVar = getInjectedVarFunc);
export const getInjectedVarFunc = () => getInjectedVar;
let kibanaVersion;
export const setKibanaVersion = (version) => (kibanaVersion = version);
export const getKibanaVersion = () => kibanaVersion;

let mapsLegacyConfig;
export const setMapsLegacyConfig = (config) => (mapsLegacyConfig = config);
export const getMapsLegacyConfig = () => mapsLegacyConfig;

export const getEmsTileLayerId = () => getMapsLegacyConfig().emsTileLayerId;
4 changes: 2 additions & 2 deletions src/plugins/maps_legacy/public/map/base_maps_visualization.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import _ from 'lodash';
import { i18n } from '@kbn/i18n';
import * as Rx from 'rxjs';
import { filter, first } from 'rxjs/operators';
import { getInjectedVarFunc, getUiSettings, getToasts } from '../kibana_services';
import { getEmsTileLayerId, getUiSettings, getToasts } from '../kibana_services';

const WMS_MINZOOM = 0;
const WMS_MAXZOOM = 22; //increase this to 22. Better for WMS
Expand Down Expand Up @@ -129,7 +129,7 @@ export function BaseMapsVisualizationProvider(getKibanaMap, mapServiceSettings)
}

async _updateBaseLayer() {
const emsTileLayerId = getInjectedVarFunc()('emsTileLayerId', true);
const emsTileLayerId = getEmsTileLayerId();

if (!this._kibanaMap) {
return;
Expand Down
6 changes: 2 additions & 4 deletions src/plugins/maps_legacy/public/map/service_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,20 @@ import _ from 'lodash';
import MarkdownIt from 'markdown-it';
import { EMSClient } from '@elastic/ems-client';
import { i18n } from '@kbn/i18n';
import { getInjectedVarFunc } from '../kibana_services';
import { getKibanaVersion } from '../kibana_services';
import { ORIGIN } from '../common/constants/origin';

const TMS_IN_YML_ID = 'TMS in config/kibana.yml';

export class ServiceSettings {
constructor(mapConfig, tilemapsConfig) {
const getInjectedVar = getInjectedVarFunc();
this._mapConfig = mapConfig;
this._tilemapsConfig = tilemapsConfig;
const kbnVersion = getInjectedVar('version');

this._showZoomMessage = true;
this._emsClient = new EMSClient({
language: i18n.getLocale(),
appVersion: kbnVersion,
appVersion: getKibanaVersion(),
appName: 'kibana',
fileApiUrl: this._mapConfig.emsFileApiUrl,
tileApiUrl: this._mapConfig.emsTileApiUrl,
Expand Down
29 changes: 23 additions & 6 deletions src/plugins/maps_legacy/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,33 @@
// @ts-ignore
import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from 'kibana/public';
// @ts-ignore
import { setToasts, setUiSettings, setInjectedVarFunc } from './kibana_services';
import { setToasts, setUiSettings, setKibanaVersion, setMapsLegacyConfig } from './kibana_services';
// @ts-ignore
import { ServiceSettings } from './map/service_settings';
// @ts-ignore
import { getPrecision, getZoomPrecision } from './map/precision';
// @ts-ignore
import { KibanaMap } from './map/kibana_map';
import { MapsLegacyConfigType, MapsLegacyPluginSetup, MapsLegacyPluginStart } from './index';
import { ConfigSchema } from '../config';
// @ts-ignore
import { BaseMapsVisualizationProvider } from './map/base_maps_visualization';

/**
* These are the interfaces with your public contracts. You should export these
* for other plugins to use in _their_ `SetupDeps`/`StartDeps` interfaces.
* @public
*/

export const bindSetupCoreAndPlugins = (core: CoreSetup) => {
export const bindSetupCoreAndPlugins = (
core: CoreSetup,
config: MapsLegacyConfigType,
kibanaVersion: string
) => {
setToasts(core.notifications.toasts);
setUiSettings(core.uiSettings);
setInjectedVarFunc(core.injectedMetadata.getInjectedVar);
setKibanaVersion(kibanaVersion);
setMapsLegacyConfig(config);
};

// eslint-disable-next-line @typescript-eslint/no-empty-interface
Expand All @@ -53,15 +62,23 @@ export class MapsLegacyPlugin implements Plugin<MapsLegacyPluginSetup, MapsLegac
}

public setup(core: CoreSetup, plugins: MapsLegacySetupDependencies) {
bindSetupCoreAndPlugins(core);

const config = this._initializerContext.config.get<MapsLegacyConfigType>();
const kibanaVersion = this._initializerContext.env.packageInfo.version;

bindSetupCoreAndPlugins(core, config, kibanaVersion);

const serviceSettings = new ServiceSettings(config, config.tilemap);
const getKibanaMapFactoryProvider = (...args: any) => new KibanaMap(...args);
const getBaseMapsVis = () =>
new BaseMapsVisualizationProvider(getKibanaMapFactoryProvider, serviceSettings);

return {
serviceSettings: new ServiceSettings(config, config.tilemap),
serviceSettings,
getZoomPrecision,
getPrecision,
config,
getKibanaMapFactoryProvider,
getBaseMapsVis,
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,11 @@ import { ExprVis } from '../../../visualizations/public/expressions/vis';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { BaseVisType } from '../../../visualizations/public/vis_types/base_vis_type';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { setInjectedVarFunc } from '../../../maps_legacy/public/kibana_services';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { ServiceSettings } from '../../../maps_legacy/public/map/service_settings';
import { getBaseMapsVis } from '../../../maps_legacy/public';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { BaseMapsVisualizationProvider } from '../../../maps_legacy/public/map/base_maps_visualization';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { KibanaMap } from '../../../maps_legacy/public/map/kibana_map';

const THRESHOLD = 0.45;
const PIXEL_DIFF = 96;
Expand Down Expand Up @@ -118,14 +119,6 @@ describe('RegionMapsVisualizationTests', function () {
},
},
};
setInjectedVarFunc((injectedVar) => {
switch (injectedVar) {
case 'version':
return '123';
default:
return 'not found';
}
});
const serviceSettings = new ServiceSettings(mapConfig, tilemapsConfig);
const regionmapsConfig = {
includeElasticMapsService: true,
Expand All @@ -142,7 +135,10 @@ describe('RegionMapsVisualizationTests', function () {
getInjectedVar: () => {},
},
};
const BaseMapsVisualization = getBaseMapsVis(coreSetupMock, serviceSettings);
const BaseMapsVisualization = new BaseMapsVisualizationProvider(
(...args) => new KibanaMap(...args),
serviceSettings
);

dependencies = {
serviceSettings,
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/region_map/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import { VisualizationsSetup } from '../../visualizations/public';
import { createRegionMapFn } from './region_map_fn';
// @ts-ignore
import { createRegionMapTypeDefinition } from './region_map_type';
import { getBaseMapsVis, IServiceSettings, MapsLegacyPluginSetup } from '../../maps_legacy/public';
import { IServiceSettings, MapsLegacyPluginSetup } from '../../maps_legacy/public';
import { setFormatService, setNotifications, setKibanaLegacy } from './kibana_services';
import { DataPublicPluginStart } from '../../data/public';
import { RegionMapsConfigType } from './index';
Expand Down Expand Up @@ -94,7 +94,7 @@ export class RegionMapPlugin implements Plugin<RegionMapPluginSetup, RegionMapPl
uiSettings: core.uiSettings,
regionmapsConfig: config as RegionMapsConfig,
serviceSettings: mapsLegacy.serviceSettings,
BaseMapsVisualization: getBaseMapsVis(core, mapsLegacy.serviceSettings),
BaseMapsVisualization: mapsLegacy.getBaseMapsVis(),
};

expressions.registerFunction(createRegionMapFn);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,9 @@ import {
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { ServiceSettings } from '../../../maps_legacy/public/map/service_settings';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { setInjectedVarFunc } from '../../../maps_legacy/public/kibana_services';
import { getBaseMapsVis } from '../../../maps_legacy/public';
import { KibanaMap } from '../../../maps_legacy/public/map/kibana_map';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { BaseMapsVisualizationProvider } from '../../../maps_legacy/public/map/base_maps_visualization';

function mockRawData() {
const stack = [dummyESResponse];
Expand Down Expand Up @@ -105,26 +106,12 @@ describe('CoordinateMapsVisualizationTest', function () {
},
},
};
setInjectedVarFunc((injectedVar) => {
switch (injectedVar) {
case 'version':
return '123';
default:
return 'not found';
}
});

const coreSetupMock = {
notifications: {
toasts: {},
},
uiSettings: {},
injectedMetadata: {
getInjectedVar: () => {},
},
};
const serviceSettings = new ServiceSettings(mapConfig, tilemapsConfig);
const BaseMapsVisualization = getBaseMapsVis(coreSetupMock, serviceSettings);
const BaseMapsVisualization = new BaseMapsVisualizationProvider(
(...args) => new KibanaMap(...args),
serviceSettings
);
const uiSettings = $injector.get('config');

dependencies = {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/tile_map/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import 'angular-sanitize';
import { createTileMapFn } from './tile_map_fn';
// @ts-ignore
import { createTileMapTypeDefinition } from './tile_map_type';
import { getBaseMapsVis, MapsLegacyPluginSetup } from '../../maps_legacy/public';
import { MapsLegacyPluginSetup } from '../../maps_legacy/public';
import { DataPublicPluginStart } from '../../data/public';
import { setFormatService, setQueryService } from './services';
import { setKibanaLegacy } from './services';
Expand Down Expand Up @@ -85,7 +85,7 @@ export class TileMapPlugin implements Plugin<TileMapPluginSetup, TileMapPluginSt
const visualizationDependencies: Readonly<TileMapVisualizationDependencies> = {
getZoomPrecision,
getPrecision,
BaseMapsVisualization: getBaseMapsVis(core, mapsLegacy.serviceSettings),
BaseMapsVisualization: mapsLegacy.getBaseMapsVis(),
uiSettings: core.uiSettings,
};

Expand Down
4 changes: 2 additions & 2 deletions src/plugins/vis_type_vega/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import {

import { createVegaFn } from './vega_fn';
import { createVegaTypeDefinition } from './vega_type';
import { getKibanaMapFactoryProvider, IServiceSettings } from '../../maps_legacy/public';
import { IServiceSettings } from '../../maps_legacy/public';
import './index.scss';
import { ConfigSchema } from '../config';

Expand Down Expand Up @@ -77,7 +77,7 @@ export class VegaPlugin implements Plugin<Promise<void>, void> {
emsTileLayerId: core.injectedMetadata.getInjectedVar('emsTileLayerId', true),
});
setUISettings(core.uiSettings);
setKibanaMapFactory(getKibanaMapFactoryProvider(core));
setKibanaMapFactory(mapsLegacy.getKibanaMapFactoryProvider);
setMapsLegacyConfig(mapsLegacy.config);

const visualizationDependencies: Readonly<VegaVisualizationDependencies> = {
Expand Down