From 9bd61fbd272d38b89c89d3b1e011211b22f3fb91 Mon Sep 17 00:00:00 2001 From: Yaroslav Kuznietsov Date: Tue, 23 Aug 2022 17:44:44 +0300 Subject: [PATCH] Fixed custom labels. --- .../operations/definitions/cardinality.tsx | 19 +++++++-- .../operations/definitions/count.tsx | 15 +++---- .../operations/definitions/date_histogram.tsx | 10 +++-- .../operations/definitions/helpers.tsx | 25 ++++++++--- .../operations/definitions/last_value.tsx | 16 +++++-- .../operations/definitions/metrics.tsx | 20 ++++++--- .../operations/definitions/percentile.tsx | 42 ++++++++++--------- .../definitions/percentile_ranks.tsx | 36 ++++++++-------- 8 files changed, 113 insertions(+), 70 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx index 7d11fe1b00a1f..68430c3f43161 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx @@ -108,11 +108,21 @@ export const cardinalityOperation: OperationDefinition< filterable: true, shiftable: true, windowable: true, - getDefaultLabel: (column, indexPattern) => - ofName(getSafeName(column.sourceField, indexPattern), column.timeShift, column.window), + getDefaultLabel: (column, indexPattern) => { + const { customLabel, label } = getSafeName(column.sourceField, indexPattern); + if (customLabel) { + return label; + } + return ofName(label, column.timeShift, column.window); + }, buildColumn({ field, previousColumn }, columnParams) { + const label = + field.customLabel || + ofName(field.displayName, previousColumn?.timeShift, previousColumn?.window); + return { - label: ofName(field.displayName, previousColumn?.timeShift, previousColumn?.window), + label, + customLabel: Boolean(field.customLabel), dataType: 'number', operationType: OPERATION_TYPE, scale: SCALE, @@ -185,7 +195,8 @@ export const cardinalityOperation: OperationDefinition< onFieldChange: (oldColumn, field) => { return { ...oldColumn, - label: ofName(field.displayName, oldColumn.timeShift, oldColumn.window), + label: field.customLabel || ofName(field.displayName, oldColumn.timeShift, oldColumn.window), + customLabel: Boolean(field.customLabel), sourceField: field.name, }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx index 8a1107a821c52..265cc786505ee 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx @@ -52,10 +52,6 @@ function ofName( timeScale: string | undefined, window: string | undefined ) { - if (field?.customLabel) { - return field.customLabel; - } - return adjustTimeScaleLabelSuffix( field?.type !== 'document' ? i18n.translate('xpack.lens.indexPattern.valueCountOf', { @@ -120,13 +116,12 @@ export const countOperation: OperationDefinition getSafeName(column.sourceField, indexPattern), + getDefaultLabel: (column, indexPattern) => { + const { label } = getSafeName(column.sourceField, indexPattern); + return label; + }, buildColumn({ field }, columnParams) { return { - label: field.displayName, + label: field.customLabel || field.displayName, + customLabel: Boolean(field.customLabel), dataType: 'date', operationType: 'date_histogram', sourceField: field.name, @@ -134,7 +138,7 @@ export const dateHistogramOperation: OperationDefinition< onFieldChange: (oldColumn, field) => { return { ...oldColumn, - label: field.displayName, + label: field.customLabel || field.displayName, sourceField: field.name, }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx index 868d5e2557e49..793279d3dd48b 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx @@ -95,13 +95,28 @@ export function combineErrorMessages( return messages.length ? messages : undefined; } -export function getSafeName(name: string, indexPattern: IndexPattern): string { +export function getSafeName(name: string, indexPattern: IndexPattern) { const field = indexPattern.getFieldByName(name); - return field - ? field.displayName - : i18n.translate('xpack.lens.indexPattern.missingFieldLabel', { + if (!field) { + return { + label: i18n.translate('xpack.lens.indexPattern.missingFieldLabel', { defaultMessage: 'Missing field', - }); + }), + customLabel: false, + }; + } + + if (field.customLabel) { + return { + label: field.customLabel, + customLabel: true, + }; + } + + return { + label: field.displayName, + customLabel: false, + }; } export function isValidNumber( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx index afc74b043fca7..ac351fbf82df3 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx @@ -133,8 +133,13 @@ export const lastValueOperation: OperationDefinition< displayName: i18n.translate('xpack.lens.indexPattern.lastValue', { defaultMessage: 'Last value', }), - getDefaultLabel: (column, indexPattern) => - ofName(getSafeName(column.sourceField, indexPattern), column.timeShift, column.window), + getDefaultLabel: (column, indexPattern) => { + const { customLabel, label } = getSafeName(column.sourceField, indexPattern); + if (customLabel) { + return label; + } + return ofName(label, column.timeShift, column.window); + }, input: 'field', onFieldChange: (oldColumn, field) => { const newParams = { ...oldColumn.params }; @@ -147,7 +152,7 @@ export const lastValueOperation: OperationDefinition< return { ...oldColumn, dataType: field.type as DataType, - label: ofName(field.displayName, oldColumn.timeShift, oldColumn.window), + label: field.customLabel || ofName(field.displayName, oldColumn.timeShift, oldColumn.window), sourceField: field.name, params: newParams, scale: field.type === 'string' ? 'ordinal' : 'ratio', @@ -209,7 +214,10 @@ export const lastValueOperation: OperationDefinition< const showArrayValues = isScriptedField(field) || lastValueParams?.showArrayValues; return { - label: ofName(field.displayName, previousColumn?.timeShift, previousColumn?.window), + label: + field.customLabel || + ofName(field.displayName, previousColumn?.timeShift, previousColumn?.window), + customLabel: Boolean(field.customLabel), dataType: field.type as DataType, operationType: 'last_value', isBucketed: false, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx index 1942095ffa7ce..d46ab16d708fe 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx @@ -75,9 +75,8 @@ function buildMetricOperation>({ documentationDescription?: string; }) { const labelLookup = (name: string, column?: BaseIndexPatternColumn) => { - const label = ofName(name); return adjustTimeScaleLabelSuffix( - label, + name, undefined, optionalTimeScaling ? column?.timeScale : undefined, undefined, @@ -121,11 +120,19 @@ function buildMetricOperation>({ optionalTimeScaling ? (adjustTimeScaleOnOtherColumnChange(layer, thisColumnId) as T) : (layer.columns[thisColumnId] as T), - getDefaultLabel: (column, indexPattern, columns) => - labelLookup(getSafeName(column.sourceField, indexPattern), column), + getDefaultLabel: (column, indexPattern, columns) => { + const { label, customLabel } = getSafeName(column.sourceField, indexPattern); + if (customLabel) { + return label; + } + return labelLookup(label, column); + }, buildColumn: ({ field, previousColumn }, columnParams) => { return { - label: labelLookup(field.displayName, previousColumn), + label: field.customLabel + ? field.customLabel + : labelLookup(field.displayName, previousColumn), + customLabel: Boolean(field.customLabel), dataType: supportsDate && field.type === 'date' ? 'date' : 'number', operationType: type, sourceField: field.name, @@ -147,7 +154,8 @@ function buildMetricOperation>({ onFieldChange: (oldColumn, field) => { return { ...oldColumn, - label: labelLookup(field.displayName, oldColumn), + label: field.customLabel || labelLookup(field.displayName, oldColumn), + customLabel: Boolean(field.customLabel), dataType: field.type, sourceField: field.name, }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx index e725f5b394767..4406edbd5e2ce 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx @@ -107,13 +107,14 @@ export const percentileOperation: OperationDefinition< !newField.aggregationRestrictions ); }, - getDefaultLabel: (column, indexPattern, columns) => - ofName( - getSafeName(column.sourceField, indexPattern), - column.params.percentile, - column.timeShift, - column.window - ), + getDefaultLabel: (column, indexPattern, columns) => { + const { customLabel, label } = getSafeName(column.sourceField, indexPattern); + if (customLabel) { + return label; + } + + return ofName(label, column.params.percentile, column.timeShift, column.window); + }, buildColumn: ({ field, previousColumn, indexPattern }, columnParams) => { const existingPercentileParam = previousColumn && @@ -121,13 +122,13 @@ export const percentileOperation: OperationDefinition< previousColumn.params.percentile; const newPercentileParam = columnParams?.percentile ?? (existingPercentileParam || DEFAULT_PERCENTILE_VALUE); + + const { customLabel, label } = getSafeName(field.name, indexPattern); return { - label: ofName( - getSafeName(field.name, indexPattern), - newPercentileParam, - previousColumn?.timeShift, - previousColumn?.window - ), + label: customLabel + ? label + : ofName(label, newPercentileParam, previousColumn?.timeShift, previousColumn?.window), + customLabel, dataType: 'number', operationType: 'percentile', sourceField: field.name, @@ -145,12 +146,15 @@ export const percentileOperation: OperationDefinition< onFieldChange: (oldColumn, field) => { return { ...oldColumn, - label: ofName( - field.displayName, - oldColumn.params.percentile, - oldColumn.timeShift, - oldColumn.window - ), + label: + field.customLabel || + ofName( + field.displayName, + oldColumn.params.percentile, + oldColumn.timeShift, + oldColumn.window + ), + customLabel: Boolean(field.customLabel), sourceField: field.name, }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile_ranks.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile_ranks.tsx index 66bb21498706d..95071799b6ab4 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile_ranks.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile_ranks.tsx @@ -100,13 +100,13 @@ export const percentileRanksOperation: OperationDefinition< !newField.aggregationRestrictions ); }, - getDefaultLabel: (column, indexPattern, columns) => - ofName( - getSafeName(column.sourceField, indexPattern), - column.params.value, - column.timeShift, - column.window - ), + getDefaultLabel: (column, indexPattern, columns) => { + const { label, customLabel } = getSafeName(column.sourceField, indexPattern); + if (customLabel) { + return label; + } + return ofName(label, column.params.value, column.timeShift, column.window); + }, buildColumn: ({ field, previousColumn, indexPattern }, columnParams) => { const existingPercentileRanksParam = previousColumn && @@ -114,13 +114,13 @@ export const percentileRanksOperation: OperationDefinition< previousColumn.params.value; const newPercentileRanksParam = columnParams?.value ?? (existingPercentileRanksParam || DEFAULT_PERCENTILE_RANKS_VALUE); + + const { label, customLabel } = getSafeName(field.name, indexPattern); + return { - label: ofName( - getSafeName(field.name, indexPattern), - newPercentileRanksParam, - previousColumn?.timeShift, - previousColumn?.window - ), + label: customLabel + ? label + : ofName(label, newPercentileRanksParam, previousColumn?.timeShift, previousColumn?.window), dataType: 'number', operationType: 'percentile_rank', sourceField: field.name, @@ -138,12 +138,10 @@ export const percentileRanksOperation: OperationDefinition< onFieldChange: (oldColumn, field) => { return { ...oldColumn, - label: ofName( - field.displayName, - oldColumn.params.value, - oldColumn.timeShift, - oldColumn.window - ), + label: + field.customLabel || + ofName(field.displayName, oldColumn.params.value, oldColumn.timeShift, oldColumn.window), + customLabel: Boolean(field.customLabel), sourceField: field.name, }; },