Skip to content

Commit

Permalink
fix: fix an error that avoids the visualizations are built correctly …
Browse files Browse the repository at this point in the history
…in a production package

- fix `Types was not set` error appearing in production package
More information in: #4199 (comment)
  • Loading branch information
Desvelao committed Jun 3, 2022
1 parent 05013f5 commit 4f518ac
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions public/kibana-integrations/kibana-vis.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 4f518ac

Please sign in to comment.