From 81f730208a79adf00be0795786f459d3dc1b7c67 Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Thu, 16 Apr 2020 13:58:13 +0200 Subject: [PATCH 1/3] pass through reload information and ui state --- .../visualize/np_ready/editor/editor.js | 3 +++ .../application/components/vis_editor.js | 2 ++ .../public/embeddable/visualize_embeddable.ts | 21 ++++++++++++------- .../visualizations/public/expressions/vis.ts | 4 +++- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/legacy/core_plugins/kibana/public/visualize/np_ready/editor/editor.js b/src/legacy/core_plugins/kibana/public/visualize/np_ready/editor/editor.js index 9ccd45dfc1b45..6d29f894bd7a0 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/np_ready/editor/editor.js +++ b/src/legacy/core_plugins/kibana/public/visualize/np_ready/editor/editor.js @@ -405,6 +405,9 @@ 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; 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 7075e86eb56bf..86ddda742f6fb 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.forceReload(); }; updateVisState = debounce(() => { diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts index e64d200251797..c845553b2f566 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts @@ -59,6 +59,7 @@ export interface VisualizeInput extends EmbeddableInput { vis?: { colors?: { [key: string]: string }; }; + table?: unknown; } export interface VisualizeOutput extends EmbeddableOutput { @@ -76,7 +77,7 @@ export class VisualizeEmbeddable extends Embeddable; private subscriptions: Subscription[] = []; private expression: string = ''; private vis: Vis; @@ -105,6 +106,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) { diff --git a/src/plugins/visualizations/public/expressions/vis.ts b/src/plugins/visualizations/public/expressions/vis.ts index a7d4a28070620..8188c3dd9dbd7 100644 --- a/src/plugins/visualizations/public/expressions/vis.ts +++ b/src/plugins/visualizations/public/expressions/vis.ts @@ -116,7 +116,9 @@ export class ExprVis extends EventEmitter { } forceReload() { - this.emit('reload'); + if (this.uiState) { + this.uiState.emit('reload'); + } } isHierarchical() { From 506715f737f95ed4f9644c25cef03569b8caaa56 Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Thu, 16 Apr 2020 14:59:21 +0200 Subject: [PATCH 2/3] emit reload directly --- .../public/application/components/vis_editor.js | 2 +- src/plugins/visualizations/public/expressions/vis.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) 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 86ddda742f6fb..f98f66588409f 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 @@ -75,7 +75,7 @@ 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.forceReload(); + this.props.vis.uiState.emit('reload'); }; updateVisState = debounce(() => { diff --git a/src/plugins/visualizations/public/expressions/vis.ts b/src/plugins/visualizations/public/expressions/vis.ts index 8188c3dd9dbd7..a7d4a28070620 100644 --- a/src/plugins/visualizations/public/expressions/vis.ts +++ b/src/plugins/visualizations/public/expressions/vis.ts @@ -116,9 +116,7 @@ export class ExprVis extends EventEmitter { } forceReload() { - if (this.uiState) { - this.uiState.emit('reload'); - } + this.emit('reload'); } isHierarchical() { From a72c4b0f153cee0d70f1f67ddccc408f9ad4ab15 Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Tue, 5 May 2020 13:07:15 +0200 Subject: [PATCH 3/3] unregister ui state listener --- .../visualizations/public/embeddable/visualize_embeddable.ts | 1 + src/plugins/visualize/public/application/editor/editor.js | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts index 87b9cb1e0430b..8ab144bc03c32 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts @@ -314,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 f6a38086675c1..1c4f0c5090347 100644 --- a/src/plugins/visualize/public/application/editor/editor.js +++ b/src/plugins/visualize/public/application/editor/editor.js @@ -387,9 +387,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState stateContainer ); vis.uiState = persistedState; - vis.uiState.on('reload', () => { - embeddableHandler.reload(); - }); + vis.uiState.on('reload', embeddableHandler.reload); $scope.uiState = persistedState; $scope.savedVis = savedVis; $scope.query = initialState.query; @@ -537,6 +535,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState $scope.eventEmitter.off('apply', _applyVis); unsubscribePersisted(); + vis.uiState.off('reload', embeddableHandler.reload); unsubscribeStateUpdates(); stopAllSyncing();