diff --git a/src/plugins/vis_augmenter/public/expressions/index.ts b/src/plugins/vis_augmenter/public/expressions/index.ts index f7bcfbd083fe..9f269633f307 100644 --- a/src/plugins/vis_augmenter/public/expressions/index.ts +++ b/src/plugins/vis_augmenter/public/expressions/index.ts @@ -3,4 +3,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -export * from './vis_layers'; +export * from './types'; diff --git a/src/plugins/vis_augmenter/public/expressions/vis_layers.ts b/src/plugins/vis_augmenter/public/expressions/types.ts similarity index 56% rename from src/plugins/vis_augmenter/public/expressions/vis_layers.ts rename to src/plugins/vis_augmenter/public/expressions/types.ts index 8cfa7d4b4ae8..b907e570e108 100644 --- a/src/plugins/vis_augmenter/public/expressions/vis_layers.ts +++ b/src/plugins/vis_augmenter/public/expressions/types.ts @@ -3,8 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ExpressionTypeDefinition } from '../../../expressions'; -import { VisLayers } from '../'; +import { ExpressionTypeDefinition, ExpressionFunctionDefinition } from '../../../expressions'; +import { VisLayers, VisLayerTypes } from '../'; const name = 'vis_layers'; @@ -31,3 +31,17 @@ export const visLayers: ExpressionTypeDefinition = { }, }, }; + +export type VisLayerFunctionDefinition = ExpressionFunctionDefinition< + string, + ExprVisLayers, + any, + Promise +>; + +export interface VisLayerExpressionFn { + type: keyof typeof VisLayerTypes; + name: string; + // plugin expression fns can freely set custom arguments + args: { [key: string]: any }; +} diff --git a/src/plugins/vis_augmenter/public/index.ts b/src/plugins/vis_augmenter/public/index.ts index 1e4976d21709..e374cbe8d2cf 100644 --- a/src/plugins/vis_augmenter/public/index.ts +++ b/src/plugins/vis_augmenter/public/index.ts @@ -18,14 +18,8 @@ export { SavedObjectOpenSearchDashboardsServicesWithAugmentVis, } from './saved_augment_vis'; -export { - ISavedAugmentVis, - VisLayerExpressionFn, - AugmentVisSavedObject, - VisLayerFunctionDefinition, - VisLayer, - VisLayers, -} from './types'; +export { VisLayer, VisLayers, VisLayerTypes } from './types'; export * from './expressions'; export * from './utils'; +export * from './saved_augment_vis'; diff --git a/src/plugins/vis_augmenter/public/saved_augment_vis/index.ts b/src/plugins/vis_augmenter/public/saved_augment_vis/index.ts index 5ac3a159132e..ce1680204953 100644 --- a/src/plugins/vis_augmenter/public/saved_augment_vis/index.ts +++ b/src/plugins/vis_augmenter/public/saved_augment_vis/index.ts @@ -5,3 +5,4 @@ export * from './saved_augment_vis'; export * from './utils'; +export * from './types'; diff --git a/src/plugins/vis_augmenter/public/saved_augment_vis/types.ts b/src/plugins/vis_augmenter/public/saved_augment_vis/types.ts new file mode 100644 index 000000000000..dee349cb9001 --- /dev/null +++ b/src/plugins/vis_augmenter/public/saved_augment_vis/types.ts @@ -0,0 +1,20 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { SavedObject } from '../../../saved_objects/public'; +import { VisLayerExpressionFn } from '../expressions'; + +export interface ISavedAugmentVis { + id?: string; + title: string; + description?: string; + pluginResourceId: string; + visName?: string; + visId?: string; + visLayerExpressionFn: VisLayerExpressionFn; + version?: number; +} + +export interface AugmentVisSavedObject extends SavedObject, ISavedAugmentVis {} diff --git a/src/plugins/vis_augmenter/public/types.ts b/src/plugins/vis_augmenter/public/types.ts index 78e812ba53fc..920a8db02843 100644 --- a/src/plugins/vis_augmenter/public/types.ts +++ b/src/plugins/vis_augmenter/public/types.ts @@ -3,9 +3,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SavedObject } from '../../saved_objects/public'; -import { ExpressionFunctionDefinition } from '../../expressions'; - export enum VisLayerTypes { PointInTimeEvents = 'PointInTimeEvents', } @@ -48,34 +45,3 @@ export const isPointInTimeEventsVisLayer = (obj: any) => { export const isValidVisLayer = (obj: any) => { return obj?.type in VisLayerTypes; }; - -export interface ISavedAugmentVis { - id?: string; - title: string; - description?: string; - pluginResourceId: string; - visName?: string; - visId?: string; - visLayerExpressionFn: VisLayerExpressionFn; - version?: number; -} - -export interface VisLayerExpressionFn { - type: keyof typeof VisLayerTypes; - name: string; - // plugin expression fns can freely set custom arguments - args: { [key: string]: any }; -} - -export interface AugmentVisSavedObject extends SavedObject, ISavedAugmentVis {} - -export interface VisLayerResponseValue { - visLayers: object; -} - -export type VisLayerFunctionDefinition = ExpressionFunctionDefinition< - string, - VisLayerResponseValue, - any, - Promise ->; diff --git a/src/plugins/vis_augmenter/public/utils/utils.ts b/src/plugins/vis_augmenter/public/utils/utils.ts index efac67f6e793..e556f5c2a318 100644 --- a/src/plugins/vis_augmenter/public/utils/utils.ts +++ b/src/plugins/vis_augmenter/public/utils/utils.ts @@ -19,6 +19,11 @@ export const isEligibleForVisLayers = (vis: Vis): boolean => { return vis.params.type === 'line'; }; +/** + * Using a SavedAugmentVisLoader, fetch all saved objects that are of 'augment-vis' type + * and filter out to return the ones associated to the particular vis via + * matching vis ID. + */ export const getAugmentVisSavedObjs = async ( visId: string | undefined, loader: SavedAugmentVisLoader | undefined @@ -32,6 +37,13 @@ export const getAugmentVisSavedObjs = async ( } }; +/** + * Given an array of augment-vis saved objects that contain expression function details, + * construct a pipeline that will execute each of these expression functions. + * Note that the order does not matter; each expression function should be taking + * in the current output and appending its results to it, such that the end result + * contains the results from each expression function that was ran. + */ export const buildPipelineFromAugmentVisSavedObjs = (objs: ISavedAugmentVis[]): string => { const visLayerExpressionFns = [] as Array< ExpressionAstFunctionBuilder diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts index d8bb68417dc9..580094fd1756 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts @@ -417,7 +417,7 @@ export class VisualizeEmbeddable timefilter: this.timefilter, timeRange: this.timeRange, abortSignal: this.abortController!.signal, - visLayers: !isEmpty(exprVisLayers) ? exprVisLayers.layers : ([] as VisLayers), + visLayers: isEmpty(exprVisLayers) ? ([] as VisLayers) : exprVisLayers.layers, }); if (this.handler && !abortController.signal.aborted) {