diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cd3188ad971af..6727edeb04e8c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -40,6 +40,7 @@ /src/plugins/chart_expressions/expression_metric/ @elastic/kibana-vis-editors /src/plugins/chart_expressions/expression_heatmap/ @elastic/kibana-vis-editors /src/plugins/chart_expressions/expression_gauge/ @elastic/kibana-vis-editors +/src/plugins/chart_expressions/expression_pie/ @elastic/kibana-vis-editors /src/plugins/url_forwarding/ @elastic/kibana-vis-editors /packages/kbn-tinymath/ @elastic/kibana-vis-editors /x-pack/test/functional/apps/lens @elastic/kibana-vis-editors diff --git a/.i18nrc.json b/.i18nrc.json index b37241f0850bc..207e1778213bb 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -32,6 +32,7 @@ "expressionGauge": "src/plugins/chart_expressions/expression_gauge", "expressionTagcloud": "src/plugins/chart_expressions/expression_tagcloud", "expressionMetricVis": "src/plugins/chart_expressions/expression_metric", + "expressionPie": "src/plugins/chart_expressions/expression_pie", "inputControl": "src/plugins/input_control_vis", "inspector": "src/plugins/inspector", "inspectorViews": "src/legacy/core_plugins/inspector_views", diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index cf4c845abe25a..eb4fd6e30f304 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -114,6 +114,10 @@ This API doesn't support angular, for registering angular dev tools, bootstrap a |Expression MetricVis plugin adds a metric renderer and function to the expression plugin. The renderer will display the metric chart. +|{kib-repo}blob/{branch}/src/plugins/chart_expressions/expression_pie/README.md[expressionPie] +|Expression Pie plugin adds a pie renderer and function to the expression plugin. The renderer will display the Pie chart. + + |{kib-repo}blob/{branch}/src/plugins/expression_repeat_image/README.md[expressionRepeatImage] |Expression Repeat Image plugin adds a repeatImage function to the expression plugin and an associated renderer. The renderer will display the given image in mutliple instances. diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index f4653b4d00480..dccf2f2c14169 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -119,3 +119,4 @@ pageLoadAssetSize: visTypeHeatmap: 25340 screenshotting: 17017 expressionGauge: 25000 + expressionPie: 26338 diff --git a/src/plugins/chart_expressions/expression_pie/README.md b/src/plugins/chart_expressions/expression_pie/README.md new file mode 100755 index 0000000000000..95f4298aa293d --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/README.md @@ -0,0 +1,9 @@ +# expressionPie + +Expression Pie plugin adds a `pie` renderer and function to the expression plugin. The renderer will display the `Pie` chart. + +--- + +## Development + +See the [kibana contributing guide](https://github.com/elastic/kibana/blob/main/CONTRIBUTING.md) for instructions setting up your development environment. diff --git a/src/plugins/chart_expressions/expression_pie/common/constants.ts b/src/plugins/chart_expressions/expression_pie/common/constants.ts new file mode 100644 index 0000000000000..c666692c3ea7f --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/common/constants.ts @@ -0,0 +1,16 @@ +/* + * 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. + */ + +export const PLUGIN_ID = 'expressionPie'; +export const PLUGIN_NAME = 'expressionPie'; + +export const PIE_VIS_EXPRESSION_NAME = 'pie_vis'; +export const PIE_LABELS_VALUE = 'pie_labels_value'; +export const PIE_LABELS_FUNCTION = 'pie_labels'; + +export const DEFAULT_PERCENT_DECIMALS = 2; diff --git a/src/plugins/vis_types/pie/public/__snapshots__/pie_fn.test.ts.snap b/src/plugins/chart_expressions/expression_pie/common/expression_functions/__snapshots__/pie_vis_function.test.ts.snap similarity index 100% rename from src/plugins/vis_types/pie/public/__snapshots__/pie_fn.test.ts.snap rename to src/plugins/chart_expressions/expression_pie/common/expression_functions/__snapshots__/pie_vis_function.test.ts.snap diff --git a/src/plugins/chart_expressions/expression_pie/common/expression_functions/index.ts b/src/plugins/chart_expressions/expression_pie/common/expression_functions/index.ts new file mode 100644 index 0000000000000..ee8f0ec06d436 --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/common/expression_functions/index.ts @@ -0,0 +1,10 @@ +/* + * 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. + */ + +export { pieVisFunction } from './pie_vis_function'; +export { pieLabelsFunction } from './pie_labels_function'; diff --git a/src/plugins/vis_types/pie/public/expression_functions/pie_labels.ts b/src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_labels_function.ts similarity index 57% rename from src/plugins/vis_types/pie/public/expression_functions/pie_labels.ts rename to src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_labels_function.ts index eeda49bce4c4c..63b6074bab8aa 100644 --- a/src/plugins/vis_types/pie/public/expression_functions/pie_labels.ts +++ b/src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_labels_function.ts @@ -7,50 +7,25 @@ */ import { i18n } from '@kbn/i18n'; -import { - ExpressionFunctionDefinition, - Datatable, - ExpressionValueBoxed, -} from '../../../../expressions/public'; +import { ExpressionFunctionDefinition, Datatable } from '../../../../expressions/common'; +import { PIE_LABELS_FUNCTION, PIE_LABELS_VALUE } from '../constants'; +import { ExpressionValuePieLabels, PieLabelsArguments } from '../types/expression_functions'; -interface Arguments { - show: boolean; - position: string; - values: boolean; - truncate: number | null; - valuesFormat: string; - lastLevel: boolean; - percentDecimals: number; -} - -export type ExpressionValuePieLabels = ExpressionValueBoxed< - 'pie_labels', - { - show: boolean; - position: string; - values: boolean; - truncate: number | null; - valuesFormat: string; - last_level: boolean; - percentDecimals: number; - } ->; - -export const pieLabels = (): ExpressionFunctionDefinition< - 'pielabels', +export const pieLabelsFunction = (): ExpressionFunctionDefinition< + typeof PIE_LABELS_FUNCTION, Datatable | null, - Arguments, + PieLabelsArguments, ExpressionValuePieLabels > => ({ - name: 'pielabels', - help: i18n.translate('visTypePie.function.pieLabels.help', { + name: PIE_LABELS_FUNCTION, + help: i18n.translate('expressionPie.pieLabels.function.help', { defaultMessage: 'Generates the pie labels object', }), - type: 'pie_labels', + type: PIE_LABELS_VALUE, args: { show: { types: ['boolean'], - help: i18n.translate('visTypePie.function.pieLabels.show.help', { + help: i18n.translate('expressionPie.pieLabels.function.args.show.help', { defaultMessage: 'Displays the pie labels', }), required: true, @@ -58,34 +33,34 @@ export const pieLabels = (): ExpressionFunctionDefinition< position: { types: ['string'], default: 'default', - help: i18n.translate('visTypePie.function.pieLabels.position.help', { + help: i18n.translate('expressionPie.pieLabels.function.args.position.help', { defaultMessage: 'Defines the label position', }), }, values: { types: ['boolean'], - help: i18n.translate('visTypePie.function.pieLabels.values.help', { + help: i18n.translate('expressionPie.pieLabels.function.args.values.help', { defaultMessage: 'Displays the values inside the slices', }), default: true, }, percentDecimals: { types: ['number'], - help: i18n.translate('visTypePie.function.pieLabels.percentDecimals.help', { + help: i18n.translate('expressionPie.pieLabels.function.args.percentDecimals.help', { defaultMessage: 'Defines the number of decimals that will appear on the values as percent', }), default: 2, }, lastLevel: { types: ['boolean'], - help: i18n.translate('visTypePie.function.pieLabels.lastLevel.help', { + help: i18n.translate('expressionPie.pieLabels.function.args.lastLevel.help', { defaultMessage: 'Show top level labels only', }), default: true, }, truncate: { - types: ['number', 'null'], - help: i18n.translate('visTypePie.function.pieLabels.truncate.help', { + types: ['number'], + help: i18n.translate('expressionPie.pieLabels.function.args.truncate.help', { defaultMessage: 'Defines the number of characters that the slice value will display', }), default: null, @@ -93,14 +68,14 @@ export const pieLabels = (): ExpressionFunctionDefinition< valuesFormat: { types: ['string'], default: 'percent', - help: i18n.translate('visTypePie.function.pieLabels.valuesFormat.help', { + help: i18n.translate('expressionPie.pieLabels.function.args.valuesFormat.help', { defaultMessage: 'Defines the format of the values', }), }, }, fn: (context, args) => { return { - type: 'pie_labels', + type: PIE_LABELS_VALUE, show: args.show, position: args.position, percentDecimals: args.percentDecimals, diff --git a/src/plugins/vis_types/pie/public/pie_fn.test.ts b/src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_vis_function.test.ts similarity index 80% rename from src/plugins/vis_types/pie/public/pie_fn.test.ts rename to src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_vis_function.test.ts index 9a9c2410481bd..64d92b3e394cb 100644 --- a/src/plugins/vis_types/pie/public/pie_fn.test.ts +++ b/src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_vis_function.test.ts @@ -6,25 +6,25 @@ * Side Public License, v 1. */ -import { functionWrapper } from '../../../expressions/common/expression_functions/specs/tests/utils'; -import { createPieVisFn } from './pie_fn'; -import { PieVisConfig } from './types'; -import { Datatable } from '../../../expressions/common/expression_types/specs'; -import { EMPTY_SIZE_RATIOS } from './editor/constants'; +import { functionWrapper } from '../../../../expressions/common/expression_functions/specs/tests/utils'; +import { PieVisConfig, EmptySizeRatios } from '../types/expression_renderers'; +import { pieVisFunction } from './pie_vis_function'; +import { Datatable } from '../../../../expressions/common/expression_types/specs'; describe('interpreter/functions#pie', () => { - const fn = functionWrapper(createPieVisFn()); + const fn = functionWrapper(pieVisFunction()); const context = { type: 'datatable', rows: [{ 'col-0-1': 0 }], columns: [{ id: 'col-0-1', name: 'Count' }], } as unknown as Datatable; + const visConfig = { addTooltip: true, addLegend: true, legendPosition: 'right', isDonut: true, - emptySizeRatio: EMPTY_SIZE_RATIOS.SMALL, + emptySizeRatio: EmptySizeRatios.SMALL, nestedLegend: true, truncateLegend: true, maxLegendLines: true, diff --git a/src/plugins/vis_types/pie/public/pie_fn.ts b/src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_vis_function.ts similarity index 63% rename from src/plugins/vis_types/pie/public/pie_fn.ts rename to src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_vis_function.ts index 041ecb5b7e6e5..4d5f7afddf641 100644 --- a/src/plugins/vis_types/pie/public/pie_fn.ts +++ b/src/plugins/chart_expressions/expression_pie/common/expression_functions/pie_vis_function.ts @@ -7,104 +7,89 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition, Datatable, Render } from '../../../expressions/common'; -import { PieVisParams, PieVisConfig } from './types'; -import { prepareLogTable } from '../../../visualizations/public'; +import { PieVisParams } from '../types/expression_renderers'; +import { prepareLogTable } from '../../../../visualizations/common/prepare_log_table'; +import { PieVisExpressionFunctionDefinition } from '../types/expression_functions'; +import { PIE_LABELS_VALUE, PIE_VIS_EXPRESSION_NAME } from '../constants'; -export const vislibPieName = 'pie_vis'; - -export interface RenderValue { - visData: Datatable; - visType: string; - visConfig: PieVisParams; - syncColors: boolean; -} - -export type VisTypePieExpressionFunctionDefinition = ExpressionFunctionDefinition< - typeof vislibPieName, - Datatable, - PieVisConfig, - Render ->; - -export const createPieVisFn = (): VisTypePieExpressionFunctionDefinition => ({ - name: vislibPieName, +export const pieVisFunction = (): PieVisExpressionFunctionDefinition => ({ + name: PIE_VIS_EXPRESSION_NAME, type: 'render', inputTypes: ['datatable'], - help: i18n.translate('visTypePie.functions.help', { + help: i18n.translate('expressionPie.pieVis.function.help', { defaultMessage: 'Pie visualization', }), args: { metric: { types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.metricHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.metricHelpText', { defaultMessage: 'Metric dimensions config', }), required: true, }, buckets: { types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.bucketsHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.bucketsHelpText', { defaultMessage: 'Buckets dimensions config', }), multi: true, }, splitColumn: { types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.splitColumnHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.splitColumnHelpText', { defaultMessage: 'Split by column dimension config', }), multi: true, }, splitRow: { types: ['vis_dimension'], - help: i18n.translate('visTypePie.function.args.splitRowHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.splitRowHelpText', { defaultMessage: 'Split by row dimension config', }), multi: true, }, addTooltip: { types: ['boolean'], - help: i18n.translate('visTypePie.function.args.addTooltipHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.addTooltipHelpText', { defaultMessage: 'Show tooltip on slice hover', }), default: true, }, addLegend: { types: ['boolean'], - help: i18n.translate('visTypePie.function.args.addLegendHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.addLegendHelpText', { defaultMessage: 'Show legend chart legend', }), }, legendPosition: { types: ['string'], - help: i18n.translate('visTypePie.function.args.legendPositionHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.legendPositionHelpText', { defaultMessage: 'Position the legend on top, bottom, left, right of the chart', }), }, nestedLegend: { types: ['boolean'], - help: i18n.translate('visTypePie.function.args.nestedLegendHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.nestedLegendHelpText', { defaultMessage: 'Show a more detailed legend', }), default: false, }, truncateLegend: { types: ['boolean'], - help: i18n.translate('visTypePie.function.args.truncateLegendHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.truncateLegendHelpText', { defaultMessage: 'Defines if the legend items will be truncated or not', }), default: true, }, maxLegendLines: { types: ['number'], - help: i18n.translate('visTypePie.function.args.maxLegendLinesHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.maxLegendLinesHelpText', { defaultMessage: 'Defines the number of lines per legend item', }), }, distinctColors: { types: ['boolean'], - help: i18n.translate('visTypePie.function.args.distinctColorsHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.distinctColorsHelpText', { defaultMessage: 'Maps different color per slice. Slices with the same value have the same color', }), @@ -112,33 +97,33 @@ export const createPieVisFn = (): VisTypePieExpressionFunctionDefinition => ({ }, isDonut: { types: ['boolean'], - help: i18n.translate('visTypePie.function.args.isDonutHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.isDonutHelpText', { defaultMessage: 'Displays the pie chart as donut', }), default: false, }, emptySizeRatio: { types: ['number'], - help: i18n.translate('visTypePie.function.args.emptySizeRatioHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.emptySizeRatioHelpText', { defaultMessage: 'Defines donut inner empty area size', }), }, palette: { types: ['string'], - help: i18n.translate('visTypePie.function.args.paletteHelpText', { + help: i18n.translate('expressionPie.pieVis.function.args.paletteHelpText', { defaultMessage: 'Defines the chart palette name', }), default: 'default', }, labels: { - types: ['pie_labels'], - help: i18n.translate('visTypePie.function.args.labelsHelpText', { + types: [PIE_LABELS_VALUE], + help: i18n.translate('expressionPie.pieVis.function.args.labelsHelpText', { defaultMessage: 'Pie labels config', }), }, }, fn(context, args, handlers) { - const visConfig = { + const visConfig: PieVisParams = { ...args, palette: { type: 'palette', @@ -156,25 +141,25 @@ export const createPieVisFn = (): VisTypePieExpressionFunctionDefinition => ({ const logTable = prepareLogTable(context, [ [ [args.metric], - i18n.translate('visTypePie.function.dimension.metric', { + i18n.translate('expressionPie.pieVis.function.dimension.metric', { defaultMessage: 'Slice size', }), ], [ args.buckets, - i18n.translate('visTypePie.function.adimension.buckets', { + i18n.translate('expressionPie.pieVis.function.dimension.buckets', { defaultMessage: 'Slice', }), ], [ args.splitColumn, - i18n.translate('visTypePie.function.dimension.splitcolumn', { + i18n.translate('expressionPie.pieVis.function.dimension.splitcolumn', { defaultMessage: 'Column split', }), ], [ args.splitRow, - i18n.translate('visTypePie.function.dimension.splitrow', { + i18n.translate('expressionPie.pieVis.function.dimension.splitrow', { defaultMessage: 'Row split', }), ], @@ -184,7 +169,7 @@ export const createPieVisFn = (): VisTypePieExpressionFunctionDefinition => ({ return { type: 'render', - as: vislibPieName, + as: PIE_VIS_EXPRESSION_NAME, value: { visData: context, visConfig, diff --git a/src/plugins/chart_expressions/expression_pie/common/index.ts b/src/plugins/chart_expressions/expression_pie/common/index.ts new file mode 100755 index 0000000000000..c5943c54c0c65 --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/common/index.ts @@ -0,0 +1,32 @@ +/* + * 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. + */ + +export { + PLUGIN_ID, + PLUGIN_NAME, + PIE_VIS_EXPRESSION_NAME, + PIE_LABELS_VALUE, + PIE_LABELS_FUNCTION, +} from './constants'; + +export { pieVisFunction, pieLabelsFunction } from './expression_functions'; + +export type { + ExpressionValuePieLabels, + PieVisExpressionFunctionDefinition, +} from './types/expression_functions'; + +export type { + PieVisParams, + PieVisConfig, + LabelsParams, + Dimension, + Dimensions, +} from './types/expression_renderers'; + +export { ValueFormats, LabelPositions, EmptySizeRatios } from './types/expression_renderers'; diff --git a/src/plugins/chart_expressions/expression_pie/common/types/expression_functions.ts b/src/plugins/chart_expressions/expression_pie/common/types/expression_functions.ts new file mode 100644 index 0000000000000..07f2ee927769b --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/common/types/expression_functions.ts @@ -0,0 +1,46 @@ +/* + * 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 { PIE_LABELS_VALUE, PIE_VIS_EXPRESSION_NAME } from '../constants'; +import { + ExpressionFunctionDefinition, + Datatable, + ExpressionValueRender, + ExpressionValueBoxed, +} from '../../../../expressions/common'; +import { RenderValue, PieVisConfig } from './expression_renderers'; + +export interface PieLabelsArguments { + show: boolean; + position: string; + values: boolean; + truncate: number | null; + valuesFormat: string; + lastLevel: boolean; + percentDecimals: number; +} + +export type ExpressionValuePieLabels = ExpressionValueBoxed< + typeof PIE_LABELS_VALUE, + { + show: boolean; + position: string; + values: boolean; + truncate: number | null; + valuesFormat: string; + last_level: boolean; + percentDecimals: number; + } +>; + +export type PieVisExpressionFunctionDefinition = ExpressionFunctionDefinition< + typeof PIE_VIS_EXPRESSION_NAME, + Datatable, + PieVisConfig, + ExpressionValueRender +>; diff --git a/src/plugins/chart_expressions/expression_pie/common/types/expression_renderers.ts b/src/plugins/chart_expressions/expression_pie/common/types/expression_renderers.ts new file mode 100644 index 0000000000000..25908f8c88522 --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/common/types/expression_renderers.ts @@ -0,0 +1,106 @@ +/* + * 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 { Position } from '@elastic/charts'; +import { Datatable, DatatableColumn } from '../../../../expressions/common'; +import { SerializedFieldFormat } from '../../../../field_formats/common'; +import { ExpressionValueVisDimension } from '../../../../visualizations/common'; +import { PaletteOutput } from '../../../../charts/common'; +import { ExpressionValuePieLabels } from './expression_functions'; + +export enum EmptySizeRatios { + SMALL = 0.3, + MEDIUM = 0.54, + LARGE = 0.7, +} + +export interface Dimension { + accessor: number; + format: { + id?: string; + params?: SerializedFieldFormat; + }; +} + +export interface Dimensions { + metric: Dimension; + buckets?: Dimension[]; + splitRow?: Dimension[]; + splitColumn?: Dimension[]; +} + +export interface LabelsParams { + show: boolean; + last_level: boolean; + position: LabelPositions; + values: boolean; + truncate: number | null; + valuesFormat: ValueFormats; + percentDecimals: number; +} + +interface PieCommonParams { + addTooltip: boolean; + addLegend: boolean; + legendPosition: Position; + nestedLegend: boolean; + truncateLegend: boolean; + maxLegendLines: number; + distinctColors: boolean; + isDonut: boolean; + emptySizeRatio?: EmptySizeRatios; +} + +export interface PieVisParams extends PieCommonParams { + dimensions: Dimensions; + labels: LabelsParams; + palette: PaletteOutput; +} + +export interface PieVisConfig extends PieCommonParams { + buckets?: ExpressionValueVisDimension[]; + metric: ExpressionValueVisDimension; + splitColumn?: ExpressionValueVisDimension[]; + splitRow?: ExpressionValueVisDimension[]; + labels: ExpressionValuePieLabels; + palette: string; +} + +export interface RenderValue { + visData: Datatable; + visType: string; + visConfig: PieVisParams; + syncColors: boolean; +} + +export enum LabelPositions { + INSIDE = 'inside', + DEFAULT = 'default', +} + +export enum ValueFormats { + PERCENT = 'percent', + VALUE = 'value', +} + +export interface BucketColumns extends DatatableColumn { + format?: { + id?: string; + params?: SerializedFieldFormat; + }; +} + +export interface PieContainerDimensions { + width: number; + height: number; +} + +export interface SplitDimensionParams { + order?: string; + orderBy?: string; +} diff --git a/src/plugins/vis_types/pie/public/editor/constants.ts b/src/plugins/chart_expressions/expression_pie/common/types/index.ts similarity index 81% rename from src/plugins/vis_types/pie/public/editor/constants.ts rename to src/plugins/chart_expressions/expression_pie/common/types/index.ts index 6fd0c7ab0a4a6..9c50bfab1305d 100644 --- a/src/plugins/vis_types/pie/public/editor/constants.ts +++ b/src/plugins/chart_expressions/expression_pie/common/types/index.ts @@ -6,8 +6,5 @@ * Side Public License, v 1. */ -export enum EMPTY_SIZE_RATIOS { - SMALL = 0.3, - MEDIUM = 0.54, - LARGE = 0.7, -} +export * from './expression_functions'; +export * from './expression_renderers'; diff --git a/src/plugins/chart_expressions/expression_pie/jest.config.js b/src/plugins/chart_expressions/expression_pie/jest.config.js new file mode 100644 index 0000000000000..d8dd288fab086 --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/jest.config.js @@ -0,0 +1,19 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../', + roots: ['/src/plugins/chart_expressions/expression_pie'], + coverageDirectory: + '/target/kibana-coverage/jest/src/plugins/chart_expressions/expression_pie', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/src/plugins/chart_expressions/expression_pie/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/chart_expressions/expression_pie/kibana.json b/src/plugins/chart_expressions/expression_pie/kibana.json new file mode 100755 index 0000000000000..f378f2824f17d --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/kibana.json @@ -0,0 +1,18 @@ +{ + "id": "expressionPie", + "version": "1.0.0", + "kibanaVersion": "kibana", + "owner": { + "name": "Vis Editors", + "githubTeam": "kibana-vis-editors" + }, + "description": "Expression Pie plugin adds a `pie` renderer and function to the expression plugin. The renderer will display the `pie` chart.", + "server": true, + "ui": true, + "extraPublicDirs": [ + "common" + ], + "requiredPlugins": ["charts", "data", "expressions", "visualizations"], + "requiredBundles": ["kibanaReact"], + "optionalPlugins": [] +} diff --git a/src/plugins/vis_types/pie/public/components/chart_split.tsx b/src/plugins/chart_expressions/expression_pie/public/components/chart_split.tsx similarity index 97% rename from src/plugins/vis_types/pie/public/components/chart_split.tsx rename to src/plugins/chart_expressions/expression_pie/public/components/chart_split.tsx index 563d9e9234b66..64370828cea41 100644 --- a/src/plugins/vis_types/pie/public/components/chart_split.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/components/chart_split.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { Accessor, AccessorFn, GroupBy, GroupBySort, SmallMultiples } from '@elastic/charts'; import { DatatableColumn } from '../../../../expressions/public'; -import { SplitDimensionParams } from '../types'; +import { SplitDimensionParams } from '../../common/types'; interface ChartSplitProps { splitColumnAccessor?: Accessor | AccessorFn; diff --git a/src/plugins/chart_expressions/expression_pie/public/components/index.ts b/src/plugins/chart_expressions/expression_pie/public/components/index.ts new file mode 100644 index 0000000000000..ef4589dac271e --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/public/components/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export * from './pie_vis_component'; diff --git a/src/plugins/vis_types/pie/public/chart.scss b/src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.scss similarity index 100% rename from src/plugins/vis_types/pie/public/chart.scss rename to src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.scss diff --git a/src/plugins/vis_types/pie/public/pie_component.test.tsx b/src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.test.tsx similarity index 94% rename from src/plugins/vis_types/pie/public/pie_component.test.tsx rename to src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.test.tsx index 85ce1947087ad..57a65d24e6bcf 100644 --- a/src/plugins/vis_types/pie/public/pie_component.test.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.test.tsx @@ -8,14 +8,14 @@ import React from 'react'; import { Settings, TooltipType, SeriesIdentifier } from '@elastic/charts'; -import { chartPluginMock } from '../../../charts/public/mocks'; -import { dataPluginMock } from '../../../data/public/mocks'; -import type { Datatable } from '../../../expressions/public'; +import { chartPluginMock } from '../../../../charts/public/mocks'; +import { dataPluginMock } from '../../../../data/public/mocks'; +import type { Datatable } from '../../../../expressions/public'; import { shallow, mount } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; import { act } from 'react-dom/test-utils'; -import PieComponent, { PieComponentProps } from './pie_component'; -import { createMockPieParams, createMockVisData } from './mocks'; +import PieComponent, { PieComponentProps } from './pie_vis_component'; +import { createMockPieParams, createMockVisData } from '../mocks'; jest.mock('@elastic/charts', () => { const original = jest.requireActual('@elastic/charts'); diff --git a/src/plugins/vis_types/pie/public/pie_component.tsx b/src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.tsx similarity index 94% rename from src/plugins/vis_types/pie/public/pie_component.tsx rename to src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.tsx index 053d06bb84e29..a81e5db23a209 100644 --- a/src/plugins/vis_types/pie/public/pie_component.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/components/pie_vis_component.tsx @@ -25,17 +25,22 @@ import { ClickTriggerEvent, ChartsPluginSetup, PaletteRegistry, -} from '../../../charts/public'; -import { DataPublicPluginStart } from '../../../data/public'; -import type { PersistedState } from '../../../visualizations/public'; +} from '../../../../charts/public'; +import { DataPublicPluginStart } from '../../../../data/public'; +import type { PersistedState } from '../../../../visualizations/public'; import { Datatable, DatatableColumn, IInterpreterRenderHandlers, -} from '../../../expressions/public'; -import type { FieldFormat } from '../../../field_formats/common'; -import { DEFAULT_PERCENT_DECIMALS } from '../common'; -import { PieVisParams, BucketColumns, ValueFormats, PieContainerDimensions } from './types'; +} from '../../../../expressions/public'; +import type { FieldFormat } from '../../../../field_formats/common'; +import { DEFAULT_PERCENT_DECIMALS } from '../../common/constants'; +import { + PieVisParams, + BucketColumns, + ValueFormats, + PieContainerDimensions, +} from '../../common/types/expression_renderers'; import { getColorPicker, getLayers, @@ -46,11 +51,11 @@ import { getConfig, getColumns, getSplitDimensionAccessor, -} from './utils'; -import { ChartSplit, SMALL_MULTIPLES_ID } from './components/chart_split'; -import { VisualizationNoResults } from './components/visualization_noresults'; +} from '../utils'; +import { ChartSplit, SMALL_MULTIPLES_ID } from './chart_split'; +import { VisualizationNoResults } from './visualization_noresults'; -import './chart.scss'; +import './pie_vis_component.scss'; declare global { interface Window { diff --git a/src/plugins/vis_types/pie/public/components/visualization_noresults.tsx b/src/plugins/chart_expressions/expression_pie/public/components/visualization_noresults.tsx similarity index 87% rename from src/plugins/vis_types/pie/public/components/visualization_noresults.tsx rename to src/plugins/chart_expressions/expression_pie/public/components/visualization_noresults.tsx index 1ae5340c9791a..46478556f5f9b 100644 --- a/src/plugins/vis_types/pie/public/components/visualization_noresults.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/components/visualization_noresults.tsx @@ -19,10 +19,10 @@ export const VisualizationNoResults = ({ hasNegativeValues = false }) => { body={ {hasNegativeValues - ? i18n.translate('visTypePie.negativeValuesFound', { + ? i18n.translate('expressionPie.negativeValuesFound', { defaultMessage: "Pie/donut charts can't render with negative values.", }) - : i18n.translate('visTypePie.noResultsFoundTitle', { + : i18n.translate('expressionPie.noResultsFoundTitle', { defaultMessage: 'No results found', })} diff --git a/src/plugins/chart_expressions/expression_pie/public/expression_renderers/index.ts b/src/plugins/chart_expressions/expression_pie/public/expression_renderers/index.ts new file mode 100644 index 0000000000000..3f370b63b4579 --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/public/expression_renderers/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export { getPieVisRenderer } from './pie_vis_renderer'; diff --git a/src/plugins/vis_types/pie/public/pie_renderer.tsx b/src/plugins/chart_expressions/expression_pie/public/expression_renderers/pie_vis_renderer.tsx similarity index 77% rename from src/plugins/vis_types/pie/public/pie_renderer.tsx rename to src/plugins/chart_expressions/expression_pie/public/expression_renderers/pie_vis_renderer.tsx index d930558151701..a33e9a290c25d 100644 --- a/src/plugins/vis_types/pie/public/pie_renderer.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/expression_renderers/pie_vis_renderer.tsx @@ -9,15 +9,17 @@ import React, { lazy } from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { I18nProvider } from '@kbn/i18n-react'; -import { ExpressionRenderDefinition } from '../../../expressions/public'; -import { VisualizationContainer } from '../../../visualizations/public'; -import type { PersistedState } from '../../../visualizations/public'; -import { KibanaThemeProvider } from '../../../kibana_react/public'; -import { VisTypePieDependencies } from './plugin'; +import { ExpressionRenderDefinition } from '../../../../expressions/public'; +import { VisualizationContainer } from '../../../../visualizations/public'; +import type { PersistedState } from '../../../../visualizations/public'; +import { KibanaThemeProvider } from '../../../../kibana_react/public'; -import { RenderValue, vislibPieName } from './pie_fn'; +import { PIE_VIS_EXPRESSION_NAME } from '../../common/constants'; +import { RenderValue } from '../../common/types'; -const PieComponent = lazy(() => import('./pie_component')); +import { VisTypePieDependencies } from '../plugin'; + +const PieComponent = lazy(() => import('../components/pie_vis_component')); function shouldShowNoResultsMessage(visData: any): boolean { const rows: object[] | undefined = visData?.rows; @@ -29,7 +31,7 @@ function shouldShowNoResultsMessage(visData: any): boolean { export const getPieVisRenderer: ( deps: VisTypePieDependencies ) => ExpressionRenderDefinition = ({ theme, palettes, getStartDeps }) => ({ - name: vislibPieName, + name: PIE_VIS_EXPRESSION_NAME, displayName: 'Pie visualization', reuseDomNode: true, render: async (domNode, { visConfig, visData, syncColors }, handlers) => { diff --git a/src/plugins/chart_expressions/expression_pie/public/index.ts b/src/plugins/chart_expressions/expression_pie/public/index.ts new file mode 100755 index 0000000000000..8123bc03c8e1b --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/public/index.ts @@ -0,0 +1,15 @@ +/* + * 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 { ExpressionPiePlugin } from './plugin'; + +export function plugin() { + return new ExpressionPiePlugin(); +} + +export type { ExpressionPiePluginSetup, ExpressionPiePluginStart } from './types'; diff --git a/src/plugins/vis_types/pie/public/mocks.ts b/src/plugins/chart_expressions/expression_pie/public/mocks.ts similarity index 98% rename from src/plugins/vis_types/pie/public/mocks.ts rename to src/plugins/chart_expressions/expression_pie/public/mocks.ts index cd57aeb54afbc..d970af4e36519 100644 --- a/src/plugins/vis_types/pie/public/mocks.ts +++ b/src/plugins/chart_expressions/expression_pie/public/mocks.ts @@ -7,7 +7,12 @@ */ import { Datatable } from '../../../expressions/public'; -import { BucketColumns, PieVisParams, LabelPositions, ValueFormats } from './types'; +import { + BucketColumns, + PieVisParams, + LabelPositions, + ValueFormats, +} from '../common/types/expression_renderers'; export const createMockBucketColumns = (): BucketColumns[] => { return [ diff --git a/src/plugins/chart_expressions/expression_pie/public/plugin.ts b/src/plugins/chart_expressions/expression_pie/public/plugin.ts new file mode 100755 index 0000000000000..f1ae905cc8c1c --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/public/plugin.ts @@ -0,0 +1,56 @@ +/* + * 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 { CoreSetup, CoreStart, DocLinksStart, ThemeServiceStart } from '../../../../core/public'; +import { ChartsPluginSetup } from '../../../charts/public'; +import { DataPublicPluginStart } from '../../../data/public'; +import { pieLabelsFunction, pieVisFunction } from '../common'; +import { getPieVisRenderer } from './expression_renderers'; +import { ExpressionPiePluginSetup, ExpressionPiePluginStart, SetupDeps, StartDeps } from './types'; + +/** @internal */ +export interface VisTypePieDependencies { + theme: ChartsPluginSetup['theme']; + palettes: ChartsPluginSetup['palettes']; + getStartDeps: () => Promise<{ + data: DataPublicPluginStart; + docLinks: DocLinksStart; + kibanaTheme: ThemeServiceStart; + }>; +} + +export interface VisTypePiePluginStartDependencies { + data: DataPublicPluginStart; +} + +export class ExpressionPiePlugin { + public setup( + core: CoreSetup, + { expressions, charts }: SetupDeps + ): ExpressionPiePluginSetup { + expressions.registerFunction(pieLabelsFunction); + expressions.registerFunction(pieVisFunction); + + const getStartDeps = async () => { + const [coreStart, deps] = await core.getStartServices(); + return { + data: deps.data, + docLinks: coreStart.docLinks, + kibanaTheme: coreStart.theme, + }; + }; + + expressions.registerRenderer( + getPieVisRenderer({ theme: charts.theme, palettes: charts.palettes, getStartDeps }) + ); + } + + public start(core: CoreStart, deps: StartDeps): ExpressionPiePluginStart {} + + public stop() {} +} diff --git a/src/plugins/chart_expressions/expression_pie/public/types.ts b/src/plugins/chart_expressions/expression_pie/public/types.ts new file mode 100755 index 0000000000000..92c431a31b83e --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/public/types.ts @@ -0,0 +1,23 @@ +/* + * 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 { ChartsPluginSetup } from '../../../charts/public'; +import { ExpressionsPublicPlugin, ExpressionsServiceStart } from '../../../expressions/public'; +import { VisualizationsSetup } from '../../../visualizations/public'; + +export type ExpressionPiePluginSetup = void; +export type ExpressionPiePluginStart = void; + +export interface SetupDeps { + visualizations: VisualizationsSetup; + expressions: ReturnType; + charts: ChartsPluginSetup; +} + +export interface StartDeps { + expression: ExpressionsServiceStart; +} diff --git a/src/plugins/vis_types/pie/public/utils/filter_helpers.test.ts b/src/plugins/chart_expressions/expression_pie/public/utils/filter_helpers.test.ts similarity index 100% rename from src/plugins/vis_types/pie/public/utils/filter_helpers.test.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/filter_helpers.test.ts diff --git a/src/plugins/vis_types/pie/public/utils/filter_helpers.ts b/src/plugins/chart_expressions/expression_pie/public/utils/filter_helpers.ts similarity index 98% rename from src/plugins/vis_types/pie/public/utils/filter_helpers.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/filter_helpers.ts index 31fff7612faf3..47641a7f270c2 100644 --- a/src/plugins/vis_types/pie/public/utils/filter_helpers.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/filter_helpers.ts @@ -12,7 +12,7 @@ import { DataPublicPluginStart } from '../../../../data/public'; import { ClickTriggerEvent } from '../../../../charts/public'; import { ValueClickContext } from '../../../../embeddable/public'; import type { FieldFormat } from '../../../../field_formats/common'; -import { BucketColumns } from '../types'; +import { BucketColumns } from '../../common/types'; export const canFilter = async ( event: ClickTriggerEvent | null, diff --git a/src/plugins/vis_types/pie/public/utils/get_color_picker.test.tsx b/src/plugins/chart_expressions/expression_pie/public/utils/get_color_picker.test.tsx similarity index 100% rename from src/plugins/vis_types/pie/public/utils/get_color_picker.test.tsx rename to src/plugins/chart_expressions/expression_pie/public/utils/get_color_picker.test.tsx diff --git a/src/plugins/vis_types/pie/public/utils/get_color_picker.tsx b/src/plugins/chart_expressions/expression_pie/public/utils/get_color_picker.tsx similarity index 98% rename from src/plugins/vis_types/pie/public/utils/get_color_picker.tsx rename to src/plugins/chart_expressions/expression_pie/public/utils/get_color_picker.tsx index 6bfd231aa75a6..7a1438fac2458 100644 --- a/src/plugins/vis_types/pie/public/utils/get_color_picker.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_color_picker.tsx @@ -13,7 +13,7 @@ import { PopoverAnchorPosition, EuiPopover, EuiOutsideClickDetector } from '@ela import type { DatatableRow } from '../../../../expressions/public'; import type { PersistedState } from '../../../../visualizations/public'; import { ColorPicker } from '../../../../charts/public'; -import { BucketColumns } from '../types'; +import { BucketColumns } from '../../common/types'; const KEY_CODE_ENTER = 13; diff --git a/src/plugins/vis_types/pie/public/utils/get_columns.test.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_columns.test.ts similarity index 99% rename from src/plugins/vis_types/pie/public/utils/get_columns.test.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_columns.test.ts index 7752f4300dbbf..57dc4367c7e1e 100644 --- a/src/plugins/vis_types/pie/public/utils/get_columns.test.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_columns.test.ts @@ -7,7 +7,7 @@ */ import { getColumns } from './get_columns'; -import { PieVisParams } from '../types'; +import { PieVisParams } from '../../common/types'; import { createMockPieParams, createMockVisData } from '../mocks'; const visParams = createMockPieParams(); diff --git a/src/plugins/vis_types/pie/public/utils/get_columns.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_columns.ts similarity index 95% rename from src/plugins/vis_types/pie/public/utils/get_columns.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_columns.ts index c8b8399f0f786..1cec2606294b0 100644 --- a/src/plugins/vis_types/pie/public/utils/get_columns.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_columns.ts @@ -7,7 +7,7 @@ */ import { DatatableColumn, Datatable } from '../../../../expressions/public'; -import { BucketColumns, PieVisParams } from '../types'; +import { BucketColumns, PieVisParams } from '../../common/types'; export const getColumns = ( visParams: PieVisParams, diff --git a/src/plugins/vis_types/pie/public/utils/get_config.test.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_config.test.ts similarity index 100% rename from src/plugins/vis_types/pie/public/utils/get_config.test.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_config.test.ts diff --git a/src/plugins/vis_types/pie/public/utils/get_config.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_config.ts similarity index 99% rename from src/plugins/vis_types/pie/public/utils/get_config.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_config.ts index 67852a773d697..0da439884ae68 100644 --- a/src/plugins/vis_types/pie/public/utils/get_config.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_config.ts @@ -7,7 +7,8 @@ */ import { PartitionConfig, PartitionLayout, RecursivePartial, Theme } from '@elastic/charts'; -import { LabelPositions, PieVisParams, PieContainerDimensions } from '../types'; +import { LabelPositions, PieVisParams, PieContainerDimensions } from '../../common/types'; + const MAX_SIZE = 1000; export const getConfig = ( diff --git a/src/plugins/vis_types/pie/public/utils/get_distinct_series.test.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_distinct_series.test.ts similarity index 100% rename from src/plugins/vis_types/pie/public/utils/get_distinct_series.test.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_distinct_series.test.ts diff --git a/src/plugins/vis_types/pie/public/utils/get_distinct_series.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_distinct_series.ts similarity index 95% rename from src/plugins/vis_types/pie/public/utils/get_distinct_series.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_distinct_series.ts index 8e0111391ec0f..d5014689f331f 100644 --- a/src/plugins/vis_types/pie/public/utils/get_distinct_series.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_distinct_series.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ import { DatatableRow } from '../../../../expressions/public'; -import { BucketColumns } from '../types'; +import { BucketColumns } from '../../common/types'; export const getDistinctSeries = (rows: DatatableRow[], buckets: Array>) => { const parentBucketId = buckets[0].id; diff --git a/src/plugins/vis_types/pie/public/utils/get_layers.test.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_layers.test.ts similarity index 100% rename from src/plugins/vis_types/pie/public/utils/get_layers.test.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_layers.test.ts diff --git a/src/plugins/vis_types/pie/public/utils/get_layers.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_layers.ts similarity index 99% rename from src/plugins/vis_types/pie/public/utils/get_layers.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_layers.ts index c9d8da15b78f6..b86c28580a717 100644 --- a/src/plugins/vis_types/pie/public/utils/get_layers.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_layers.ts @@ -17,7 +17,7 @@ import { isEqual } from 'lodash'; import { SeriesLayer, PaletteRegistry, lightenColor } from '../../../../charts/public'; import type { DataPublicPluginStart } from '../../../../data/public'; import type { DatatableRow } from '../../../../expressions/public'; -import type { BucketColumns, PieVisParams, SplitDimensionParams } from '../types'; +import type { BucketColumns, PieVisParams, SplitDimensionParams } from '../../common/types'; import { getDistinctSeries } from './get_distinct_series'; const EMPTY_SLICE = Symbol('empty_slice'); diff --git a/src/plugins/vis_types/pie/public/utils/get_legend_actions.tsx b/src/plugins/chart_expressions/expression_pie/public/utils/get_legend_actions.tsx similarity index 92% rename from src/plugins/vis_types/pie/public/utils/get_legend_actions.tsx rename to src/plugins/chart_expressions/expression_pie/public/utils/get_legend_actions.tsx index 2a27063a0e7d5..f796776a4cab4 100644 --- a/src/plugins/vis_types/pie/public/utils/get_legend_actions.tsx +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_legend_actions.tsx @@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n'; import { EuiContextMenuPanelDescriptor, EuiIcon, EuiPopover, EuiContextMenu } from '@elastic/eui'; import { LegendAction, SeriesIdentifier, useLegendAction } from '@elastic/charts'; import { DataPublicPluginStart } from '../../../../data/public'; -import { PieVisParams } from '../types'; +import { PieVisParams } from '../../common/types'; import { ClickTriggerEvent } from '../../../../charts/public'; export const getLegendActions = ( @@ -55,7 +55,7 @@ export const getLegendActions = ( title: `${title}`, items: [ { - name: i18n.translate('visTypePie.legend.filterForValueButtonAriaLabel', { + name: i18n.translate('expressionPie.legend.filterForValueButtonAriaLabel', { defaultMessage: 'Filter for value', }), 'data-test-subj': `legend-${title}-filterIn`, @@ -66,7 +66,7 @@ export const getLegendActions = ( }, }, { - name: i18n.translate('visTypePie.legend.filterOutValueButtonAriaLabel', { + name: i18n.translate('expressionPie.legend.filterOutValueButtonAriaLabel', { defaultMessage: 'Filter out value', }), 'data-test-subj': `legend-${title}-filterOut`, @@ -113,7 +113,7 @@ export const getLegendActions = ( }} panelPaddingSize="none" anchorPosition="upLeft" - title={i18n.translate('visTypePie.legend.filterOptionsLegend', { + title={i18n.translate('expressionPie.legend.filterOptionsLegend', { defaultMessage: '{legendDataLabel}, filter options', values: { legendDataLabel: title }, })} diff --git a/src/plugins/vis_types/pie/public/utils/get_split_dimension_accessor.ts b/src/plugins/chart_expressions/expression_pie/public/utils/get_split_dimension_accessor.ts similarity index 95% rename from src/plugins/vis_types/pie/public/utils/get_split_dimension_accessor.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/get_split_dimension_accessor.ts index b2ca7560b63c8..c414221d64842 100644 --- a/src/plugins/vis_types/pie/public/utils/get_split_dimension_accessor.ts +++ b/src/plugins/chart_expressions/expression_pie/public/utils/get_split_dimension_accessor.ts @@ -8,7 +8,7 @@ import { AccessorFn } from '@elastic/charts'; import { DatatableColumn } from '../../../../expressions/public'; import type { FieldFormatsStart } from '../../../../field_formats/public'; -import { Dimension } from '../types'; +import { Dimension } from '../../common/types'; export const getSplitDimensionAccessor = (fieldFormats: FieldFormatsStart, columns: DatatableColumn[]) => diff --git a/src/plugins/vis_types/pie/public/utils/index.ts b/src/plugins/chart_expressions/expression_pie/public/utils/index.ts similarity index 100% rename from src/plugins/vis_types/pie/public/utils/index.ts rename to src/plugins/chart_expressions/expression_pie/public/utils/index.ts diff --git a/src/plugins/chart_expressions/expression_pie/server/index.ts b/src/plugins/chart_expressions/expression_pie/server/index.ts new file mode 100755 index 0000000000000..8123bc03c8e1b --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/server/index.ts @@ -0,0 +1,15 @@ +/* + * 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 { ExpressionPiePlugin } from './plugin'; + +export function plugin() { + return new ExpressionPiePlugin(); +} + +export type { ExpressionPiePluginSetup, ExpressionPiePluginStart } from './types'; diff --git a/src/plugins/chart_expressions/expression_pie/server/plugin.ts b/src/plugins/chart_expressions/expression_pie/server/plugin.ts new file mode 100755 index 0000000000000..f46983f0f8825 --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/server/plugin.ts @@ -0,0 +1,23 @@ +/* + * 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 { CoreSetup, CoreStart, Plugin } from '../../../../core/server'; +import { pieLabelsFunction, pieVisFunction } from '../common'; +import { ExpressionPiePluginSetup, ExpressionPiePluginStart, SetupDeps, StartDeps } from './types'; + +export class ExpressionPiePlugin + implements Plugin +{ + public setup(core: CoreSetup, { expressions }: SetupDeps) { + expressions.registerFunction(pieLabelsFunction); + expressions.registerFunction(pieVisFunction); + } + + public start(core: CoreStart, deps: StartDeps) {} + + public stop() {} +} diff --git a/src/plugins/chart_expressions/expression_pie/server/types.ts b/src/plugins/chart_expressions/expression_pie/server/types.ts new file mode 100755 index 0000000000000..ff3e00bdf6dab --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/server/types.ts @@ -0,0 +1,19 @@ +/* + * 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 { ExpressionsServerStart, ExpressionsServerSetup } from '../../../expressions/server'; + +export type ExpressionPiePluginSetup = void; +export type ExpressionPiePluginStart = void; + +export interface SetupDeps { + expressions: ExpressionsServerSetup; +} + +export interface StartDeps { + expression: ExpressionsServerStart; +} diff --git a/src/plugins/chart_expressions/expression_pie/tsconfig.json b/src/plugins/chart_expressions/expression_pie/tsconfig.json new file mode 100644 index 0000000000000..c2660907079df --- /dev/null +++ b/src/plugins/chart_expressions/expression_pie/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./target/types", + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true, + "isolatedModules": true + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "references": [ + { "path": "../../../core/tsconfig.json" }, + { "path": "../../expressions/tsconfig.json" }, + { "path": "../../data/tsconfig.json" }, + { "path": "../../charts/tsconfig.json" }, + { "path": "../../visualizations/tsconfig.json" } + ] +} diff --git a/src/plugins/vis_types/pie/kibana.json b/src/plugins/vis_types/pie/kibana.json index 52e02024ec31c..fb310d8afd82d 100644 --- a/src/plugins/vis_types/pie/kibana.json +++ b/src/plugins/vis_types/pie/kibana.json @@ -3,8 +3,8 @@ "version": "kibana", "ui": true, "server": true, - "requiredPlugins": ["charts", "data", "expressions", "visualizations", "usageCollection"], - "requiredBundles": ["visDefaultEditor", "kibanaReact"], + "requiredPlugins": ["charts", "data", "expressions", "visualizations", "usageCollection", "expressionPie"], + "requiredBundles": ["visDefaultEditor"], "extraPublicDirs": ["common/index"], "owner": { "name": "Vis Editors", diff --git a/src/plugins/vis_types/pie/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_types/pie/public/__snapshots__/to_ast.test.ts.snap index 0c8398a142027..638d97d15eaff 100644 --- a/src/plugins/vis_types/pie/public/__snapshots__/to_ast.test.ts.snap +++ b/src/plugins/vis_types/pie/public/__snapshots__/to_ast.test.ts.snap @@ -83,7 +83,7 @@ Object { true, ], }, - "function": "pielabels", + "function": "pie_labels", "type": "function", }, ], diff --git a/src/plugins/vis_types/pie/public/editor/collections.ts b/src/plugins/vis_types/pie/public/editor/collections.ts index 64e4694eb449f..16e6bd9372897 100644 --- a/src/plugins/vis_types/pie/public/editor/collections.ts +++ b/src/plugins/vis_types/pie/public/editor/collections.ts @@ -7,8 +7,11 @@ */ import { i18n } from '@kbn/i18n'; -import { EMPTY_SIZE_RATIOS } from './constants'; -import { LabelPositions, ValueFormats } from '../types'; +import { + LabelPositions, + ValueFormats, + EmptySizeRatios, +} from '../../../../chart_expressions/expression_pie/common'; export const getLabelPositions = [ { @@ -43,21 +46,21 @@ export const getValuesFormats = [ export const emptySizeRatioOptions = [ { id: 'emptySizeRatioOption-small', - value: EMPTY_SIZE_RATIOS.SMALL, + value: EmptySizeRatios.SMALL, label: i18n.translate('visTypePie.emptySizeRatioOptions.small', { defaultMessage: 'Small', }), }, { id: 'emptySizeRatioOption-medium', - value: EMPTY_SIZE_RATIOS.MEDIUM, + value: EmptySizeRatios.MEDIUM, label: i18n.translate('visTypePie.emptySizeRatioOptions.medium', { defaultMessage: 'Medium', }), }, { id: 'emptySizeRatioOption-large', - value: EMPTY_SIZE_RATIOS.LARGE, + value: EmptySizeRatios.LARGE, label: i18n.translate('visTypePie.emptySizeRatioOptions.large', { defaultMessage: 'Large', }), diff --git a/src/plugins/vis_types/pie/public/editor/components/index.tsx b/src/plugins/vis_types/pie/public/editor/components/index.tsx index 1d44dc21c68e8..c61e2724a466c 100644 --- a/src/plugins/vis_types/pie/public/editor/components/index.tsx +++ b/src/plugins/vis_types/pie/public/editor/components/index.tsx @@ -8,7 +8,8 @@ import React, { lazy } from 'react'; import { VisEditorOptionsProps } from '../../../../../visualizations/public'; -import { PieVisParams, PieTypeProps } from '../../types'; +import { PieTypeProps } from '../../types'; +import { PieVisParams } from '../../../../../chart_expressions/expression_pie/common'; const PieOptionsLazy = lazy(() => import('./pie')); diff --git a/src/plugins/vis_types/pie/public/editor/components/pie.tsx b/src/plugins/vis_types/pie/public/editor/components/pie.tsx index 97f427d7b91b7..18842af370628 100644 --- a/src/plugins/vis_types/pie/public/editor/components/pie.tsx +++ b/src/plugins/vis_types/pie/public/editor/components/pie.tsx @@ -33,7 +33,13 @@ import { VisEditorOptionsProps } from '../../../../../visualizations/public'; import { TruncateLabelsOption } from './truncate_labels'; import { PaletteRegistry } from '../../../../../charts/public'; import { DEFAULT_PERCENT_DECIMALS } from '../../../common'; -import { PieVisParams, LabelPositions, ValueFormats, PieTypeProps } from '../../types'; +import { PieTypeProps } from '../../types'; +import { + PieVisParams, + LabelPositions, + ValueFormats, +} from '../../../../../chart_expressions/expression_pie/common'; + import { emptySizeRatioOptions, getLabelPositions, getValuesFormats } from '../collections'; import { getLegendPositions } from '../positions'; diff --git a/src/plugins/vis_types/pie/public/plugin.ts b/src/plugins/vis_types/pie/public/plugin.ts index 5de26975896ee..1c0a3994bb8dc 100644 --- a/src/plugins/vis_types/pie/public/plugin.ts +++ b/src/plugins/vis_types/pie/public/plugin.ts @@ -8,20 +8,15 @@ import { CoreSetup, DocLinksStart, ThemeServiceStart } from 'src/core/public'; import { VisualizationsSetup } from '../../../visualizations/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../../expressions/public'; import { ChartsPluginSetup } from '../../../charts/public'; import { UsageCollectionSetup } from '../../../usage_collection/public'; import { DataPublicPluginStart } from '../../../data/public'; import { LEGACY_PIE_CHARTS_LIBRARY } from '../common'; -import { pieLabels as pieLabelsExpressionFunction } from './expression_functions/pie_labels'; -import { createPieVisFn } from './pie_fn'; -import { getPieVisRenderer } from './pie_renderer'; import { pieVisType } from './vis_type'; /** @internal */ export interface VisTypePieSetupDependencies { visualizations: VisualizationsSetup; - expressions: ReturnType; charts: ChartsPluginSetup; usageCollection: UsageCollectionSetup; } @@ -45,24 +40,10 @@ export interface VisTypePieDependencies { export class VisTypePiePlugin { setup( core: CoreSetup, - { expressions, visualizations, charts, usageCollection }: VisTypePieSetupDependencies + { visualizations, charts, usageCollection }: VisTypePieSetupDependencies ) { if (!core.uiSettings.get(LEGACY_PIE_CHARTS_LIBRARY, false)) { - const getStartDeps = async () => { - const [coreStart, deps] = await core.getStartServices(); - return { - data: deps.data, - docLinks: coreStart.docLinks, - kibanaTheme: coreStart.theme, - }; - }; const trackUiMetric = usageCollection?.reportUiCounter.bind(usageCollection, 'vis_type_pie'); - - expressions.registerFunction(createPieVisFn); - expressions.registerRenderer( - getPieVisRenderer({ theme: charts.theme, palettes: charts.palettes, getStartDeps }) - ); - expressions.registerFunction(pieLabelsExpressionFunction); visualizations.createBaseVisualization( pieVisType({ showElasticChartsOptions: true, diff --git a/src/plugins/vis_types/pie/public/to_ast.test.ts b/src/plugins/vis_types/pie/public/to_ast.test.ts index 9d1dba32f2623..87e279e787b32 100644 --- a/src/plugins/vis_types/pie/public/to_ast.test.ts +++ b/src/plugins/vis_types/pie/public/to_ast.test.ts @@ -8,7 +8,7 @@ import { Vis } from '../../../visualizations/public'; -import { PieVisParams } from './types'; +import { PieVisParams } from '../../../chart_expressions/expression_pie/common'; import { samplePieVis } from './sample_vis.test.mocks'; import { toExpressionAst } from './to_ast'; diff --git a/src/plugins/vis_types/pie/public/to_ast.ts b/src/plugins/vis_types/pie/public/to_ast.ts index 531b8516464f2..5df18e13bd472 100644 --- a/src/plugins/vis_types/pie/public/to_ast.ts +++ b/src/plugins/vis_types/pie/public/to_ast.ts @@ -8,8 +8,13 @@ import { getVisSchemas, VisToExpressionAst, SchemaConfig } from '../../../visualizations/public'; import { buildExpression, buildExpressionFunction } from '../../../expressions/public'; -import { PieVisParams, LabelsParams } from './types'; -import { vislibPieName, VisTypePieExpressionFunctionDefinition } from './pie_fn'; +import { + PIE_VIS_EXPRESSION_NAME, + PIE_LABELS_FUNCTION, + PieVisExpressionFunctionDefinition, + PieVisParams, + LabelsParams, +} from '../../../chart_expressions/expression_pie/common'; import { getEsaggsFn } from './to_ast_esaggs'; const prepareDimension = (params: SchemaConfig) => { @@ -24,7 +29,7 @@ const prepareDimension = (params: SchemaConfig) => { }; const prepareLabels = (params: LabelsParams) => { - const pieLabels = buildExpressionFunction('pielabels', { + const pieLabels = buildExpressionFunction(PIE_LABELS_FUNCTION, { show: params.show, lastLevel: params.last_level, values: params.values, @@ -63,8 +68,8 @@ export const toExpressionAst: VisToExpressionAst = async (vis, par splitRow: schemas.split_row?.map(prepareDimension), }; - const visTypePie = buildExpressionFunction( - vislibPieName, + const visTypePie = buildExpressionFunction( + PIE_VIS_EXPRESSION_NAME, args ); diff --git a/src/plugins/vis_types/pie/public/to_ast_esaggs.ts b/src/plugins/vis_types/pie/public/to_ast_esaggs.ts index 48a7dc50de171..41eddedd6fa2c 100644 --- a/src/plugins/vis_types/pie/public/to_ast_esaggs.ts +++ b/src/plugins/vis_types/pie/public/to_ast_esaggs.ts @@ -12,8 +12,7 @@ import { EsaggsExpressionFunctionDefinition, IndexPatternLoadExpressionFunctionDefinition, } from '../../../data/public'; - -import { PieVisParams } from './types'; +import { PieVisParams } from '../../../chart_expressions/expression_pie/common'; /** * Get esaggs expressions function diff --git a/src/plugins/vis_types/pie/public/types/types.ts b/src/plugins/vis_types/pie/public/types/types.ts index 4745ee0f95ed5..f17087820f932 100644 --- a/src/plugins/vis_types/pie/public/types/types.ts +++ b/src/plugins/vis_types/pie/public/types/types.ts @@ -6,96 +6,13 @@ * Side Public License, v 1. */ -import { Position } from '@elastic/charts'; import { UiCounterMetricType } from '@kbn/analytics'; -import { DatatableColumn } from '../../../../expressions/public'; -import type { SerializedFieldFormat } from '../../../../field_formats/common'; -import { ExpressionValueVisDimension } from '../../../../visualizations/public'; -import { ExpressionValuePieLabels } from '../expression_functions/pie_labels'; -import { PaletteOutput, ChartsPluginSetup } from '../../../../charts/public'; -import { EMPTY_SIZE_RATIOS } from '../editor/constants'; +import { ChartsPluginSetup } from '../../../../charts/public'; -export interface Dimension { - accessor: number; - format: { - id?: string; - params?: SerializedFieldFormat; - }; -} - -export interface Dimensions { - metric: Dimension; - buckets?: Dimension[]; - splitRow?: Dimension[]; - splitColumn?: Dimension[]; -} - -interface PieCommonParams { - addTooltip: boolean; - addLegend: boolean; - legendPosition: Position; - nestedLegend: boolean; - truncateLegend: boolean; - maxLegendLines: number; - distinctColors: boolean; - isDonut: boolean; - emptySizeRatio?: EMPTY_SIZE_RATIOS; -} - -export interface LabelsParams { - show: boolean; - last_level: boolean; - position: LabelPositions; - values: boolean; - truncate: number | null; - valuesFormat: ValueFormats; - percentDecimals: number; -} - -export interface PieVisParams extends PieCommonParams { - dimensions: Dimensions; - labels: LabelsParams; - palette: PaletteOutput; -} - -export interface PieVisConfig extends PieCommonParams { - buckets?: ExpressionValueVisDimension[]; - metric: ExpressionValueVisDimension; - splitColumn?: ExpressionValueVisDimension[]; - splitRow?: ExpressionValueVisDimension[]; - labels: ExpressionValuePieLabels; - palette: string; -} - -export interface BucketColumns extends DatatableColumn { - format?: { - id?: string; - params?: SerializedFieldFormat; - }; -} - -export enum LabelPositions { - INSIDE = 'inside', - DEFAULT = 'default', -} - -export enum ValueFormats { - PERCENT = 'percent', - VALUE = 'value', -} +export type { Dimension, Dimensions } from '../../../../chart_expressions/expression_pie/common'; export interface PieTypeProps { showElasticChartsOptions?: boolean; palettes?: ChartsPluginSetup['palettes']; trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } - -export interface SplitDimensionParams { - order?: string; - orderBy?: string; -} - -export interface PieContainerDimensions { - width: number; - height: number; -} diff --git a/src/plugins/vis_types/pie/public/vis_type/pie.ts b/src/plugins/vis_types/pie/public/vis_type/pie.ts index 845b2bae1c89d..a552398708497 100644 --- a/src/plugins/vis_types/pie/public/vis_type/pie.ts +++ b/src/plugins/vis_types/pie/public/vis_type/pie.ts @@ -11,10 +11,15 @@ import { Position } from '@elastic/charts'; import { AggGroupNames } from '../../../../data/public'; import { VIS_EVENT_TO_TRIGGER, VisTypeDefinition } from '../../../../visualizations/public'; import { DEFAULT_PERCENT_DECIMALS } from '../../common'; -import { PieVisParams, LabelPositions, ValueFormats, PieTypeProps } from '../types'; +import { PieTypeProps } from '../types'; +import { + PieVisParams, + LabelPositions, + ValueFormats, + EmptySizeRatios, +} from '../../../../chart_expressions/expression_pie/common'; import { toExpressionAst } from '../to_ast'; import { getPieOptions } from '../editor/components'; -import { EMPTY_SIZE_RATIOS } from '../editor/constants'; export const getPieVisTypeDefinition = ({ showElasticChartsOptions = false, @@ -40,7 +45,7 @@ export const getPieVisTypeDefinition = ({ maxLegendLines: 1, distinctColors: false, isDonut: true, - emptySizeRatio: EMPTY_SIZE_RATIOS.SMALL, + emptySizeRatio: EmptySizeRatios.SMALL, palette: { type: 'palette', name: 'default', diff --git a/src/plugins/vis_types/pie/tsconfig.json b/src/plugins/vis_types/pie/tsconfig.json index 99e25a4eba632..9ad4e8efe907b 100644 --- a/src/plugins/vis_types/pie/tsconfig.json +++ b/src/plugins/vis_types/pie/tsconfig.json @@ -20,6 +20,7 @@ { "path": "../../visualizations/tsconfig.json" }, { "path": "../../usage_collection/tsconfig.json" }, { "path": "../../vis_default_editor/tsconfig.json" }, - { "path": "../../field_formats/tsconfig.json" } + { "path": "../../field_formats/tsconfig.json" }, + { "path": "../../chart_expressions/expression_pie/tsconfig.json" } ] } \ No newline at end of file diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index a64270bf1ebc8..a130b52ab53ca 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -4182,44 +4182,44 @@ "visTypePie.editors.pie.showTopLevelOnlyLabel": "トップレベルのみ表示", "visTypePie.editors.pie.showValuesLabel": "値を表示", "visTypePie.editors.pie.valueFormatsLabel": "値", - "visTypePie.function.adimension.buckets": "スライス", - "visTypePie.function.args.addLegendHelpText": "グラフ凡例を表示", - "visTypePie.function.args.addTooltipHelpText": "スライスにカーソルを置いたときにツールチップを表示", - "visTypePie.function.args.bucketsHelpText": "バケットディメンション構成", - "visTypePie.function.args.distinctColorsHelpText": "スライスごとに異なる色をマッピングします。同じ値のスライスは同じ色になります", - "visTypePie.function.args.isDonutHelpText": "円グラフをドーナツグラフとして表示します", - "visTypePie.function.args.labelsHelpText": "円グラフラベル構成", - "visTypePie.function.args.legendPositionHelpText": "グラフの上、下、左、右に凡例を配置", - "visTypePie.function.args.maxLegendLinesHelpText": "凡例項目ごとの行数を定義します", - "visTypePie.function.args.metricHelpText": "メトリックディメンション構成", - "visTypePie.function.args.nestedLegendHelpText": "詳細凡例を表示", - "visTypePie.function.args.paletteHelpText": "グラフパレット名を定義します", - "visTypePie.function.args.splitColumnHelpText": "列ディメンション構成で分割", - "visTypePie.function.args.splitRowHelpText": "行ディメンション構成で分割", - "visTypePie.function.args.truncateLegendHelpText": "凡例項目が切り捨てられるかどうかを定義します", - "visTypePie.function.dimension.metric": "スライスサイズ", - "visTypePie.function.dimension.splitcolumn": "列分割", - "visTypePie.function.dimension.splitrow": "行分割", - "visTypePie.function.pieLabels.help": "円グラフラベルオブジェクトを生成します", - "visTypePie.function.pieLabels.lastLevel.help": "最上位のラベルのみを表示", - "visTypePie.function.pieLabels.percentDecimals.help": "割合として値に表示される10進数を定義します", - "visTypePie.function.pieLabels.position.help": "ラベル位置を定義します", - "visTypePie.function.pieLabels.show.help": "円グラフのラベルを表示します", - "visTypePie.function.pieLabels.truncate.help": "スライス値が表示される文字数を定義します", - "visTypePie.function.pieLabels.values.help": "スライス内の値を定義します", - "visTypePie.function.pieLabels.valuesFormat.help": "値の形式を定義します", - "visTypePie.functions.help": "パイビジュアライゼーション", + "expressionPie.pieVis.function.dimension.buckets": "スライス", + "expressionPie.pieVis.function.args.addLegendHelpText": "グラフ凡例を表示", + "expressionPie.pieVis.function.args.addTooltipHelpText": "スライスにカーソルを置いたときにツールチップを表示", + "expressionPie.pieVis.function.args.bucketsHelpText": "バケットディメンション構成", + "expressionPie.pieVis.function.args.distinctColorsHelpText": "スライスごとに異なる色をマッピングします。同じ値のスライスは同じ色になります", + "expressionPie.pieVis.function.args.isDonutHelpText": "円グラフをドーナツグラフとして表示します", + "expressionPie.pieVis.function.args.labelsHelpText": "円グラフラベル構成", + "expressionPie.pieVis.function.args.legendPositionHelpText": "グラフの上、下、左、右に凡例を配置", + "expressionPie.pieVis.function.args.maxLegendLinesHelpText": "凡例項目ごとの行数を定義します", + "expressionPie.pieVis.function.args.metricHelpText": "メトリックディメンション構成", + "expressionPie.pieVis.function.args.nestedLegendHelpText": "詳細凡例を表示", + "expressionPie.pieVis.function.args.paletteHelpText": "グラフパレット名を定義します", + "expressionPie.pieVis.function.args.splitColumnHelpText": "列ディメンション構成で分割", + "expressionPie.pieVis.function.args.splitRowHelpText": "行ディメンション構成で分割", + "expressionPie.pieVis.function.args.truncateLegendHelpText": "凡例項目が切り捨てられるかどうかを定義します", + "expressionPie.pieVis.function.dimension.metric": "スライスサイズ", + "expressionPie.pieVis.function.dimension.splitcolumn": "列分割", + "expressionPie.pieVis.function.dimension.splitrow": "行分割", + "expressionPie.pieLabels.function.help": "円グラフラベルオブジェクトを生成します", + "expressionPie.pieLabels.function.args.lastLevel.help": "最上位のラベルのみを表示", + "expressionPie.pieLabels.function.args.percentDecimals.help": "割合として値に表示される10進数を定義します", + "expressionPie.pieLabels.function.args.position.help": "ラベル位置を定義します", + "expressionPie.pieLabels.function.args.show.help": "円グラフのラベルを表示します", + "expressionPie.pieLabels.function.args.truncate.help": "スライス値が表示される文字数を定義します", + "expressionPie.pieLabels.function.args.values.help": "スライス内の値を定義します", + "expressionPie.pieLabels.function.args.valuesFormat.help": "値の形式を定義します", + "expressionPie.pieVis.function.help": "パイビジュアライゼーション", "visTypePie.labelPositions.insideOrOutsideText": "内部または外部", "visTypePie.labelPositions.insideText": "内部", - "visTypePie.legend.filterForValueButtonAriaLabel": "値でフィルター", - "visTypePie.legend.filterOptionsLegend": "{legendDataLabel}、フィルターオプション", - "visTypePie.legend.filterOutValueButtonAriaLabel": "値を除外", + "expressionPie.legend.filterForValueButtonAriaLabel": "値でフィルター", + "expressionPie.legend.filterOptionsLegend": "{legendDataLabel}、フィルターオプション", + "expressionPie.legend.filterOutValueButtonAriaLabel": "値を除外", "visTypePie.legendPositions.bottomText": "一番下", "visTypePie.legendPositions.leftText": "左", "visTypePie.legendPositions.rightText": "右", "visTypePie.legendPositions.topText": "トップ", - "visTypePie.negativeValuesFound": "円/ドーナツグラフは負の値では表示できません。", - "visTypePie.noResultsFoundTitle": "結果が見つかりませんでした", + "expressionPie.negativeValuesFound": "円/ドーナツグラフは負の値では表示できません。", + "expressionPie.noResultsFoundTitle": "結果が見つかりませんでした", "visTypePie.pie.metricTitle": "スライスサイズ", "visTypePie.pie.pieDescription": "全体に対する比率でデータを比較します。", "visTypePie.pie.pieTitle": "円", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index cfe349de2704e..080bcf6663cfb 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -4214,44 +4214,44 @@ "visTypePie.editors.pie.showTopLevelOnlyLabel": "仅显示顶级", "visTypePie.editors.pie.showValuesLabel": "显示值", "visTypePie.editors.pie.valueFormatsLabel": "值", - "visTypePie.function.adimension.buckets": "切片", - "visTypePie.function.args.addLegendHelpText": "显示图表图例", - "visTypePie.function.args.addTooltipHelpText": "在切片上悬浮时显示工具提示", - "visTypePie.function.args.bucketsHelpText": "存储桶维度配置", - "visTypePie.function.args.distinctColorsHelpText": "每个切片映射不同颜色。具有相同值的切片具有相同的颜色", - "visTypePie.function.args.isDonutHelpText": "将饼图显示为圆环图", - "visTypePie.function.args.labelsHelpText": "饼图标签配置", - "visTypePie.function.args.legendPositionHelpText": "将图例定位于图表的顶部、底部、左侧、右侧", - "visTypePie.function.args.maxLegendLinesHelpText": "定义每个图例项的行数", - "visTypePie.function.args.metricHelpText": "指标维度配置", - "visTypePie.function.args.nestedLegendHelpText": "显示更详细的图例", - "visTypePie.function.args.paletteHelpText": "定义图表调色板名称", - "visTypePie.function.args.splitColumnHelpText": "按列维度配置拆分", - "visTypePie.function.args.splitRowHelpText": "按行维度配置拆分", - "visTypePie.function.args.truncateLegendHelpText": "定义是否将截断图例项", - "visTypePie.function.dimension.metric": "切片大小", - "visTypePie.function.dimension.splitcolumn": "列拆分", - "visTypePie.function.dimension.splitrow": "行拆分", - "visTypePie.function.pieLabels.help": "生成饼图标签对象", - "visTypePie.function.pieLabels.lastLevel.help": "仅显示顶层标签", - "visTypePie.function.pieLabels.percentDecimals.help": "定义在值中将显示为百分比的小数位数", - "visTypePie.function.pieLabels.position.help": "定义标签位置", - "visTypePie.function.pieLabels.show.help": "显示饼图标签", - "visTypePie.function.pieLabels.truncate.help": "定义切片值显示的字符数", - "visTypePie.function.pieLabels.values.help": "定义切片内的值", - "visTypePie.function.pieLabels.valuesFormat.help": "定义值的格式", - "visTypePie.functions.help": "饼图可视化", + "expressionPie.pieVis.function.dimension.buckets": "切片", + "expressionPie.pieVis.function.args.addLegendHelpText": "显示图表图例", + "expressionPie.pieVis.function.args.addTooltipHelpText": "在切片上悬浮时显示工具提示", + "expressionPie.pieVis.function.args.bucketsHelpText": "存储桶维度配置", + "expressionPie.pieVis.function.args.distinctColorsHelpText": "每个切片映射不同颜色。具有相同值的切片具有相同的颜色", + "expressionPie.pieVis.function.args.isDonutHelpText": "将饼图显示为圆环图", + "expressionPie.pieVis.function.args.labelsHelpText": "饼图标签配置", + "expressionPie.pieVis.function.args.legendPositionHelpText": "将图例定位于图表的顶部、底部、左侧、右侧", + "expressionPie.pieVis.function.args.maxLegendLinesHelpText": "定义每个图例项的行数", + "expressionPie.pieVis.function.args.metricHelpText": "指标维度配置", + "expressionPie.pieVis.function.args.nestedLegendHelpText": "显示更详细的图例", + "expressionPie.pieVis.function.args.paletteHelpText": "定义图表调色板名称", + "expressionPie.pieVis.function.args.splitColumnHelpText": "按列维度配置拆分", + "expressionPie.pieVis.function.args.splitRowHelpText": "按行维度配置拆分", + "expressionPie.pieVis.function.args.truncateLegendHelpText": "定义是否将截断图例项", + "expressionPie.pieVis.function.dimension.metric": "切片大小", + "expressionPie.pieVis.function.dimension.splitcolumn": "列拆分", + "expressionPie.pieVis.function.dimension.splitrow": "行拆分", + "expressionPie.pieLabels.function.help": "生成饼图标签对象", + "expressionPie.pieLabels.function.args.lastLevel.help": "仅显示顶层标签", + "expressionPie.pieLabels.function.args.percentDecimals.help": "定义在值中将显示为百分比的小数位数", + "expressionPie.pieLabels.function.args.position.help": "定义标签位置", + "expressionPie.pieLabels.function.args.show.help": "显示饼图标签", + "expressionPie.pieLabels.function.args.truncate.help": "定义切片值显示的字符数", + "expressionPie.pieLabels.function.args.values.help": "定义切片内的值", + "expressionPie.pieLabels.function.args.valuesFormat.help": "定义值的格式", + "expressionPie.pieVis.function.help": "饼图可视化", "visTypePie.labelPositions.insideOrOutsideText": "内部或外部", "visTypePie.labelPositions.insideText": "内部", - "visTypePie.legend.filterForValueButtonAriaLabel": "筛留值", - "visTypePie.legend.filterOptionsLegend": "{legendDataLabel}, 筛选选项", - "visTypePie.legend.filterOutValueButtonAriaLabel": "筛除值", + "expressionPie.legend.filterForValueButtonAriaLabel": "筛留值", + "expressionPie.legend.filterOptionsLegend": "{legendDataLabel}, 筛选选项", + "expressionPie.legend.filterOutValueButtonAriaLabel": "筛除值", "visTypePie.legendPositions.bottomText": "底部", "visTypePie.legendPositions.leftText": "左", "visTypePie.legendPositions.rightText": "右", "visTypePie.legendPositions.topText": "顶部", - "visTypePie.negativeValuesFound": "饼图/圆环图无法使用负值进行呈现。", - "visTypePie.noResultsFoundTitle": "找不到结果", + "expressionPie.negativeValuesFound": "饼图/圆环图无法使用负值进行呈现。", + "expressionPie.noResultsFoundTitle": "找不到结果", "visTypePie.pie.metricTitle": "切片大小", "visTypePie.pie.pieDescription": "以整体的比例比较数据。", "visTypePie.pie.pieTitle": "饼图",