Skip to content

Commit

Permalink
[7.x] Remove injected vars from maps legacy (elastic#69744) (elastic#…
Browse files Browse the repository at this point in the history
…70504)

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
  • Loading branch information
Aaron Caldwell and elasticmachine authored Jul 1, 2020
1 parent 930826d commit b1431e8
Show file tree
Hide file tree
Showing 11 changed files with 62 additions and 112 deletions.
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

0 comments on commit b1431e8

Please sign in to comment.