Skip to content

Commit

Permalink
[Canvas] Migrate by value embeddables (#123515) (#125121)
Browse files Browse the repository at this point in the history
* Add migrations for by value embeddables

Check for id in embeddable input

Removed unused import

Fixed tests

Fix variable name

Move migration into embeddable function definition

Remove unused code

* Cleanup

* Fix embeddable test

* Remove check for by-value embeddables in embeddable function migration

* Removed unused import

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit 8e8c4b8)
  • Loading branch information
cqliu1 authored Feb 9, 2022
1 parent bf593c7 commit 7b127b5
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { embeddableFunctionFactory } from './embeddable';
import { getQueryFilters } from '../../../common/lib/build_embeddable_filters';
import { ExpressionValueFilter } from '../../../types';
import { encode } from '../../../common/lib/embeddable_dataurl';
import { InitializeArguments } from '.';

const filterContext: ExpressionValueFilter = {
type: 'filter',
Expand All @@ -32,8 +31,16 @@ const filterContext: ExpressionValueFilter = {
],
};

const embeddablePersistableStateServiceMock = {
extract: jest.fn(),
inject: jest.fn(),
getAllMigrations: jest.fn(),
};

describe('embeddable', () => {
const fn = embeddableFunctionFactory({} as InitializeArguments)().fn;
const fn = embeddableFunctionFactory({
embeddablePersistableStateService: embeddablePersistableStateServiceMock,
})().fn;
const config = {
id: 'some-id',
timerange: { from: '15m', to: 'now' },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,16 @@
* 2.0.
*/

import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common';
import { mapValues } from 'lodash';
import { EmbeddableStateWithType } from 'src/plugins/embeddable/common';
import {
ExpressionFunctionDefinition,
ExpressionAstFunction,
} from 'src/plugins/expressions/common';
import {
MigrateFunction,
MigrateFunctionsObject,
} from '../../../../../../src/plugins/kibana_utils/common';
import { ExpressionValueFilter, EmbeddableInput } from '../../../types';
import { EmbeddableExpressionType, EmbeddableExpression } from '../../expression_types';
import { getFunctionHelp } from '../../../i18n';
Expand Down Expand Up @@ -45,6 +54,22 @@ export function embeddableFunctionFactory({
return function embeddable(): EmbeddableFunction {
const { help, args: argHelp } = getFunctionHelp().embeddable;

const migrateByValueEmbeddable =
(
migrateFn: MigrateFunction<EmbeddableStateWithType, EmbeddableStateWithType>
): MigrateFunction<ExpressionAstFunction, ExpressionAstFunction> =>
(state: ExpressionAstFunction): ExpressionAstFunction => {
const embeddableInput = decode(state.arguments.config[0] as string);

const embeddableType = state.arguments.type[0];
const migratedInput = migrateFn({ ...embeddableInput, type: embeddableType });

state.arguments.config[0] = encode(migratedInput);
state.arguments.type[0] = migratedInput.type as string;

return state;
};

return {
name: 'embeddable',
help,
Expand Down Expand Up @@ -140,6 +165,11 @@ export function embeddableFunctionFactory({
}
return state;
},

migrations: mapValues<
MigrateFunctionsObject,
MigrateFunction<ExpressionAstFunction, ExpressionAstFunction>
>(embeddablePersistableStateService.getAllMigrations(), migrateByValueEmbeddable),
};
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export interface InitializeArguments {
embeddablePersistableStateService: {
extract: EmbeddableStart['extract'];
inject: EmbeddableStart['inject'];
getAllMigrations: EmbeddableStart['getAllMigrations'];
};
}

Expand Down
1 change: 1 addition & 0 deletions x-pack/plugins/canvas/canvas_plugin_src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ export class CanvasSrcPlugin implements Plugin<void, void, SetupDeps, StartDeps>
embeddablePersistableStateService: {
extract: depsStart.embeddable.extract,
inject: depsStart.embeddable.inject,
getAllMigrations: depsStart.embeddable.getAllMigrations,
},
});
plugins.canvas.addFunctions(externalFunctions);
Expand Down
1 change: 1 addition & 0 deletions x-pack/plugins/canvas/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export class CanvasPlugin implements Plugin {
embeddablePersistableStateService: {
extract: plugins.embeddable.extract,
inject: plugins.embeddable.inject,
getAllMigrations: plugins.embeddable.getAllMigrations,
},
});

Expand Down

0 comments on commit 7b127b5

Please sign in to comment.