mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 09:19:04 -04:00
[Maps] fix Cannot open Lens editor in airgapped environment (#132429)
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
9f9a24a06d
commit
03617b4822
6 changed files with 70 additions and 26 deletions
|
@ -121,10 +121,15 @@ export class LayerTemplate extends Component<RenderWizardArguments, State> {
|
|||
};
|
||||
|
||||
_loadEmsFileFields = async () => {
|
||||
const emsFileLayers = await getEmsFileLayers();
|
||||
const emsFileLayer = emsFileLayers.find((fileLayer: FileLayer) => {
|
||||
return fileLayer.getId() === this.state.leftEmsFileId;
|
||||
});
|
||||
let emsFileLayer: FileLayer | undefined;
|
||||
try {
|
||||
const emsFileLayers = await getEmsFileLayers();
|
||||
emsFileLayer = emsFileLayers.find((fileLayer: FileLayer) => {
|
||||
return fileLayer.getId() === this.state.leftEmsFileId;
|
||||
});
|
||||
} catch (error) {
|
||||
// ignore error, lack of EMS file layers will be surfaced in EMS file select
|
||||
}
|
||||
|
||||
if (!this._isMounted || !emsFileLayer) {
|
||||
return;
|
||||
|
|
|
@ -45,25 +45,31 @@ export class TileServiceSelect extends Component<Props, State> {
|
|||
}
|
||||
|
||||
_loadTmsOptions = async () => {
|
||||
const emsTMSServices = await getEmsTmsServices();
|
||||
try {
|
||||
const emsTMSServices = await getEmsTmsServices();
|
||||
|
||||
if (!this._isMounted) {
|
||||
return;
|
||||
if (!this._isMounted) {
|
||||
return;
|
||||
}
|
||||
|
||||
const emsTmsOptions = emsTMSServices.map((tmsService) => {
|
||||
return {
|
||||
value: tmsService.getId(),
|
||||
text: tmsService.getDisplayName() ? tmsService.getDisplayName() : tmsService.getId(),
|
||||
};
|
||||
});
|
||||
emsTmsOptions.unshift({
|
||||
value: AUTO_SELECT,
|
||||
text: i18n.translate('xpack.maps.source.emsTile.autoLabel', {
|
||||
defaultMessage: 'Autoselect based on Kibana theme',
|
||||
}),
|
||||
});
|
||||
this.setState({ emsTmsOptions, hasLoaded: true });
|
||||
} catch (error) {
|
||||
if (this._isMounted) {
|
||||
this.setState({ emsTmsOptions: [], hasLoaded: true });
|
||||
}
|
||||
}
|
||||
|
||||
const emsTmsOptions = emsTMSServices.map((tmsService) => {
|
||||
return {
|
||||
value: tmsService.getId(),
|
||||
text: tmsService.getDisplayName() ? tmsService.getDisplayName() : tmsService.getId(),
|
||||
};
|
||||
});
|
||||
emsTmsOptions.unshift({
|
||||
value: AUTO_SELECT,
|
||||
text: i18n.translate('xpack.maps.source.emsTile.autoLabel', {
|
||||
defaultMessage: 'Autoselect based on Kibana theme',
|
||||
}),
|
||||
});
|
||||
this.setState({ emsTmsOptions, hasLoaded: true });
|
||||
};
|
||||
|
||||
_onChange = (e: ChangeEvent<HTMLSelectElement>) => {
|
||||
|
|
|
@ -33,7 +33,18 @@ export class EMSFileSelect extends Component<Props, State> {
|
|||
};
|
||||
|
||||
_loadFileOptions = async () => {
|
||||
const fileLayers: FileLayer[] = await getEmsFileLayers();
|
||||
let fileLayers: FileLayer[] = [];
|
||||
try {
|
||||
fileLayers = await getEmsFileLayers();
|
||||
} catch (error) {
|
||||
if (this._isMounted) {
|
||||
this.setState({
|
||||
hasLoadedOptions: true,
|
||||
emsFileOptions: [],
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const options = fileLayers.map((fileLayer) => {
|
||||
return {
|
||||
value: fileLayer.getId(),
|
||||
|
|
|
@ -33,8 +33,13 @@ interface FileLayerFieldShim {
|
|||
export async function suggestEMSTermJoinConfig(
|
||||
sampleValuesConfig: SampleValuesConfig
|
||||
): Promise<EMSTermJoinConfig | null> {
|
||||
const fileLayers = await getEmsFileLayers();
|
||||
return emsAutoSuggest(sampleValuesConfig, fileLayers);
|
||||
try {
|
||||
const fileLayers = await getEmsFileLayers();
|
||||
return emsAutoSuggest(sampleValuesConfig, fileLayers);
|
||||
} catch (error) {
|
||||
// can not return suggestions since EMS is not available.
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
export function emsAutoSuggest(
|
||||
|
|
|
@ -10,6 +10,7 @@ import ReactDOM from 'react-dom';
|
|||
import type { IInterpreterRenderHandlers } from '@kbn/expressions-plugin/public';
|
||||
import type { EmbeddableFactory } from '@kbn/embeddable-plugin/public';
|
||||
import type { CoreSetup, CoreStart } from '@kbn/core/public';
|
||||
import type { FileLayer } from '@elastic/ems-client';
|
||||
import type { MapsPluginStartDependencies } from '../../plugin';
|
||||
import type { ChoroplethChartProps } from './types';
|
||||
import type { MapEmbeddableInput, MapEmbeddableOutput } from '../../embeddable';
|
||||
|
@ -40,12 +41,19 @@ export function getExpressionRenderer(coreSetup: CoreSetup<MapsPluginStartDepend
|
|||
return;
|
||||
}
|
||||
|
||||
let emsFileLayers: FileLayer[] = [];
|
||||
try {
|
||||
emsFileLayers = await getEmsFileLayers();
|
||||
} catch (error) {
|
||||
// ignore error, lack of EMS file layers will be surfaced in dimension editor
|
||||
}
|
||||
|
||||
ReactDOM.render(
|
||||
<ChoroplethChart
|
||||
{...config}
|
||||
formatFactory={plugins.fieldFormats.deserialize}
|
||||
uiSettings={coreStart.uiSettings}
|
||||
emsFileLayers={await getEmsFileLayers()}
|
||||
emsFileLayers={emsFileLayers}
|
||||
mapEmbeddableFactory={mapEmbeddableFactory}
|
||||
/>,
|
||||
domNode,
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
import type { ExpressionsSetup } from '@kbn/expressions-plugin/public';
|
||||
import type { CoreSetup, CoreStart } from '@kbn/core/public';
|
||||
import type { LensPublicSetup } from '@kbn/lens-plugin/public';
|
||||
import type { FileLayer } from '@elastic/ems-client';
|
||||
import type { MapsPluginStartDependencies } from '../../plugin';
|
||||
import { getExpressionFunction } from './expression_function';
|
||||
import { getExpressionRenderer } from './expression_renderer';
|
||||
|
@ -28,9 +29,17 @@ export function setupLensChoroplethChart(
|
|||
await coreSetup.getStartServices();
|
||||
const { getEmsFileLayers } = await import('../../util');
|
||||
const { getVisualization } = await import('./visualization');
|
||||
|
||||
let emsFileLayers: FileLayer[] = [];
|
||||
try {
|
||||
emsFileLayers = await getEmsFileLayers();
|
||||
} catch (error) {
|
||||
// ignore error, lack of EMS file layers will be surfaced in dimension editor
|
||||
}
|
||||
|
||||
return getVisualization({
|
||||
theme: coreStart.theme,
|
||||
emsFileLayers: await getEmsFileLayers(),
|
||||
emsFileLayers,
|
||||
paletteService: await plugins.charts.palettes.getPalettes(),
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue