diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js index 9fdb8ccc919b7..62d8cf3297132 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js @@ -74,6 +74,8 @@ export class VisEditor extends Component { handleUiState = (field, value) => { this.props.vis.uiState.set(field, value); + // reload visualization because data might need to be re-fetched + this.props.vis.uiState.emit('reload'); }; updateVisState = debounce(() => { diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts index 71b31b7f74168..8ab144bc03c32 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts @@ -60,6 +60,7 @@ export interface VisualizeInput extends EmbeddableInput { vis?: { colors?: { [key: string]: string }; }; + table?: unknown; } export interface VisualizeOutput extends EmbeddableOutput { @@ -77,7 +78,7 @@ export class VisualizeEmbeddable extends Embeddable; private subscriptions: Subscription[] = []; private expression: string = ''; private vis: Vis; @@ -108,6 +109,7 @@ export class VisualizeEmbeddable extends Embeddable { - this.vis.uiState.set(key, visCustomizations[key]); - }); + if (visCustomizations.vis) { + this.vis.uiState.set('vis', visCustomizations.vis); + getKeys(visCustomizations).forEach(key => { + this.vis.uiState.set(key, visCustomizations[key]); + }); + } + if (visCustomizations.table) { + this.vis.uiState.set('table', visCustomizations.table); + } this.vis.uiState.on('change', this.uiStateChangeHandler); } } else if (this.parent) { @@ -307,6 +314,7 @@ export class VisualizeEmbeddable extends Embeddable s.unsubscribe()); this.vis.uiState.off('change', this.uiStateChangeHandler); + this.vis.uiState.off('reload', this.reload); if (this.handler) { this.handler.destroy(); diff --git a/src/plugins/visualize/public/application/editor/editor.js b/src/plugins/visualize/public/application/editor/editor.js index ef359dc0cc115..1c4f0c5090347 100644 --- a/src/plugins/visualize/public/application/editor/editor.js +++ b/src/plugins/visualize/public/application/editor/editor.js @@ -387,6 +387,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState stateContainer ); vis.uiState = persistedState; + vis.uiState.on('reload', embeddableHandler.reload); $scope.uiState = persistedState; $scope.savedVis = savedVis; $scope.query = initialState.query; @@ -534,6 +535,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState $scope.eventEmitter.off('apply', _applyVis); unsubscribePersisted(); + vis.uiState.off('reload', embeddableHandler.reload); unsubscribeStateUpdates(); stopAllSyncing();