From f6ac602e88921df10bd7e47232a76486622177d0 Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Tue, 26 May 2020 09:52:53 -0400 Subject: [PATCH] [Canvas] Force embeddables to refresh when renderable reevaluated (#67133) * Force embeddables to refresh when renderable reevaluated * prettier * Rename generated property Co-authored-by: Elastic Machine --- .../expression_types/embeddable.ts | 14 ++++++++++++++ .../functions/common/saved_lens.ts | 1 + .../functions/common/saved_map.ts | 1 + .../functions/common/saved_search.ts | 1 + .../functions/common/saved_visualization.ts | 1 + .../renderers/embeddable/embeddable.tsx | 1 + 6 files changed, 19 insertions(+) diff --git a/x-pack/plugins/canvas/canvas_plugin_src/expression_types/embeddable.ts b/x-pack/plugins/canvas/canvas_plugin_src/expression_types/embeddable.ts index 74de223b9fcb7a..cb2f418537a331 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/expression_types/embeddable.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/expression_types/embeddable.ts @@ -12,9 +12,23 @@ export const EmbeddableExpressionType = 'embeddable'; export { EmbeddableTypes, EmbeddableInput }; export interface EmbeddableExpression { + /** + * The type of the expression result + */ type: typeof EmbeddableExpressionType; + /** + * The input to be passed to the embeddable + */ input: Input; + /** + * The type of embeddable + */ embeddableType: string; + /** + * Timestamp. Needed to get a different result after each time the expression is evaluated + * to force a reload of the embeddables internal data + */ + generatedAt: number; } export const embeddableType = (): ExpressionTypeDefinition< diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_lens.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_lens.ts index 8fc55ddf9cc599..49b8c5562af650 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_lens.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_lens.ts @@ -76,6 +76,7 @@ export function savedLens(): ExpressionFunctionDefinition< disableTriggers: true, }, embeddableType: EmbeddableTypes.lens, + generatedAt: Date.now(), }; }, }; diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts index dacdc30e0c6f76..faa2937aeaa14b 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts @@ -98,6 +98,7 @@ export function savedMap(): ExpressionFunctionDefinition< hiddenLayers: args.hideLayer || [], }, embeddableType: EmbeddableTypes.map, + generatedAt: Date.now(), }; }, }; diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts index 027442dfdcb3ff..f9154048aa5660 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts @@ -49,6 +49,7 @@ export function savedSearch(): ExpressionFunctionDefinition< ...buildEmbeddableFilters(filters), }, embeddableType: EmbeddableTypes.search, + generatedAt: Date.now(), }; }, }; diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts index 91cbb02e2d1766..62328556b45e3e 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts @@ -93,6 +93,7 @@ export function savedVisualization(): ExpressionFunctionDefinition< vis: visOptions, }, embeddableType: EmbeddableTypes.visualization, + generatedAt: Date.now(), }; }, }; diff --git a/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx b/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx index 1d4207ac0ae502..2dd116d5ada082 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx +++ b/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx @@ -112,6 +112,7 @@ export const embeddableRendererFactory = (core: CoreStart, plugins: StartDeps) = }); } else { embeddablesRegistry[uniqueId].updateInput(input); + embeddablesRegistry[uniqueId].reload(); } }, });