From 62d1d159d9f77d1e0297b7eae5bea2628f003d7c Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Tue, 4 Oct 2022 12:01:55 +0300 Subject: [PATCH 01/18] Added support of metric. --- .../metric_vis_function.ts | 1 + .../common/types/expression_functions.ts | 1 + .../metric_vis_renderer.tsx | 9 +- src/plugins/vis_types/metric/kibana.json | 15 +++- .../convert_to_lens/configurations/index.ts | 38 ++++++++ .../convert_to_lens/configurations/palette.ts | 65 ++++++++++++++ .../metric/public/convert_to_lens/index.ts | 88 +++++++++++++++++++ .../metric/public/convert_to_lens/types.ts | 17 ++++ .../metric/public/metric_vis_type.ts | 7 ++ src/plugins/vis_types/metric/public/plugin.ts | 15 +++- .../vis_types/metric/public/services.ts | 13 +++ 11 files changed, 261 insertions(+), 8 deletions(-) create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.ts create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/index.ts create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/types.ts create mode 100644 src/plugins/vis_types/metric/public/services.ts diff --git a/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/metric_vis_function.ts b/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/metric_vis_function.ts index 8ec638d139bff..a7d655107fc2d 100644 --- a/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/metric_vis_function.ts +++ b/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/metric_vis_function.ts @@ -200,6 +200,7 @@ export const metricVisFunction = (): MetricVisExpressionFunctionDefinition => ({ ...(args.bucket ? { bucket: args.bucket } : {}), }, }, + canNavigateToLens: Boolean(handlers?.variables?.canNavigateToLens), }, }; }, diff --git a/src/plugins/chart_expressions/expression_legacy_metric/common/types/expression_functions.ts b/src/plugins/chart_expressions/expression_legacy_metric/common/types/expression_functions.ts index 0c7c0331975e8..f0a63b012dc0a 100644 --- a/src/plugins/chart_expressions/expression_legacy_metric/common/types/expression_functions.ts +++ b/src/plugins/chart_expressions/expression_legacy_metric/common/types/expression_functions.ts @@ -38,6 +38,7 @@ export interface MetricVisRenderConfig { visType: typeof visType; visData: Datatable; visConfig: Pick; + canNavigateToLens: boolean; } export type MetricVisExpressionFunctionDefinition = ExpressionFunctionDefinition< diff --git a/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx b/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx index 798bc62938ca1..456a7f9cbf8a4 100644 --- a/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx +++ b/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx @@ -67,7 +67,7 @@ export const getMetricVisRenderer: ( name: EXPRESSION_METRIC_NAME, displayName: 'metric visualization', reuseDomNode: true, - render: async (domNode, { visData, visConfig }, handlers) => { + render: async (domNode, { visData, visConfig, canNavigateToLens }, handlers) => { const { core, plugins } = getStartDeps(); handlers.onDestroy(() => { @@ -82,9 +82,12 @@ export const getMetricVisRenderer: ( const visualizationType = extractVisualizationType(executionContext); if (containerType && visualizationType) { - plugins.usageCollection?.reportUiCounter(containerType, METRIC_TYPE.COUNT, [ + const events = [ `render_${visualizationType}_legacy_metric`, - ]); + canNavigateToLens ? `render_${visualizationType}_legacy_metric_convertable` : undefined, + ].filter((event): event is string => Boolean(event)); + + plugins.usageCollection?.reportUiCounter(containerType, METRIC_TYPE.COUNT, events); } handlers.done(); diff --git a/src/plugins/vis_types/metric/kibana.json b/src/plugins/vis_types/metric/kibana.json index ab69f78430338..4d8f776d2a0bb 100644 --- a/src/plugins/vis_types/metric/kibana.json +++ b/src/plugins/vis_types/metric/kibana.json @@ -4,11 +4,20 @@ "kibanaVersion": "kibana", "server": true, "ui": true, - "requiredPlugins": ["data", "visualizations", "charts", "expressions"], - "requiredBundles": ["visDefaultEditor"], + "requiredPlugins": [ + "data", + "visualizations", + "charts", + "expressions", + "dataViews" + ], + "requiredBundles": [ + "visDefaultEditor", + "kibanaUtils" + ], "owner": { "name": "Vis Editors", "githubTeam": "kibana-vis-editors" }, "description": "Registers the Metric aggregation-based visualization." -} +} \ No newline at end of file diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts new file mode 100644 index 0000000000000..9303be0c25d3d --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Column, MetricVisConfiguration } from '@kbn/visualizations-plugin/common'; +import { VisParams } from '../../types'; +import { getPalette } from './palette'; + +export const getConfiguration = ( + layerId: string, + params: VisParams, + { + metrics, + buckets, + columnsWithoutReferenced, + bucketCollapseFn, + }: { + metrics: string[]; + buckets: string[]; + columnsWithoutReferenced: Column[]; + bucketCollapseFn?: Record; + } +): MetricVisConfiguration => { + const [metricAccessor] = metrics; + const [breakdownByAccessor] = buckets; + return { + layerId, + layerType: 'data', + palette: getPalette(params), + metricAccessor, + breakdownByAccessor, + collapseFn: Object.values(bucketCollapseFn ?? {})[0], + }; +}; diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.ts new file mode 100644 index 0000000000000..360de60199efa --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import color from 'color'; +import { CustomPaletteParams, PaletteOutput } from '@kbn/coloring'; +import { VisParams } from '../../types'; +import { getStopsWithColorsFromRanges } from '../../utils'; +import { PaletteConfig } from '../../utils/palette'; + +type ColorStopsWithMinMax = Pick< + CustomPaletteParams, + 'colorStops' | 'stops' | 'steps' | 'rangeMax' | 'rangeMin' | 'continuity' +>; + +const buildPaletteParams = ({ color: colors, stop }: PaletteConfig): ColorStopsWithMinMax => { + const colorsWithoutStartColor = colors.slice(1, colors.length); + return { + rangeMin: stop[0], + rangeMax: stop[stop.length - 1], + continuity: 'none', + colorStops: colorsWithoutStartColor.map((c, index) => ({ + color: color(c!).hex(), + stop: stop[index], + })), + stops: colorsWithoutStartColor.map((c, index) => ({ + color: color(c!).hex(), + stop: stop[index + 1], + })), + }; +}; + +const buildCustomPalette = ( + colorStopsWithMinMax: ColorStopsWithMinMax +): PaletteOutput => { + return { + name: 'custom', + params: { + maxSteps: 5, + name: 'custom', + progression: 'fixed', + rangeMax: Infinity, + rangeMin: -Infinity, + rangeType: 'number', + reverse: false, + ...colorStopsWithMinMax, + }, + type: 'palette', + }; +}; + +export const getPalette = (params: VisParams): PaletteOutput | undefined => { + const { colorSchema, colorsRange, invertColors, metricColorMode } = params.metric; + + if (metricColorMode === 'None' || !(colorsRange && colorsRange.length)) { + return; + } + + const stopsWithColors = getStopsWithColorsFromRanges(colorsRange, colorSchema, invertColors); + return buildCustomPalette(buildPaletteParams(stopsWithColors)); +}; diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/index.ts new file mode 100644 index 0000000000000..23c19f8fffc72 --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/index.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Column, ColumnWithMeta } from '@kbn/visualizations-plugin/common'; +import { + convertToLensModule, + getDataViewByIndexPatternId, +} from '@kbn/visualizations-plugin/public'; +import uuid from 'uuid'; +import { getDataViewsStart } from '../services'; +import { getConfiguration } from './configurations'; +import { ConvertMetricVisToLensVisualization } from './types'; + +export const isColumnWithMeta = (column: Column): column is ColumnWithMeta => { + if ((column as ColumnWithMeta).meta) { + return true; + } + return false; +}; + +export const excludeMetaFromColumn = (column: Column) => { + if (isColumnWithMeta(column)) { + const { meta, ...rest } = column; + return rest; + } + return column; +}; + +export const convertToLens: ConvertMetricVisToLensVisualization = async (vis, timefilter) => { + if (!timefilter) { + return null; + } + + const dataViews = getDataViewsStart(); + const dataView = await getDataViewByIndexPatternId(vis.data.indexPattern?.id, dataViews); + + if (!dataView) { + return null; + } + + const { getColumnsFromVis } = await convertToLensModule; + const result = getColumnsFromVis( + vis, + timefilter, + dataView, + { + splits: ['group'], + }, + { dropEmptyRowsInDateHistogram: true } + ); + + if (result === null) { + return null; + } + + // for now, multiple metrics are not supported + if (result.metrics.length > 1 || result.buckets.length > 1) { + return null; + } + + if (result.metrics[0]) { + const metric = result.columns.find(({ columnId }) => columnId === result.metrics[0]); + if (metric?.dataType !== 'number') { + return null; + } + } + const layerId = uuid(); + const indexPatternId = dataView.id!; + + return { + type: 'lnsMetric', + layers: [ + { + indexPatternId, + layerId, + columns: result.columns.map(excludeMetaFromColumn), + columnOrder: [], + }, + ], + configuration: getConfiguration(layerId, vis.params, result), + indexPatternIds: [indexPatternId], + }; +}; diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/types.ts b/src/plugins/vis_types/metric/public/convert_to_lens/types.ts new file mode 100644 index 0000000000000..3676c9dee8d9d --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/types.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { TimefilterContract } from '@kbn/data-plugin/public'; +import { NavigateToLensContext, MetricVisConfiguration } from '@kbn/visualizations-plugin/common'; +import { Vis } from '@kbn/visualizations-plugin/public'; +import { VisParams } from '../types'; + +export type ConvertMetricVisToLensVisualization = ( + vis: Vis, + timefilter?: TimefilterContract +) => Promise | null>; diff --git a/src/plugins/vis_types/metric/public/metric_vis_type.ts b/src/plugins/vis_types/metric/public/metric_vis_type.ts index 30e13e8605b6d..b39cde5e07fc4 100644 --- a/src/plugins/vis_types/metric/public/metric_vis_type.ts +++ b/src/plugins/vis_types/metric/public/metric_vis_type.ts @@ -13,6 +13,7 @@ import { AggGroupNames } from '@kbn/data-plugin/public'; import { MetricVisOptions } from './components'; import { toExpressionAst } from './to_ast'; import { VisParams } from './types'; +import { convertToLens } from './convert_to_lens'; export const createMetricVisTypeDefinition = (): VisTypeDefinition => ({ name: 'metric', @@ -103,4 +104,10 @@ export const createMetricVisTypeDefinition = (): VisTypeDefinition => ], }, requiresSearch: true, + navigateToLens: async (vis, timefilter) => (vis ? convertToLens(vis, timefilter) : null), + getExpressionVariables: async (vis, timeFilter) => { + return { + canNavigateToLens: Boolean(vis?.params ? await convertToLens(vis, timeFilter) : null), + }; + }, }); diff --git a/src/plugins/vis_types/metric/public/plugin.ts b/src/plugins/vis_types/metric/public/plugin.ts index 9e79d1d23efda..bf8b8af0bddda 100644 --- a/src/plugins/vis_types/metric/public/plugin.ts +++ b/src/plugins/vis_types/metric/public/plugin.ts @@ -8,8 +8,10 @@ import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import { VisualizationsSetup } from '@kbn/visualizations-plugin/public'; +import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import { createMetricVisTypeDefinition } from './metric_vis_type'; import { ConfigSchema } from '../config'; +import { setDataViewsStart } from './services'; /** @internal */ export interface MetricVisPluginSetupDependencies { @@ -17,7 +19,14 @@ export interface MetricVisPluginSetupDependencies { } /** @internal */ -export class MetricVisPlugin implements Plugin { +export interface MetricVisPluginStartDependencies { + dataViews: DataViewsPublicPluginStart; +} + +/** @internal */ +export class MetricVisPlugin + implements Plugin +{ initializerContext: PluginInitializerContext; constructor(initializerContext: PluginInitializerContext) { @@ -28,5 +37,7 @@ export class MetricVisPlugin implements Plugin { visualizations.createBaseVisualization(createMetricVisTypeDefinition()); } - public start(core: CoreStart) {} + public start(core: CoreStart, { dataViews }: MetricVisPluginStartDependencies) { + setDataViewsStart(dataViews); + } } diff --git a/src/plugins/vis_types/metric/public/services.ts b/src/plugins/vis_types/metric/public/services.ts new file mode 100644 index 0000000000000..736ad70d49419 --- /dev/null +++ b/src/plugins/vis_types/metric/public/services.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; +import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; + +export const [getDataViewsStart, setDataViewsStart] = + createGetterSetter('dataViews'); From 92972c0e941833db394f592b23e05f3e1979bd47 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Tue, 4 Oct 2022 12:46:57 +0300 Subject: [PATCH 02/18] Fixed bundle size. --- src/plugins/vis_types/metric/public/convert_to_lens/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/index.ts index 23c19f8fffc72..8458dc7f7dfd3 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/index.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/index.ts @@ -13,7 +13,6 @@ import { } from '@kbn/visualizations-plugin/public'; import uuid from 'uuid'; import { getDataViewsStart } from '../services'; -import { getConfiguration } from './configurations'; import { ConvertMetricVisToLensVisualization } from './types'; export const isColumnWithMeta = (column: Column): column is ColumnWithMeta => { @@ -69,9 +68,12 @@ export const convertToLens: ConvertMetricVisToLensVisualization = async (vis, ti return null; } } + const layerId = uuid(); const indexPatternId = dataView.id!; + const { getConfiguration } = await import('./configurations'); + return { type: 'lnsMetric', layers: [ From ee60eca125231f6ee98b3540aba06fec828c0297 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Tue, 4 Oct 2022 17:25:36 +0300 Subject: [PATCH 03/18] Added percentage mode. --- .../convert_to_lens/configurations/index.ts | 13 +++++ .../metric/public/convert_to_lens/index.ts | 10 ++-- .../convert_to_lens/lib/convert/column.ts | 2 +- .../convert_to_lens/lib/metrics/metrics.ts | 54 +++++++++++++++++-- .../common/convert_to_lens/types/common.ts | 9 ++++ .../public/convert_to_lens/schemas.ts | 17 +++--- 6 files changed, 88 insertions(+), 17 deletions(-) diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts index 9303be0c25d3d..ad68dd5e263b6 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts @@ -7,9 +7,22 @@ */ import { Column, MetricVisConfiguration } from '@kbn/visualizations-plugin/common'; +import { PercentageModeConfig } from '@kbn/visualizations-plugin/common/convert_to_lens'; import { VisParams } from '../../types'; import { getPalette } from './palette'; +export const getPercentageModeConfig = (params: VisParams): PercentageModeConfig => { + if (!params.metric.percentageMode || params.metric.metricColorMode === 'None') { + return { isPercentageColumn: params.metric.percentageMode }; + } + const { colorsRange } = params.metric; + return { + isPercentageColumn: true, + min: colorsRange[0].from, + max: colorsRange[colorsRange.length - 1].to, + }; +}; + export const getConfiguration = ( layerId: string, params: VisParams, diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/index.ts index 8458dc7f7dfd3..7675cbcc1d714 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/index.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/index.ts @@ -42,7 +42,11 @@ export const convertToLens: ConvertMetricVisToLensVisualization = async (vis, ti return null; } - const { getColumnsFromVis } = await convertToLensModule; + const [{ getColumnsFromVis }, { getConfiguration, getPercentageModeConfig }] = await Promise.all([ + convertToLensModule, + import('./configurations'), + ]); + const result = getColumnsFromVis( vis, timefilter, @@ -50,7 +54,7 @@ export const convertToLens: ConvertMetricVisToLensVisualization = async (vis, ti { splits: ['group'], }, - { dropEmptyRowsInDateHistogram: true } + { dropEmptyRowsInDateHistogram: true, ...getPercentageModeConfig(vis.params) } ); if (result === null) { @@ -72,8 +76,6 @@ export const convertToLens: ConvertMetricVisToLensVisualization = async (vis, ti const layerId = uuid(); const indexPatternId = dataView.id!; - const { getConfiguration } = await import('./configurations'); - return { type: 'lnsMetric', layers: [ diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/convert/column.ts b/src/plugins/visualizations/common/convert_to_lens/lib/convert/column.ts index b1ac46dd36a20..7fe98b9f7ec65 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/convert/column.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/convert/column.ts @@ -25,7 +25,7 @@ export const createColumn = ( { isBucketed = false, isSplit = false, reducedTimeRange }: ExtraColumnFields = {} ): GeneralColumnWithMeta => ({ columnId: uuid(), - dataType: (field?.type as DataType) ?? undefined, + dataType: (field?.type as DataType) ?? 'number', label: getLabel(agg), isBucketed, isSplit, diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts index d97f81c4c8240..41ada79f38fed 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts @@ -8,7 +8,7 @@ import { METRIC_TYPES } from '@kbn/data-plugin/common'; import type { DataView } from '@kbn/data-views-plugin/common'; -import { SchemaConfig } from '../../..'; +import { MinMax, PercentageModeConfig, SchemaConfig } from '../../..'; import { convertMetricAggregationColumnWithoutSpecialParams, convertToOtherParentPipelineAggColumns, @@ -19,20 +19,66 @@ import { convertToLastValueColumn, convertToCumulativeSumAggColumn, AggBasedColumn, + ExtendedColumnConverterArgs, + createFormulaColumn, } from '../convert'; import { SUPPORTED_METRICS } from '../convert/supported_metrics'; import { getValidColumns } from '../utils'; +import { getFormulaForAgg } from './formula'; + +const getPercentageFormulaOverRange = (formula: string, { min, max }: MinMax) => + `((${formula}) - ${min}) / (${max} - ${min})`; + +// Lens is multiplying by 100, so, it is necessary to disable that operation. +const getPercentageFormula = (formula: string) => `(${formula}) / 10000`; + +const convertToColumnInPercentageMode = ( + columnConverterArgs: ExtendedColumnConverterArgs, + minMax: MinMax | {} +) => { + const formula = getFormulaForAgg(columnConverterArgs); + if (formula === null) { + return null; + } + + const percentageModeFormula = isMinMax(minMax) + ? getPercentageFormulaOverRange(formula, minMax) + : getPercentageFormula(formula); + const column = createFormulaColumn(percentageModeFormula, columnConverterArgs.agg); + if (column === null) { + return null; + } + return { + ...column, + params: { ...column?.params, format: { id: 'percent' } }, + }; +}; + +const isMinMax = (minMax: MinMax | {}): minMax is MinMax => { + if ((minMax as MinMax).min !== undefined && (minMax as MinMax).max !== undefined) { + return true; + } + return false; +}; export const convertMetricToColumns = ( - agg: SchemaConfig, + agg: SchemaConfig, dataView: DataView, - aggs: Array> + aggs: Array>, + percentageModeConfig: PercentageModeConfig ): AggBasedColumn[] | null => { const supportedAgg = SUPPORTED_METRICS[agg.aggType]; if (!supportedAgg) { return null; } + if (percentageModeConfig.isPercentageColumn) { + const { isPercentageColumn, ...minMax } = percentageModeConfig; + + const formulaColumn = convertToColumnInPercentageMode({ agg, dataView, aggs }, minMax); + return getValidColumns(formulaColumn); + } + switch (agg.aggType) { case METRIC_TYPES.AVG: case METRIC_TYPES.MIN: @@ -119,8 +165,6 @@ export const convertMetricToColumns = ( }); return getValidColumns(columns); } - case METRIC_TYPES.SERIAL_DIFF: - return null; default: return null; } diff --git a/src/plugins/visualizations/common/convert_to_lens/types/common.ts b/src/plugins/visualizations/common/convert_to_lens/types/common.ts index d792467e298d0..8daa9889b04d3 100644 --- a/src/plugins/visualizations/common/convert_to_lens/types/common.ts +++ b/src/plugins/visualizations/common/convert_to_lens/types/common.ts @@ -45,3 +45,12 @@ export interface NumberValueFormat { suffix?: string; }; } + +export interface MinMax { + min: number; + max: number; +} + +export type PercentageModeConfig = + | ({ isPercentageColumn: true } & MinMax) + | { isPercentageColumn: boolean }; diff --git a/src/plugins/visualizations/public/convert_to_lens/schemas.ts b/src/plugins/visualizations/public/convert_to_lens/schemas.ts index 56108b1a1d63f..06c28455edfcf 100644 --- a/src/plugins/visualizations/public/convert_to_lens/schemas.ts +++ b/src/plugins/visualizations/public/convert_to_lens/schemas.ts @@ -8,7 +8,7 @@ import type { DataView } from '@kbn/data-views-plugin/common'; import { METRIC_TYPES, TimefilterContract } from '@kbn/data-plugin/public'; -import { AggBasedColumn, SchemaConfig } from '../../common'; +import { AggBasedColumn, PercentageModeConfig, SchemaConfig } from '../../common'; import { convertMetricToColumns } from '../../common/convert_to_lens/lib/metrics'; import { convertBucketToColumns } from '../../common/convert_to_lens/lib/buckets'; import { getCustomBucketsFromSiblingAggs } from '../../common/convert_to_lens/lib/utils'; @@ -46,8 +46,11 @@ export const getColumnsFromVis = ( } = {}, config?: { dropEmptyRowsInDateHistogram?: boolean; - } + } & (PercentageModeConfig | void) ) => { + const { dropEmptyRowsInDateHistogram, ...percentageModeConfig } = config ?? { + isPercentageColumn: false, + }; const visSchemas = getVisSchemas(vis, { timefilter, timeRange: timefilter.getAbsoluteTime(), @@ -67,8 +70,8 @@ export const getColumnsFromVis = ( const metricsWithoutDuplicates = getMetricsWithoutDuplicates(visSchemas.metric); const aggs = metricsWithoutDuplicates as Array>; - const metricColumns = metricsWithoutDuplicates.flatMap((m) => - convertMetricToColumns(m, dataView, aggs) + const metricColumns = aggs.flatMap((m) => + convertMetricToColumns(m, dataView, aggs, percentageModeConfig) ); if (metricColumns.includes(null)) { @@ -81,7 +84,7 @@ export const getColumnsFromVis = ( const customBucketColumn = convertBucketToColumns( { agg: customBuckets[0], dataView, metricColumns: metrics, aggs }, false, - config?.dropEmptyRowsInDateHistogram + dropEmptyRowsInDateHistogram ); if (!customBucketColumn) { return null; @@ -95,7 +98,7 @@ export const getColumnsFromVis = ( dataView, false, metricColumns as AggBasedColumn[], - config?.dropEmptyRowsInDateHistogram + dropEmptyRowsInDateHistogram ); if (!bucketColumns) { return null; @@ -107,7 +110,7 @@ export const getColumnsFromVis = ( dataView, true, metricColumns as AggBasedColumn[], - config?.dropEmptyRowsInDateHistogram + dropEmptyRowsInDateHistogram ); if (!splitBucketColumns) { return null; From dc539fce5f07cb72d2184d64dee8773ae3bee58d Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 10:05:36 +0300 Subject: [PATCH 04/18] Added fix of snapshot. --- .../__snapshots__/metric_vis_function.test.ts.snap | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/__snapshots__/metric_vis_function.test.ts.snap b/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/__snapshots__/metric_vis_function.test.ts.snap index 9a7a7d5a5035c..defaca87fad1c 100644 --- a/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/__snapshots__/metric_vis_function.test.ts.snap +++ b/src/plugins/chart_expressions/expression_legacy_metric/common/expression_functions/__snapshots__/metric_vis_function.test.ts.snap @@ -26,6 +26,7 @@ Object { "as": "legacyMetricVis", "type": "render", "value": Object { + "canNavigateToLens": false, "visConfig": Object { "dimensions": Object { "metrics": Array [ From 24acad58d0ba16da3b904a8af2ba75f3acf39bbc Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 10:15:22 +0300 Subject: [PATCH 05/18] Fixed convertMetricToColumns tests. --- .../lib/metrics/metrics.test.ts | 322 +++++++++++++++--- 1 file changed, 276 insertions(+), 46 deletions(-) diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts index 659ab80ea03d5..ef33f140601e8 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts @@ -56,145 +56,265 @@ describe('convertMetricToColumns invalid cases', () => { test.each<[string, Parameters, null, jest.Mock | undefined]>([ [ 'null if agg is not supported', - [{ aggType: METRIC_TYPES.GEO_BOUNDS } as unknown as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.GEO_BOUNDS } as unknown as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, undefined, ], [ 'null if supported agg AVG is not valid', - [{ aggType: METRIC_TYPES.AVG } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.AVG } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg MIN is not valid', - [{ aggType: METRIC_TYPES.MIN } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MIN } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg MAX is not valid', - [{ aggType: METRIC_TYPES.MAX } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MAX } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg SUM is not valid', - [{ aggType: METRIC_TYPES.SUM } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SUM } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg COUNT is not valid', - [{ aggType: METRIC_TYPES.COUNT } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.COUNT } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg CARDINALITY is not valid', - [{ aggType: METRIC_TYPES.CARDINALITY } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.CARDINALITY } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg VALUE_COUNT is not valid', - [{ aggType: METRIC_TYPES.VALUE_COUNT } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.VALUE_COUNT } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg MEDIAN is not valid', - [{ aggType: METRIC_TYPES.MEDIAN } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MEDIAN } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'null if supported agg STD_DEV is not valid', - [{ aggType: METRIC_TYPES.STD_DEV } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.STD_DEV } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToStdDeviationFormulaColumns, ], [ 'null if supported agg PERCENTILES is not valid', - [{ aggType: METRIC_TYPES.PERCENTILES } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.PERCENTILES } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToPercentileColumn, ], [ 'null if supported agg SINGLE_PERCENTILE is not valid', - [{ aggType: METRIC_TYPES.SINGLE_PERCENTILE } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SINGLE_PERCENTILE } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToPercentileColumn, ], [ 'null if supported agg PERCENTILE_RANKS is not valid', - [{ aggType: METRIC_TYPES.PERCENTILE_RANKS } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.PERCENTILE_RANKS } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToPercentileRankColumn, ], [ 'null if supported agg SINGLE_PERCENTILE_RANK is not valid', - [{ aggType: METRIC_TYPES.SINGLE_PERCENTILE_RANK } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SINGLE_PERCENTILE_RANK } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToPercentileRankColumn, ], [ 'null if supported agg TOP_HITS is not valid', - [{ aggType: METRIC_TYPES.TOP_HITS } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.TOP_HITS } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToLastValueColumn, ], [ 'null if supported agg TOP_METRICS is not valid', - [{ aggType: METRIC_TYPES.TOP_METRICS } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.TOP_METRICS } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToLastValueColumn, ], [ 'null if supported agg CUMULATIVE_SUM is not valid', - [{ aggType: METRIC_TYPES.CUMULATIVE_SUM } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.CUMULATIVE_SUM } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToCumulativeSumAggColumn, ], [ 'null if supported agg DERIVATIVE is not valid', - [{ aggType: METRIC_TYPES.DERIVATIVE } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.DERIVATIVE } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToOtherParentPipelineAggColumns, ], [ 'null if supported agg MOVING_FN is not valid', - [{ aggType: METRIC_TYPES.MOVING_FN } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MOVING_FN } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToOtherParentPipelineAggColumns, ], [ 'null if supported agg SUM_BUCKET is not valid', - [{ aggType: METRIC_TYPES.SUM_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SUM_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToSiblingPipelineColumns, ], [ 'null if supported agg MIN_BUCKET is not valid', - [{ aggType: METRIC_TYPES.MIN_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MIN_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToSiblingPipelineColumns, ], [ 'null if supported agg MAX_BUCKET is not valid', - [{ aggType: METRIC_TYPES.MAX_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MAX_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToSiblingPipelineColumns, ], [ 'null if supported agg AVG_BUCKET is not valid', - [{ aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, mockConvertToSiblingPipelineColumns, ], [ 'null if supported agg SERIAL_DIFF is not valid', - [{ aggType: METRIC_TYPES.SERIAL_DIFF } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SERIAL_DIFF } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], null, undefined, ], @@ -229,133 +349,243 @@ describe('convertMetricToColumns valid cases', () => { test.each<[string, Parameters, Array<{}>, jest.Mock]>([ [ 'array of columns if supported agg AVG is valid', - [{ aggType: METRIC_TYPES.AVG } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.AVG } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg MIN is valid', - [{ aggType: METRIC_TYPES.MIN } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MIN } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg MAX is valid', - [{ aggType: METRIC_TYPES.MAX } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MAX } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg SUM is valid', - [{ aggType: METRIC_TYPES.SUM } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SUM } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg COUNT is valid', - [{ aggType: METRIC_TYPES.COUNT } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.COUNT } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg CARDINALITY is valid', - [{ aggType: METRIC_TYPES.CARDINALITY } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.CARDINALITY } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg VALUE_COUNT is valid', - [{ aggType: METRIC_TYPES.VALUE_COUNT } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.VALUE_COUNT } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg MEDIAN is valid', - [{ aggType: METRIC_TYPES.MEDIAN } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MEDIAN } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, ], [ 'array of columns if supported agg STD_DEV is valid', - [{ aggType: METRIC_TYPES.STD_DEV } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.STD_DEV } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToStdDeviationFormulaColumns, ], [ 'array of columns if supported agg PERCENTILES is valid', - [{ aggType: METRIC_TYPES.PERCENTILES } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.PERCENTILES } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToPercentileColumn, ], [ 'array of columns if supported agg SINGLE_PERCENTILE is valid', - [{ aggType: METRIC_TYPES.SINGLE_PERCENTILE } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SINGLE_PERCENTILE } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToPercentileColumn, ], [ 'array of columns if supported agg PERCENTILE_RANKS is valid', - [{ aggType: METRIC_TYPES.PERCENTILE_RANKS } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.PERCENTILE_RANKS } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToPercentileRankColumn, ], [ 'array of columns if supported agg SINGLE_PERCENTILE_RANK is valid', - [{ aggType: METRIC_TYPES.SINGLE_PERCENTILE_RANK } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SINGLE_PERCENTILE_RANK } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToPercentileRankColumn, ], [ 'array of columns if supported agg TOP_HITS is valid', - [{ aggType: METRIC_TYPES.TOP_HITS } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.TOP_HITS } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToLastValueColumn, ], [ 'array of columns if supported agg TOP_METRICS is valid', - [{ aggType: METRIC_TYPES.TOP_METRICS } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.TOP_METRICS } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToLastValueColumn, ], [ 'array of columns if supported agg CUMULATIVE_SUM is valid', - [{ aggType: METRIC_TYPES.CUMULATIVE_SUM } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.CUMULATIVE_SUM } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToCumulativeSumAggColumn, ], [ 'array of columns if supported agg DERIVATIVE is valid', - [{ aggType: METRIC_TYPES.DERIVATIVE } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.DERIVATIVE } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToOtherParentPipelineAggColumns, ], [ 'array of columns if supported agg MOVING_FN is valid', - [{ aggType: METRIC_TYPES.MOVING_FN } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MOVING_FN } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToOtherParentPipelineAggColumns, ], [ 'array of columns if supported agg SUM_BUCKET is valid', - [{ aggType: METRIC_TYPES.SUM_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.SUM_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToSiblingPipelineColumns, ], [ 'array of columns if supported agg MIN_BUCKET is valid', - [{ aggType: METRIC_TYPES.MIN_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MIN_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToSiblingPipelineColumns, ], [ 'array of columns if supported agg MAX_BUCKET is valid', - [{ aggType: METRIC_TYPES.MAX_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.MAX_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToSiblingPipelineColumns, ], [ 'array of columns if supported agg AVG_BUCKET is valid', - [{ aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, dataView, []], + [ + { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: false }, + ], result, mockConvertToSiblingPipelineColumns, ], From ae47b7d0b1b45918f8e7c6462e5a97527d0da6c2 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 10:31:02 +0300 Subject: [PATCH 06/18] Added tests for percentageMode enabled in convertMetricToColumns --- .../convert_to_lens/lib/convert/index.ts | 1 + .../lib/convert/percentage_mode.ts | 49 +++++++++++++++++++ .../lib/metrics/metrics.test.ts | 25 ++++++++++ .../convert_to_lens/lib/metrics/metrics.ts | 41 +--------------- 4 files changed, 77 insertions(+), 39 deletions(-) create mode 100644 src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/convert/index.ts b/src/plugins/visualizations/common/convert_to_lens/lib/convert/index.ts index b77ea6b97209a..9da33607be2a9 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/convert/index.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/convert/index.ts @@ -20,3 +20,4 @@ export * from './terms'; export * from './types'; export * from './last_value'; export * from './range'; +export * from './percentage_mode'; diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts b/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts new file mode 100644 index 0000000000000..682dd6aff8148 --- /dev/null +++ b/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { METRIC_TYPES } from '@kbn/data-plugin/common'; +import { MinMax } from '../../types'; +import { getFormulaForAgg } from '../metrics/formula'; +import { createFormulaColumn } from './formula'; +import { ExtendedColumnConverterArgs } from './types'; + +const getPercentageFormulaOverRange = (formula: string, { min, max }: MinMax) => + `((${formula}) - ${min}) / (${max} - ${min})`; + +// Lens is multiplying by 100, so, it is necessary to disable that operation. +const getPercentageFormula = (formula: string) => `(${formula}) / 10000`; + +const isMinMax = (minMax: MinMax | {}): minMax is MinMax => { + if ((minMax as MinMax).min !== undefined && (minMax as MinMax).max !== undefined) { + return true; + } + return false; +}; + +export const convertToColumnInPercentageMode = ( + columnConverterArgs: ExtendedColumnConverterArgs, + minMax: MinMax | {} +) => { + const formula = getFormulaForAgg(columnConverterArgs); + if (formula === null) { + return null; + } + + const percentageModeFormula = isMinMax(minMax) + ? getPercentageFormulaOverRange(formula, minMax) + : getPercentageFormula(formula); + + const column = createFormulaColumn(percentageModeFormula, columnConverterArgs.agg); + if (column === null) { + return null; + } + return { + ...column, + params: { ...column?.params, format: { id: 'percent' } }, + }; +}; diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts index ef33f140601e8..740dc7341c324 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts @@ -19,6 +19,7 @@ const mockConvertToSiblingPipelineColumns = jest.fn(); const mockConvertToStdDeviationFormulaColumns = jest.fn(); const mockConvertToLastValueColumn = jest.fn(); const mockConvertToCumulativeSumAggColumn = jest.fn(); +const mockConvertToColumnInPercentageMode = jest.fn(); jest.mock('../convert', () => ({ convertMetricAggregationColumnWithoutSpecialParams: jest.fn(() => @@ -33,6 +34,7 @@ jest.mock('../convert', () => ({ convertToStdDeviationFormulaColumns: jest.fn(() => mockConvertToStdDeviationFormulaColumns()), convertToLastValueColumn: jest.fn(() => mockConvertToLastValueColumn()), convertToCumulativeSumAggColumn: jest.fn(() => mockConvertToCumulativeSumAggColumn()), + convertToColumnInPercentageMode: jest.fn(() => mockConvertToColumnInPercentageMode()), })); describe('convertMetricToColumns invalid cases', () => { @@ -344,6 +346,7 @@ describe('convertMetricToColumns valid cases', () => { mockConvertToStdDeviationFormulaColumns.mockReturnValue(result); mockConvertToLastValueColumn.mockReturnValue(result); mockConvertToCumulativeSumAggColumn.mockReturnValue(result); + mockConvertToColumnInPercentageMode.mockReturnValue(result); }); test.each<[string, Parameters, Array<{}>, jest.Mock]>([ @@ -589,6 +592,28 @@ describe('convertMetricToColumns valid cases', () => { result, mockConvertToSiblingPipelineColumns, ], + [ + 'column in percentage mode without range if percentageMode is enabled ', + [ + { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: true }, + ], + result, + mockConvertToColumnInPercentageMode, + ], + [ + 'column in percentage mode with range if percentageMode is enabled ', + [ + { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, + dataView, + [], + { isPercentageColumn: true, min: 0, max: 100 }, + ], + result, + mockConvertToColumnInPercentageMode, + ], ])('should return %s', (_, input, expected, mock) => { expect(convertMetricToColumns(...input)).toEqual(expected.map(expect.objectContaining)); if (mock) { diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts index 41ada79f38fed..aa88a835f3895 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts @@ -8,7 +8,7 @@ import { METRIC_TYPES } from '@kbn/data-plugin/common'; import type { DataView } from '@kbn/data-views-plugin/common'; -import { MinMax, PercentageModeConfig, SchemaConfig } from '../../..'; +import { PercentageModeConfig, SchemaConfig } from '../../..'; import { convertMetricAggregationColumnWithoutSpecialParams, convertToOtherParentPipelineAggColumns, @@ -19,47 +19,10 @@ import { convertToLastValueColumn, convertToCumulativeSumAggColumn, AggBasedColumn, - ExtendedColumnConverterArgs, - createFormulaColumn, + convertToColumnInPercentageMode, } from '../convert'; import { SUPPORTED_METRICS } from '../convert/supported_metrics'; import { getValidColumns } from '../utils'; -import { getFormulaForAgg } from './formula'; - -const getPercentageFormulaOverRange = (formula: string, { min, max }: MinMax) => - `((${formula}) - ${min}) / (${max} - ${min})`; - -// Lens is multiplying by 100, so, it is necessary to disable that operation. -const getPercentageFormula = (formula: string) => `(${formula}) / 10000`; - -const convertToColumnInPercentageMode = ( - columnConverterArgs: ExtendedColumnConverterArgs, - minMax: MinMax | {} -) => { - const formula = getFormulaForAgg(columnConverterArgs); - if (formula === null) { - return null; - } - - const percentageModeFormula = isMinMax(minMax) - ? getPercentageFormulaOverRange(formula, minMax) - : getPercentageFormula(formula); - const column = createFormulaColumn(percentageModeFormula, columnConverterArgs.agg); - if (column === null) { - return null; - } - return { - ...column, - params: { ...column?.params, format: { id: 'percent' } }, - }; -}; - -const isMinMax = (minMax: MinMax | {}): minMax is MinMax => { - if ((minMax as MinMax).min !== undefined && (minMax as MinMax).max !== undefined) { - return true; - } - return false; -}; export const convertMetricToColumns = ( agg: SchemaConfig, From b73664b2a95e3cc5c03d070b84d5b9d5b60d7b6a Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 10:37:53 +0300 Subject: [PATCH 07/18] Updated snapshots of run_pipeline/basic.ts --- .../snapshots/baseline/combined_test3.json | 2 +- .../snapshots/baseline/final_output_test.json | 2 +- .../snapshots/baseline/partial_test_2.json | 2 +- .../snapshots/baseline/step_output_test3.json | 2 +- .../snapshots/session/combined_test3.json | 2 +- .../snapshots/session/final_output_test.json | 2 +- .../snapshots/session/partial_test_2.json | 2 +- .../snapshots/session/step_output_test3.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/interpreter_functional/snapshots/baseline/combined_test3.json b/test/interpreter_functional/snapshots/baseline/combined_test3.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/baseline/combined_test3.json +++ b/test/interpreter_functional/snapshots/baseline/combined_test3.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/final_output_test.json b/test/interpreter_functional/snapshots/baseline/final_output_test.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/baseline/final_output_test.json +++ b/test/interpreter_functional/snapshots/baseline/final_output_test.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/partial_test_2.json b/test/interpreter_functional/snapshots/baseline/partial_test_2.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/baseline/partial_test_2.json +++ b/test/interpreter_functional/snapshots/baseline/partial_test_2.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/step_output_test3.json b/test/interpreter_functional/snapshots/baseline/step_output_test3.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/baseline/step_output_test3.json +++ b/test/interpreter_functional/snapshots/baseline/step_output_test3.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/combined_test3.json b/test/interpreter_functional/snapshots/session/combined_test3.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/session/combined_test3.json +++ b/test/interpreter_functional/snapshots/session/combined_test3.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/final_output_test.json b/test/interpreter_functional/snapshots/session/final_output_test.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/session/final_output_test.json +++ b/test/interpreter_functional/snapshots/session/final_output_test.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/partial_test_2.json b/test/interpreter_functional/snapshots/session/partial_test_2.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/session/partial_test_2.json +++ b/test/interpreter_functional/snapshots/session/partial_test_2.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/step_output_test3.json b/test/interpreter_functional/snapshots/session/step_output_test3.json index 49daaed3c5b85..922d266f7e187 100644 --- a/test/interpreter_functional/snapshots/session/step_output_test3.json +++ b/test/interpreter_functional/snapshots/session/step_output_test3.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},"metrics":[{"accessor":1,"format":{"id":"number","params":{}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891},{"col-0-2":"404","col-1-1":696},{"col-0-2":"503","col-1-1":417}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file From 0d247c7de08930ca94be5496f393f3f57cf08645 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 10:40:43 +0300 Subject: [PATCH 08/18] Fixed snapshots. --- .../snapshots/baseline/metric_all_data.json | 2 +- .../snapshots/baseline/metric_empty_data.json | 2 +- .../snapshots/baseline/metric_multi_metric_data.json | 2 +- .../snapshots/baseline/metric_percentage_mode.json | 2 +- .../snapshots/baseline/metric_single_metric_data.json | 2 +- .../snapshots/session/metric_all_data.json | 2 +- .../snapshots/session/metric_empty_data.json | 2 +- .../snapshots/session/metric_multi_metric_data.json | 2 +- .../snapshots/session/metric_percentage_mode.json | 2 +- .../snapshots/session/metric_single_metric_data.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/interpreter_functional/snapshots/baseline/metric_all_data.json b/test/interpreter_functional/snapshots/baseline/metric_all_data.json index 1c7a6cb857ed1..3b8553435624f 100644 --- a/test/interpreter_functional/snapshots/baseline/metric_all_data.json +++ b/test/interpreter_functional/snapshots/baseline/metric_all_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":2,"format":{"id":"bytes","params":null},"type":"vis_dimension"},"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":2,"format":{"id":"bytes","params":null},"type":"vis_dimension"},"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/metric_empty_data.json b/test/interpreter_functional/snapshots/baseline/metric_empty_data.json index 1f93a487bee2b..ef645bdb30afd 100644 --- a/test/interpreter_functional/snapshots/baseline/metric_empty_data.json +++ b/test/interpreter_functional/snapshots/baseline/metric_empty_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/metric_multi_metric_data.json b/test/interpreter_functional/snapshots/baseline/metric_multi_metric_data.json index 78135325fac66..90d572ab720f0 100644 --- a/test/interpreter_functional/snapshots/baseline/metric_multi_metric_data.json +++ b/test/interpreter_functional/snapshots/baseline/metric_multi_metric_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},{"accessor":1,"format":{"id":"number"},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},{"accessor":1,"format":{"id":"number"},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/metric_percentage_mode.json b/test/interpreter_functional/snapshots/baseline/metric_percentage_mode.json index 4ff228305a1d6..2bb96cbcb4c0a 100644 --- a/test/interpreter_functional/snapshots/baseline/metric_percentage_mode.json +++ b/test/interpreter_functional/snapshots/baseline/metric_percentage_mode.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":{"colors":["rgb(0,0,0,0)","rgb(100, 100, 100)"],"continuity":"none","gradient":false,"range":"number","rangeMax":10000,"rangeMin":0,"stops":[0,10000]},"percentageMode":true,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":{"colors":["rgb(0,0,0,0)","rgb(100, 100, 100)"],"continuity":"none","gradient":false,"range":"number","rangeMax":10000,"rangeMin":0,"stops":[0,10000]},"percentageMode":true,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/baseline/metric_single_metric_data.json b/test/interpreter_functional/snapshots/baseline/metric_single_metric_data.json index 7a91e2cae2bab..2c9c785e4ab2a 100644 --- a/test/interpreter_functional/snapshots/baseline/metric_single_metric_data.json +++ b/test/interpreter_functional/snapshots/baseline/metric_single_metric_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/metric_all_data.json b/test/interpreter_functional/snapshots/session/metric_all_data.json index 1c7a6cb857ed1..3b8553435624f 100644 --- a/test/interpreter_functional/snapshots/session/metric_all_data.json +++ b/test/interpreter_functional/snapshots/session/metric_all_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"bucket":{"accessor":2,"format":{"id":"bytes","params":null},"type":"vis_dimension"},"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"bucket":{"accessor":2,"format":{"id":"bytes","params":null},"type":"vis_dimension"},"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/metric_empty_data.json b/test/interpreter_functional/snapshots/session/metric_empty_data.json index 1f93a487bee2b..ef645bdb30afd 100644 --- a/test/interpreter_functional/snapshots/session/metric_empty_data.json +++ b/test/interpreter_functional/snapshots/session/metric_empty_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/metric_multi_metric_data.json b/test/interpreter_functional/snapshots/session/metric_multi_metric_data.json index 78135325fac66..90d572ab720f0 100644 --- a/test/interpreter_functional/snapshots/session/metric_multi_metric_data.json +++ b/test/interpreter_functional/snapshots/session/metric_multi_metric_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},{"accessor":1,"format":{"id":"number"},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"},{"accessor":1,"format":{"id":"number"},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/metric_percentage_mode.json b/test/interpreter_functional/snapshots/session/metric_percentage_mode.json index 4ff228305a1d6..2bb96cbcb4c0a 100644 --- a/test/interpreter_functional/snapshots/session/metric_percentage_mode.json +++ b/test/interpreter_functional/snapshots/session/metric_percentage_mode.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":{"colors":["rgb(0,0,0,0)","rgb(100, 100, 100)"],"continuity":"none","gradient":false,"range":"number","rangeMax":10000,"rangeMin":0,"stops":[0,10000]},"percentageMode":true,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":{"colors":["rgb(0,0,0,0)","rgb(100, 100, 100)"],"continuity":"none","gradient":false,"range":"number","rangeMax":10000,"rangeMin":0,"stops":[0,10000]},"percentageMode":true,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file diff --git a/test/interpreter_functional/snapshots/session/metric_single_metric_data.json b/test/interpreter_functional/snapshots/session/metric_single_metric_data.json index 7a91e2cae2bab..2c9c785e4ab2a 100644 --- a/test/interpreter_functional/snapshots/session/metric_single_metric_data.json +++ b/test/interpreter_functional/snapshots/session/metric_single_metric_data.json @@ -1 +1 @@ -{"as":"legacyMetricVis","type":"render","value":{"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file +{"as":"legacyMetricVis","type":"render","value":{"canNavigateToLens":false,"visConfig":{"dimensions":{"metrics":[{"accessor":0,"format":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"type":"vis_dimension"}]},"metric":{"autoScale":null,"colorFullBackground":false,"labels":{"position":"bottom","show":true,"style":{"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:24px;line-height:1","spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"24px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}},"metricColorMode":"None","palette":null,"percentageMode":false,"style":{"bgColor":false,"css":"font-family:'Open Sans', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:center;font-size:60px;line-height:1","labelColor":false,"spec":{"fontFamily":"'Open Sans', Helvetica, Arial, sans-serif","fontSize":"60px","fontStyle":"normal","fontWeight":"normal","lineHeight":"1","textAlign":"center","textDecoration":"none"},"type":"style"}}},"visData":{"columns":[{"id":"col-0-2","meta":{"field":"response.raw","index":"logstash-*","params":{"id":"terms","params":{"id":"string","missingBucketLabel":"Missing","otherBucketLabel":"Other"}},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"2","indexPatternId":"logstash-*","params":{"excludeIsRegex":true,"field":"response.raw","includeIsRegex":true,"missingBucket":false,"missingBucketLabel":"Missing","order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","size":4},"schema":"segment","type":"terms"},"type":"string"},"name":"response.raw: Descending"},{"id":"col-1-1","meta":{"field":null,"index":"logstash-*","params":{"id":"number"},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"emptyAsNull":false},"schema":"metric","type":"count"},"type":"number"},"name":"Count"},{"id":"col-2-1","meta":{"field":"bytes","index":"logstash-*","params":{"id":"bytes","params":null},"source":"esaggs","sourceParams":{"appliedTimeRange":null,"enabled":true,"hasPrecisionError":false,"id":"1","indexPatternId":"logstash-*","params":{"field":"bytes"},"schema":"metric","type":"max"},"type":"number"},"name":"Max bytes"}],"meta":{"source":"logstash-*","statistics":{"totalCount":14004},"type":"esaggs"},"rows":[{"col-0-2":"200","col-1-1":12891,"col-2-1":19986},{"col-0-2":"404","col-1-1":696,"col-2-1":19881},{"col-0-2":"503","col-1-1":417,"col-2-1":0}],"type":"datatable"},"visType":"metric"}} \ No newline at end of file From 409661e5ee59793afe1465a1c3c010f3e5881220 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 11:08:48 +0300 Subject: [PATCH 09/18] Fixed types. --- .../__stories__/metric_renderer.stories.tsx | 1 + .../table/public/convert_to_lens/index.ts | 2 +- .../convert_to_lens/lib/metrics/metrics.ts | 2 +- x-pack/plugins/fleet/cypress.config.d.ts | 3 ++ x-pack/plugins/fleet/cypress.config.js | 40 +++++++++++++++++++ x-pack/plugins/osquery/cypress.config.d.ts | 3 ++ x-pack/plugins/osquery/cypress.config.js | 38 ++++++++++++++++++ 7 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 x-pack/plugins/fleet/cypress.config.d.ts create mode 100644 x-pack/plugins/fleet/cypress.config.js create mode 100644 x-pack/plugins/osquery/cypress.config.d.ts create mode 100644 x-pack/plugins/osquery/cypress.config.js diff --git a/src/plugins/chart_expressions/expression_legacy_metric/public/__stories__/metric_renderer.stories.tsx b/src/plugins/chart_expressions/expression_legacy_metric/public/__stories__/metric_renderer.stories.tsx index 36fc6cd712f83..ba2835806f4f5 100644 --- a/src/plugins/chart_expressions/expression_legacy_metric/public/__stories__/metric_renderer.stories.tsx +++ b/src/plugins/chart_expressions/expression_legacy_metric/public/__stories__/metric_renderer.stories.tsx @@ -43,6 +43,7 @@ const style: MetricStyle = { }; const config: MetricVisRenderConfig = { + canNavigateToLens: false, visType, visData: { type: 'datatable', diff --git a/src/plugins/vis_types/table/public/convert_to_lens/index.ts b/src/plugins/vis_types/table/public/convert_to_lens/index.ts index e236c36e82a10..10db3c3bac607 100644 --- a/src/plugins/vis_types/table/public/convert_to_lens/index.ts +++ b/src/plugins/vis_types/table/public/convert_to_lens/index.ts @@ -54,7 +54,7 @@ export const convertToLens: ConvertTableToLensVisualization = async (vis, timefi buckets: ['bucket'], splits: ['split_row', 'split_column'], }, - { dropEmptyRowsInDateHistogram: true } + { dropEmptyRowsInDateHistogram: true, isPercentageColumn: false } ); if (result === null) { diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts index aa88a835f3895..ac6072336e81d 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts @@ -28,7 +28,7 @@ export const convertMetricToColumns = ( agg: SchemaConfig, dataView: DataView, aggs: Array>, - percentageModeConfig: PercentageModeConfig + percentageModeConfig: PercentageModeConfig = { isPercentageColumn: false } ): AggBasedColumn[] | null => { const supportedAgg = SUPPORTED_METRICS[agg.aggType]; if (!supportedAgg) { diff --git a/x-pack/plugins/fleet/cypress.config.d.ts b/x-pack/plugins/fleet/cypress.config.d.ts new file mode 100644 index 0000000000000..42cd75f66e3c9 --- /dev/null +++ b/x-pack/plugins/fleet/cypress.config.d.ts @@ -0,0 +1,3 @@ +/// +declare const _default: Cypress.ConfigOptions; +export default _default; diff --git a/x-pack/plugins/fleet/cypress.config.js b/x-pack/plugins/fleet/cypress.config.js new file mode 100644 index 0000000000000..523c0b56b202e --- /dev/null +++ b/x-pack/plugins/fleet/cypress.config.js @@ -0,0 +1,40 @@ +"use strict"; +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +// eslint-disable-next-line import/no-extraneous-dependencies +const cypress_1 = require("cypress"); +// eslint-disable-next-line import/no-default-export +exports.default = (0, cypress_1.defineConfig)({ + defaultCommandTimeout: 60000, + requestTimeout: 60000, + responseTimeout: 60000, + execTimeout: 120000, + pageLoadTimeout: 120000, + retries: { + runMode: 2, + }, + screenshotsFolder: '../../../target/kibana-fleet/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: false, + videosFolder: '../../../target/kibana-fleet/cypress/videos', + viewportHeight: 900, + viewportWidth: 1440, + screenshotOnRunFailure: true, + env: { + protocol: 'http', + hostname: 'localhost', + configport: '5601', + }, + e2e: { + baseUrl: 'http://localhost:5601', + setupNodeEvents(on, config) { + // eslint-disable-next-line @typescript-eslint/no-var-requires, @kbn/imports/no_boundary_crossing + return require('./cypress/plugins')(on, config); + }, + }, +}); diff --git a/x-pack/plugins/osquery/cypress.config.d.ts b/x-pack/plugins/osquery/cypress.config.d.ts new file mode 100644 index 0000000000000..42cd75f66e3c9 --- /dev/null +++ b/x-pack/plugins/osquery/cypress.config.d.ts @@ -0,0 +1,3 @@ +/// +declare const _default: Cypress.ConfigOptions; +export default _default; diff --git a/x-pack/plugins/osquery/cypress.config.js b/x-pack/plugins/osquery/cypress.config.js new file mode 100644 index 0000000000000..9d04870a490bf --- /dev/null +++ b/x-pack/plugins/osquery/cypress.config.js @@ -0,0 +1,38 @@ +"use strict"; +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +Object.defineProperty(exports, "__esModule", { value: true }); +// eslint-disable-next-line import/no-extraneous-dependencies +const cypress_1 = require("cypress"); +// eslint-disable-next-line import/no-default-export +exports.default = (0, cypress_1.defineConfig)({ + defaultCommandTimeout: 60000, + execTimeout: 120000, + pageLoadTimeout: 12000, + retries: { + runMode: 1, + openMode: 0, + }, + screenshotsFolder: '../../../target/kibana-osquery/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: false, + videosFolder: '../../../target/kibana-osquery/cypress/videos', + viewportHeight: 900, + viewportWidth: 1440, + experimentalStudio: true, + env: { + 'cypress-react-selector': { + root: '#osquery-app', + }, + }, + e2e: { + baseUrl: 'http://localhost:5601', + setupNodeEvents(on, config) { + // implement node event listeners here + }, + }, +}); From 8369a3106020a28a22a5f04739f13b812e8d6fdc Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 11:26:12 +0300 Subject: [PATCH 10/18] Fixed checks. --- x-pack/plugins/fleet/cypress.config.d.ts | 3 -- x-pack/plugins/fleet/cypress.config.js | 40 ---------------------- x-pack/plugins/osquery/cypress.config.d.ts | 3 -- x-pack/plugins/osquery/cypress.config.js | 38 -------------------- 4 files changed, 84 deletions(-) delete mode 100644 x-pack/plugins/fleet/cypress.config.d.ts delete mode 100644 x-pack/plugins/fleet/cypress.config.js delete mode 100644 x-pack/plugins/osquery/cypress.config.d.ts delete mode 100644 x-pack/plugins/osquery/cypress.config.js diff --git a/x-pack/plugins/fleet/cypress.config.d.ts b/x-pack/plugins/fleet/cypress.config.d.ts deleted file mode 100644 index 42cd75f66e3c9..0000000000000 --- a/x-pack/plugins/fleet/cypress.config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -declare const _default: Cypress.ConfigOptions; -export default _default; diff --git a/x-pack/plugins/fleet/cypress.config.js b/x-pack/plugins/fleet/cypress.config.js deleted file mode 100644 index 523c0b56b202e..0000000000000 --- a/x-pack/plugins/fleet/cypress.config.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -// eslint-disable-next-line import/no-extraneous-dependencies -const cypress_1 = require("cypress"); -// eslint-disable-next-line import/no-default-export -exports.default = (0, cypress_1.defineConfig)({ - defaultCommandTimeout: 60000, - requestTimeout: 60000, - responseTimeout: 60000, - execTimeout: 120000, - pageLoadTimeout: 120000, - retries: { - runMode: 2, - }, - screenshotsFolder: '../../../target/kibana-fleet/cypress/screenshots', - trashAssetsBeforeRuns: false, - video: false, - videosFolder: '../../../target/kibana-fleet/cypress/videos', - viewportHeight: 900, - viewportWidth: 1440, - screenshotOnRunFailure: true, - env: { - protocol: 'http', - hostname: 'localhost', - configport: '5601', - }, - e2e: { - baseUrl: 'http://localhost:5601', - setupNodeEvents(on, config) { - // eslint-disable-next-line @typescript-eslint/no-var-requires, @kbn/imports/no_boundary_crossing - return require('./cypress/plugins')(on, config); - }, - }, -}); diff --git a/x-pack/plugins/osquery/cypress.config.d.ts b/x-pack/plugins/osquery/cypress.config.d.ts deleted file mode 100644 index 42cd75f66e3c9..0000000000000 --- a/x-pack/plugins/osquery/cypress.config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -declare const _default: Cypress.ConfigOptions; -export default _default; diff --git a/x-pack/plugins/osquery/cypress.config.js b/x-pack/plugins/osquery/cypress.config.js deleted file mode 100644 index 9d04870a490bf..0000000000000 --- a/x-pack/plugins/osquery/cypress.config.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -Object.defineProperty(exports, "__esModule", { value: true }); -// eslint-disable-next-line import/no-extraneous-dependencies -const cypress_1 = require("cypress"); -// eslint-disable-next-line import/no-default-export -exports.default = (0, cypress_1.defineConfig)({ - defaultCommandTimeout: 60000, - execTimeout: 120000, - pageLoadTimeout: 12000, - retries: { - runMode: 1, - openMode: 0, - }, - screenshotsFolder: '../../../target/kibana-osquery/cypress/screenshots', - trashAssetsBeforeRuns: false, - video: false, - videosFolder: '../../../target/kibana-osquery/cypress/videos', - viewportHeight: 900, - viewportWidth: 1440, - experimentalStudio: true, - env: { - 'cypress-react-selector': { - root: '#osquery-app', - }, - }, - e2e: { - baseUrl: 'http://localhost:5601', - setupNodeEvents(on, config) { - // implement node event listeners here - }, - }, -}); From e1f1c1ab69dba714f8a88176023b2b54e786d2da Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 11:47:31 +0300 Subject: [PATCH 11/18] Added tests for convertToColumnInPercentageMode. --- .../lib/convert/percentage_mode.test.ts | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.test.ts diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.test.ts b/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.test.ts new file mode 100644 index 0000000000000..3b7e8ad7e797f --- /dev/null +++ b/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.test.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { METRIC_TYPES } from '@kbn/data-plugin/common'; +import { stubLogstashDataView } from '@kbn/data-views-plugin/common/data_view.stub'; +import { SchemaConfig } from '../../..'; +import { convertToColumnInPercentageMode } from './percentage_mode'; + +const mockGetFormulaForAgg = jest.fn(); + +jest.mock('../metrics/formula', () => ({ + getFormulaForAgg: jest.fn(() => mockGetFormulaForAgg()), +})); + +describe('convertToColumnInPercentageMode', () => { + const formula = 'average(some_field)'; + const dataView = stubLogstashDataView; + + const agg: SchemaConfig = { + accessor: 0, + label: '', + format: { + id: undefined, + params: undefined, + }, + params: {}, + aggType: METRIC_TYPES.AVG, + aggParams: { + field: dataView.fields[0].displayName, + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + mockGetFormulaForAgg.mockReturnValue(formula); + }); + + test('should return null if it is not possible to build the valid formula', () => { + mockGetFormulaForAgg.mockReturnValue(null); + expect(convertToColumnInPercentageMode({ agg, dataView, aggs: [agg] }, {})).toBeNull(); + }); + + test('should return percentage mode over range formula if min and max was passed', () => { + const formulaColumn = { + operationType: 'formula', + params: { format: { id: 'percent' }, formula: `((${formula}) - 0) / (100 - 0)` }, + }; + expect( + convertToColumnInPercentageMode({ agg, dataView, aggs: [agg] }, { min: 0, max: 100 }) + ).toEqual(expect.objectContaining(formulaColumn)); + }); + + test('should return percentage mode formula if min and max was not passed', () => { + const formulaColumn = { + operationType: 'formula', + params: { format: { id: 'percent' }, formula: `(${formula}) / 10000` }, + }; + expect(convertToColumnInPercentageMode({ agg, dataView, aggs: [agg] }, {})).toEqual( + expect.objectContaining(formulaColumn) + ); + }); +}); From c1765c93e4ce4da5882ff1240cc3bc2a41bedbe7 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 12:40:13 +0300 Subject: [PATCH 12/18] Added unit tests for convertToLens. --- .../public/convert_to_lens/index.test.ts | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/index.test.ts diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/index.test.ts b/src/plugins/vis_types/metric/public/convert_to_lens/index.test.ts new file mode 100644 index 0000000000000..015b19157e91a --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/index.test.ts @@ -0,0 +1,144 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ColorSchemas } from '@kbn/charts-plugin/common'; +import { Vis } from '@kbn/visualizations-plugin/public'; +import { convertToLens } from '.'; +import { VisParams } from '../types'; + +const mockGetColumnsFromVis = jest.fn(); +const mockGetPercentageColumnFormulaColumn = jest.fn(); +const mockGetConfiguration = jest.fn().mockReturnValue({}); +const mockGetPercentageModeConfig = jest.fn(); + +jest.mock('../services', () => ({ + getDataViewsStart: jest.fn(() => ({ get: () => ({}), getDefault: () => ({}) })), +})); + +jest.mock('@kbn/visualizations-plugin/public', () => ({ + convertToLensModule: Promise.resolve({ + getColumnsFromVis: jest.fn(() => mockGetColumnsFromVis()), + getPercentageColumnFormulaColumn: jest.fn(() => mockGetPercentageColumnFormulaColumn()), + }), + getDataViewByIndexPatternId: jest.fn(() => ({ id: 'index-pattern' })), +})); + +jest.mock('./configurations', () => ({ + getConfiguration: jest.fn(() => mockGetConfiguration()), + getPercentageModeConfig: jest.fn(() => mockGetPercentageModeConfig()), +})); + +const params: VisParams = { + addTooltip: false, + addLegend: false, + dimensions: {} as VisParams['dimensions'], + metric: { + percentageMode: false, + percentageFormatPattern: '', + useRanges: false, + colorSchema: ColorSchemas.Greys, + metricColorMode: 'None', + colorsRange: [], + labels: {}, + invertColors: false, + style: { + bgFill: '', + bgColor: false, + labelColor: false, + subText: '', + fontSize: 10, + }, + }, + type: 'metric', +}; + +const vis = { + isHierarchical: () => false, + type: {}, + params, + data: {}, +} as unknown as Vis; + +const timefilter = { + getAbsoluteTime: () => {}, +} as any; + +describe('convertToLens', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + test('should return null if getColumnsFromVis returns null', async () => { + mockGetColumnsFromVis.mockReturnValue(null); + const result = await convertToLens(vis, timefilter); + expect(mockGetColumnsFromVis).toBeCalledTimes(1); + expect(result).toBeNull(); + }); + + test('should return null if metrics count is more than 1', async () => { + mockGetColumnsFromVis.mockReturnValue({ + metrics: ['1', '2'], + columns: [{ columnId: '2' }, { columnId: '1' }], + }); + const result = await convertToLens(vis, timefilter); + expect(mockGetColumnsFromVis).toBeCalledTimes(1); + expect(result).toBeNull(); + }); + test('should return null if buckets count is more than 1', async () => { + mockGetColumnsFromVis.mockReturnValue({ + metrics: [], + buckets: ['1', '2'], + columns: [{ columnId: '2' }, { columnId: '1' }], + }); + const result = await convertToLens(vis, timefilter); + expect(mockGetColumnsFromVis).toBeCalledTimes(1); + expect(result).toBeNull(); + }); + + test('should return null if metric column data type is different from number', async () => { + mockGetColumnsFromVis.mockReturnValue({ + metrics: ['1'], + buckets: ['2'], + columns: [{ columnId: '2' }, { columnId: '1', dataType: 'string' }], + }); + const result = await convertToLens(vis, timefilter); + expect(mockGetColumnsFromVis).toBeCalledTimes(1); + expect(result).toBeNull(); + }); + test('should return correct state for valid vis', async () => { + const config = { + layerType: 'data', + metricAccessor: '1', + }; + + mockGetColumnsFromVis.mockReturnValue({ + metrics: ['1'], + buckets: ['2'], + columns: [{ columnId: '2' }, { columnId: '1', dataType: 'number' }], + columnsWithoutReferenced: [ + { columnId: '1', meta: { aggId: 'agg-1' } }, + { columnId: '2', meta: { aggId: 'agg-2' } }, + ], + }); + mockGetConfiguration.mockReturnValue(config); + + const result = await convertToLens(vis, timefilter); + expect(mockGetColumnsFromVis).toBeCalledTimes(1); + expect(mockGetConfiguration).toBeCalledTimes(1); + + expect(result?.type).toEqual('lnsMetric'); + expect(result?.layers.length).toEqual(1); + expect(result?.layers[0]).toEqual( + expect.objectContaining({ + columnOrder: [], + columns: [{ columnId: '2' }, { columnId: '1', dataType: 'number' }], + }) + ); + expect(result?.configuration).toEqual(config); + }); +}); From d1e384be2dbe020d774f6abdd6d21602aae9f516 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 14:13:01 +0300 Subject: [PATCH 13/18] Added tests for palette. --- .../configurations/palette.test.ts | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.test.ts diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.test.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.test.ts new file mode 100644 index 0000000000000..7458a78b7b554 --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/palette.test.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ColorSchemas } from '@kbn/charts-plugin/common'; +import { VisParams } from '../../types'; +import { getPalette } from './palette'; + +describe('getPalette', () => { + const params: VisParams = { + addTooltip: false, + addLegend: false, + dimensions: {} as VisParams['dimensions'], + metric: { + percentageMode: false, + percentageFormatPattern: '', + useRanges: true, + colorSchema: ColorSchemas.Greys, + metricColorMode: 'Labels', + colorsRange: [ + { type: 'range', from: 0, to: 100 }, + { type: 'range', from: 100, to: 200 }, + { type: 'range', from: 200, to: 300 }, + ], + labels: {}, + invertColors: false, + style: {} as VisParams['metric']['style'], + }, + type: 'metric', + }; + + test('should return undefined if metricColorMode is `None`', () => { + const metricColorMode = 'None'; + const paramsWithNoneMetricColorMode: VisParams = { + ...params, + metric: { ...params.metric, metricColorMode }, + }; + expect(getPalette(paramsWithNoneMetricColorMode)).toBeUndefined(); + }); + + test('should return undefined if empty color ranges were passed', () => { + const paramsWithNoneMetricColorMode: VisParams = { + ...params, + metric: { ...params.metric, colorsRange: [] }, + }; + expect(getPalette(paramsWithNoneMetricColorMode)).toBeUndefined(); + }); + + test('should return correct palette', () => { + expect(getPalette(params)).toEqual({ + name: 'custom', + params: { + colorStops: [ + { color: '#FFFFFF', stop: 0 }, + { color: '#979797', stop: 100 }, + { color: '#000000', stop: 200 }, + ], + continuity: 'none', + maxSteps: 5, + name: 'custom', + progression: 'fixed', + rangeMax: 300, + rangeMin: 0, + rangeType: 'number', + reverse: false, + stops: [ + { color: '#FFFFFF', stop: 100 }, + { color: '#979797', stop: 200 }, + { color: '#000000', stop: 300 }, + ], + }, + type: 'palette', + }); + }); +}); From 0bf4eb607337d8f58981edfa5f51d279fcf700c1 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 14:23:08 +0300 Subject: [PATCH 14/18] Added tests for getPercentageModeConfig --- .../configurations/index.test.ts | 51 ++++++++++ .../convert_to_lens/configurations/index.ts | 4 +- .../table/public/convert_to_lens/index.ts | 2 +- .../lib/metrics/metrics.test.ts | 96 +++++++++---------- .../convert_to_lens/lib/metrics/metrics.ts | 6 +- .../common/convert_to_lens/types/common.ts | 4 +- .../public/convert_to_lens/schemas.ts | 2 +- 7 files changed, 108 insertions(+), 57 deletions(-) create mode 100644 src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts new file mode 100644 index 0000000000000..45ff99338ddc4 --- /dev/null +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ColorSchemas } from '@kbn/charts-plugin/common'; +import { getPercentageModeConfig } from '.'; +import { VisParams } from '../../types'; + +describe('getPercentageModeConfig', () => { + const params: VisParams = { + addTooltip: false, + addLegend: false, + dimensions: {} as VisParams['dimensions'], + metric: { + percentageMode: false, + percentageFormatPattern: '', + useRanges: true, + colorSchema: ColorSchemas.Greys, + metricColorMode: 'Labels', + colorsRange: [ + { type: 'range', from: 0, to: 100 }, + { type: 'range', from: 100, to: 200 }, + { type: 'range', from: 200, to: 300 }, + ], + labels: {}, + invertColors: false, + style: {} as VisParams['metric']['style'], + }, + type: 'metric', + }; + + test('should return falsy percentage mode if percentage mode is off', () => { + expect(getPercentageModeConfig(params)).toEqual({ isPercentageMode: false }); + }); + + test('should return falsy percentage mode if metric color mode is `None`', () => { + expect( + getPercentageModeConfig({ ...params, metric: { ...params.metric, metricColorMode: `None` } }) + ).toEqual({ isPercentageMode: false }); + }); + + test('should return percentage mode config', () => { + expect( + getPercentageModeConfig({ ...params, metric: { ...params.metric, percentageMode: true } }) + ).toEqual({ isPercentageMode: true, min: 0, max: 300 }); + }); +}); diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts index ad68dd5e263b6..c6c59e7216322 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts @@ -13,11 +13,11 @@ import { getPalette } from './palette'; export const getPercentageModeConfig = (params: VisParams): PercentageModeConfig => { if (!params.metric.percentageMode || params.metric.metricColorMode === 'None') { - return { isPercentageColumn: params.metric.percentageMode }; + return { isPercentageMode: params.metric.percentageMode }; } const { colorsRange } = params.metric; return { - isPercentageColumn: true, + isPercentageMode: true, min: colorsRange[0].from, max: colorsRange[colorsRange.length - 1].to, }; diff --git a/src/plugins/vis_types/table/public/convert_to_lens/index.ts b/src/plugins/vis_types/table/public/convert_to_lens/index.ts index 10db3c3bac607..1b37e36f1d982 100644 --- a/src/plugins/vis_types/table/public/convert_to_lens/index.ts +++ b/src/plugins/vis_types/table/public/convert_to_lens/index.ts @@ -54,7 +54,7 @@ export const convertToLens: ConvertTableToLensVisualization = async (vis, timefi buckets: ['bucket'], splits: ['split_row', 'split_column'], }, - { dropEmptyRowsInDateHistogram: true, isPercentageColumn: false } + { dropEmptyRowsInDateHistogram: true, isPercentageMode: false } ); if (result === null) { diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts index 740dc7341c324..207dedd133bc9 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.test.ts @@ -62,7 +62,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.GEO_BOUNDS } as unknown as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, undefined, @@ -73,7 +73,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.AVG } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -84,7 +84,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.MIN } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -95,7 +95,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.MAX } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -106,7 +106,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.SUM } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -117,7 +117,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.COUNT } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -128,7 +128,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.CARDINALITY } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -139,7 +139,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.VALUE_COUNT } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -150,7 +150,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.MEDIAN } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -161,7 +161,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.STD_DEV } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToStdDeviationFormulaColumns, @@ -172,7 +172,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.PERCENTILES } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToPercentileColumn, @@ -183,7 +183,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.SINGLE_PERCENTILE } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToPercentileColumn, @@ -194,7 +194,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.PERCENTILE_RANKS } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToPercentileRankColumn, @@ -205,7 +205,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.SINGLE_PERCENTILE_RANK } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToPercentileRankColumn, @@ -216,7 +216,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.TOP_HITS } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToLastValueColumn, @@ -227,7 +227,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.TOP_METRICS } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToLastValueColumn, @@ -238,7 +238,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.CUMULATIVE_SUM } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToCumulativeSumAggColumn, @@ -249,7 +249,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.DERIVATIVE } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToOtherParentPipelineAggColumns, @@ -260,7 +260,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.MOVING_FN } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToOtherParentPipelineAggColumns, @@ -271,7 +271,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.SUM_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToSiblingPipelineColumns, @@ -282,7 +282,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.MIN_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToSiblingPipelineColumns, @@ -293,7 +293,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.MAX_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToSiblingPipelineColumns, @@ -304,7 +304,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, mockConvertToSiblingPipelineColumns, @@ -315,7 +315,7 @@ describe('convertMetricToColumns invalid cases', () => { { aggType: METRIC_TYPES.SERIAL_DIFF } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], null, undefined, @@ -356,7 +356,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.AVG } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -367,7 +367,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.MIN } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -378,7 +378,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.MAX } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -389,7 +389,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.SUM } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -400,7 +400,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.COUNT } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -411,7 +411,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.CARDINALITY } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -422,7 +422,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.VALUE_COUNT } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -433,7 +433,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.MEDIAN } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertMetricAggregationColumnWithoutSpecialParams, @@ -444,7 +444,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.STD_DEV } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToStdDeviationFormulaColumns, @@ -455,7 +455,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.PERCENTILES } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToPercentileColumn, @@ -466,7 +466,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.SINGLE_PERCENTILE } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToPercentileColumn, @@ -477,7 +477,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.PERCENTILE_RANKS } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToPercentileRankColumn, @@ -488,7 +488,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.SINGLE_PERCENTILE_RANK } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToPercentileRankColumn, @@ -499,7 +499,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.TOP_HITS } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToLastValueColumn, @@ -510,7 +510,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.TOP_METRICS } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToLastValueColumn, @@ -521,7 +521,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.CUMULATIVE_SUM } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToCumulativeSumAggColumn, @@ -532,7 +532,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.DERIVATIVE } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToOtherParentPipelineAggColumns, @@ -543,7 +543,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.MOVING_FN } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToOtherParentPipelineAggColumns, @@ -554,7 +554,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.SUM_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToSiblingPipelineColumns, @@ -565,7 +565,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.MIN_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToSiblingPipelineColumns, @@ -576,7 +576,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.MAX_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToSiblingPipelineColumns, @@ -587,7 +587,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: false }, + { isPercentageMode: false }, ], result, mockConvertToSiblingPipelineColumns, @@ -598,7 +598,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: true }, + { isPercentageMode: true }, ], result, mockConvertToColumnInPercentageMode, @@ -609,7 +609,7 @@ describe('convertMetricToColumns valid cases', () => { { aggType: METRIC_TYPES.AVG_BUCKET } as SchemaConfig, dataView, [], - { isPercentageColumn: true, min: 0, max: 100 }, + { isPercentageMode: true, min: 0, max: 100 }, ], result, mockConvertToColumnInPercentageMode, diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts index ac6072336e81d..be4c92cd4ec7f 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/metrics/metrics.ts @@ -28,15 +28,15 @@ export const convertMetricToColumns = ( agg: SchemaConfig, dataView: DataView, aggs: Array>, - percentageModeConfig: PercentageModeConfig = { isPercentageColumn: false } + percentageModeConfig: PercentageModeConfig = { isPercentageMode: false } ): AggBasedColumn[] | null => { const supportedAgg = SUPPORTED_METRICS[agg.aggType]; if (!supportedAgg) { return null; } - if (percentageModeConfig.isPercentageColumn) { - const { isPercentageColumn, ...minMax } = percentageModeConfig; + if (percentageModeConfig.isPercentageMode) { + const { isPercentageMode, ...minMax } = percentageModeConfig; const formulaColumn = convertToColumnInPercentageMode({ agg, dataView, aggs }, minMax); return getValidColumns(formulaColumn); diff --git a/src/plugins/visualizations/common/convert_to_lens/types/common.ts b/src/plugins/visualizations/common/convert_to_lens/types/common.ts index 8daa9889b04d3..c526a7116877d 100644 --- a/src/plugins/visualizations/common/convert_to_lens/types/common.ts +++ b/src/plugins/visualizations/common/convert_to_lens/types/common.ts @@ -52,5 +52,5 @@ export interface MinMax { } export type PercentageModeConfig = - | ({ isPercentageColumn: true } & MinMax) - | { isPercentageColumn: boolean }; + | ({ isPercentageMode: true } & MinMax) + | { isPercentageMode: boolean }; diff --git a/src/plugins/visualizations/public/convert_to_lens/schemas.ts b/src/plugins/visualizations/public/convert_to_lens/schemas.ts index 06c28455edfcf..ecfbbf34ad9c9 100644 --- a/src/plugins/visualizations/public/convert_to_lens/schemas.ts +++ b/src/plugins/visualizations/public/convert_to_lens/schemas.ts @@ -49,7 +49,7 @@ export const getColumnsFromVis = ( } & (PercentageModeConfig | void) ) => { const { dropEmptyRowsInDateHistogram, ...percentageModeConfig } = config ?? { - isPercentageColumn: false, + isPercentageMode: false, }; const visSchemas = getVisSchemas(vis, { timefilter, From 3b2374994fa399a0939ce4c354bb28095a58002d Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 14:39:16 +0300 Subject: [PATCH 15/18] Added tests for getConfiguration. --- .../configurations/index.test.ts | 84 ++++++++++++++----- 1 file changed, 61 insertions(+), 23 deletions(-) diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts index 45ff99338ddc4..46ae744192224 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts @@ -7,32 +7,38 @@ */ import { ColorSchemas } from '@kbn/charts-plugin/common'; -import { getPercentageModeConfig } from '.'; +import { getConfiguration, getPercentageModeConfig } from '.'; import { VisParams } from '../../types'; -describe('getPercentageModeConfig', () => { - const params: VisParams = { - addTooltip: false, - addLegend: false, - dimensions: {} as VisParams['dimensions'], - metric: { - percentageMode: false, - percentageFormatPattern: '', - useRanges: true, - colorSchema: ColorSchemas.Greys, - metricColorMode: 'Labels', - colorsRange: [ - { type: 'range', from: 0, to: 100 }, - { type: 'range', from: 100, to: 200 }, - { type: 'range', from: 200, to: 300 }, - ], - labels: {}, - invertColors: false, - style: {} as VisParams['metric']['style'], - }, - type: 'metric', - }; +const mockGetPalette = jest.fn(); + +jest.mock('./palette', () => ({ + getPalette: jest.fn(() => mockGetPalette()), +})); + +const params: VisParams = { + addTooltip: false, + addLegend: false, + dimensions: {} as VisParams['dimensions'], + metric: { + percentageMode: false, + percentageFormatPattern: '', + useRanges: true, + colorSchema: ColorSchemas.Greys, + metricColorMode: 'Labels', + colorsRange: [ + { type: 'range', from: 0, to: 100 }, + { type: 'range', from: 100, to: 200 }, + { type: 'range', from: 200, to: 300 }, + ], + labels: {}, + invertColors: false, + style: {} as VisParams['metric']['style'], + }, + type: 'metric', +}; +describe('getPercentageModeConfig', () => { test('should return falsy percentage mode if percentage mode is off', () => { expect(getPercentageModeConfig(params)).toEqual({ isPercentageMode: false }); }); @@ -49,3 +55,35 @@ describe('getPercentageModeConfig', () => { ).toEqual({ isPercentageMode: true, min: 0, max: 300 }); }); }); + +describe('getConfiguration', () => { + const palette = { name: 'custom', params: { name: 'custom' }, type: 'palette' }; + + beforeEach(() => { + jest.clearAllMocks(); + mockGetPalette.mockReturnValue(palette); + }); + + test('shourd return correct configuration', () => { + const layerId = 'layer-id'; + const metric = 'metric-id'; + const bucket = 'bucket-id'; + const collapseFn = 'sum'; + expect( + getConfiguration(layerId, params, { + metrics: [metric], + buckets: [bucket], + columnsWithoutReferenced: [], + bucketCollapseFn: { [metric]: collapseFn }, + }) + ).toEqual({ + breakdownByAccessor: bucket, + collapseFn, + layerId, + layerType: 'data', + metricAccessor: metric, + palette, + }); + expect(mockGetPalette).toBeCalledTimes(1); + }); +}); From bc8b690662f8151436ab014960cebf7cc8347cc2 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 15:36:24 +0300 Subject: [PATCH 16/18] Fixed invalid behavior. --- .../public/convert_to_lens/configurations/index.test.ts | 6 ------ .../metric/public/convert_to_lens/configurations/index.ts | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts index 46ae744192224..97fb145e74a2f 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.test.ts @@ -43,12 +43,6 @@ describe('getPercentageModeConfig', () => { expect(getPercentageModeConfig(params)).toEqual({ isPercentageMode: false }); }); - test('should return falsy percentage mode if metric color mode is `None`', () => { - expect( - getPercentageModeConfig({ ...params, metric: { ...params.metric, metricColorMode: `None` } }) - ).toEqual({ isPercentageMode: false }); - }); - test('should return percentage mode config', () => { expect( getPercentageModeConfig({ ...params, metric: { ...params.metric, percentageMode: true } }) diff --git a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts index c6c59e7216322..39e001c1b87b8 100644 --- a/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts +++ b/src/plugins/vis_types/metric/public/convert_to_lens/configurations/index.ts @@ -12,8 +12,8 @@ import { VisParams } from '../../types'; import { getPalette } from './palette'; export const getPercentageModeConfig = (params: VisParams): PercentageModeConfig => { - if (!params.metric.percentageMode || params.metric.metricColorMode === 'None') { - return { isPercentageMode: params.metric.percentageMode }; + if (!params.metric.percentageMode) { + return { isPercentageMode: false }; } const { colorsRange } = params.metric; return { From 9ff78773ae6900468e259bd95f2b68d5152d3d12 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 16:16:19 +0300 Subject: [PATCH 17/18] Added functional tests. --- .../group3/open_in_lens/agg_based/index.ts | 1 + .../group3/open_in_lens/agg_based/metric.ts | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/index.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/index.ts index b279f0d8a93cd..66de13c67d94c 100644 --- a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/index.ts +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/index.ts @@ -10,5 +10,6 @@ import { FtrProviderContext } from '../../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Agg based Vis to Lens', function () { loadTestFile(require.resolve('./pie')); + loadTestFile(require.resolve('./metric')); }); } diff --git a/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts new file mode 100644 index 0000000000000..f81f5200e678a --- /dev/null +++ b/x-pack/test/functional/apps/lens/group3/open_in_lens/agg_based/metric.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../../ftr_provider_context'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const { visualize, lens, timePicker } = getPageObjects(['visualize', 'lens', 'timePicker']); + + const testSubjects = getService('testSubjects'); + + describe('Metric', function describeIndexTests() { + const isNewChartsLibraryEnabled = true; + + before(async () => { + await visualize.initTests(isNewChartsLibraryEnabled); + }); + + beforeEach(async () => { + await visualize.navigateToNewAggBasedVisualization(); + await visualize.clickMetric(); + await visualize.clickNewSearch(); + await timePicker.setDefaultAbsoluteRange(); + }); + + it('should show the "Edit Visualization in Lens" menu item', async () => { + const button = await testSubjects.exists('visualizeEditInLensButton'); + expect(button).to.eql(true); + }); + + it('should convert to Lens', async () => { + const button = await testSubjects.find('visualizeEditInLensButton'); + await button.click(); + await lens.waitForVisualization('mtrVis'); + expect((await lens.getMetricVisualizationData()).length).to.be.equal(1); + expect(await lens.getMetricVisualizationData()).to.eql([ + { + title: 'Count', + subtitle: undefined, + extraText: '', + value: '14.01K', + color: 'rgba(245, 247, 250, 1)', + showingBar: false, + }, + ]); + }); + }); +} From bf3f452b6a9e93a376e738357e1e2cb65e0556dd Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Wed, 5 Oct 2022 16:23:43 +0300 Subject: [PATCH 18/18] Added validation for top_hit percentage mode support. --- .../common/convert_to_lens/lib/convert/percentage_mode.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts b/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts index 682dd6aff8148..df49635c97636 100644 --- a/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts +++ b/src/plugins/visualizations/common/convert_to_lens/lib/convert/percentage_mode.ts @@ -29,6 +29,10 @@ export const convertToColumnInPercentageMode = ( columnConverterArgs: ExtendedColumnConverterArgs, minMax: MinMax | {} ) => { + if (columnConverterArgs.agg.aggType === METRIC_TYPES.TOP_HITS) { + return null; + } + const formula = getFormulaForAgg(columnConverterArgs); if (formula === null) { return null;