From 4f518aca2270cb3e64eb2a49ea6d686879b8df52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20David=20Guti=C3=A9rrez?= Date: Fri, 3 Jun 2022 15:17:37 +0200 Subject: [PATCH] fix: fix an error that avoids the visualizations are built correctly in a production package - fix `Types was not set` error appearing in production package More information in: https://github.com/wazuh/wazuh-kibana-app/issues/4199#issuecomment-1145954303 --- public/kibana-integrations/kibana-vis.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/public/kibana-integrations/kibana-vis.js b/public/kibana-integrations/kibana-vis.js index e07a53f911..7bc49a1230 100644 --- a/public/kibana-integrations/kibana-vis.js +++ b/public/kibana-integrations/kibana-vis.js @@ -25,7 +25,7 @@ import { updateMetric } from '../redux/actions/visualizationsActions'; import { GenericRequest } from '../react-services/generic-request'; import { createSavedVisLoader } from './visualizations/saved_visualizations'; import { WzDatePicker } from '../components/wz-date-picker/wz-date-picker'; -import { Vis } from '../../../../src/plugins/visualizations/public'; +import { PersistedState } from '../../../../src/plugins/visualizations/public'; import { EuiLoadingChart, EuiLoadingSpinner, @@ -289,9 +289,17 @@ class KibanaVis extends Component { // that the visualization, for example, doesn't use the defined colors in the `.uiStateJSON` property. // `createVis` method of Visualizations plugin: https://github.com/elastic/kibana/blob/v7.10.2/src/plugins/visualizations/public/plugin.ts#L207-L211 // `Vis` class constructor: https://github.com/elastic/kibana/blob/v7.10.2/src/plugins/visualizations/public/vis.ts#L99-L104 - // This problem is fixed replicating the logic of Visualization plugin's `createVis` method and pass the expected parameters to the `Vis` class constructor. - const vis = new Vis(visState.type, visState); - await vis.setState(visState); + // This problem would be fixed replicating the logic of Visualization plugin's `createVis` method and passing the expected parameters to the `Vis` class constructor + // but there is an error in the generated plugin package in production related to `Types was not set`. + // The remediation is creating the visualization with `.createVis` and set the `.params` and `.uiState` and `.id` properties + // as is done in the `Vis` class constructor https://github.com/elastic/kibana/blob/v7.10.2/src/plugins/visualizations/public/vis.ts#L99-L104 + const vis = await getVisualizationsPlugin().createVis( + this.visualization.visState.type, + visState + ); + vis.params = vis.getParams(visState.params); + vis.uiState = new PersistedState(visState.uiState); + vis.id = visState.id; this.visHandler = await getVisualizationsPlugin().__LEGACY.createVisEmbeddableFromObject( vis,