Skip to content

Commit

Permalink
[Lens] Carry previous configured formatter in Last value (elastic#93784)
Browse files Browse the repository at this point in the history
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
  • Loading branch information
dej611 and kibanamachine committed Mar 8, 2021
1 parent b5ae4d5 commit 2a28925
Show file tree
Hide file tree
Showing 11 changed files with 93 additions and 59 deletions.
22 changes: 11 additions & 11 deletions api_docs/lens.json
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx",
"lineNumber": 23
"lineNumber": 24
},
"signature": [
"\"percentile\""
Expand All @@ -625,7 +625,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx",
"lineNumber": 24
"lineNumber": 25
},
"signature": [
"{ percentile: number; format?: { id: string; params?: { decimals: number; } | undefined; } | undefined; }"
Expand All @@ -634,7 +634,7 @@
],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx",
"lineNumber": 22
"lineNumber": 23
},
"initialIsOpen": false
},
Expand Down Expand Up @@ -1318,7 +1318,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx",
"lineNumber": 128
"lineNumber": 125
},
"signature": [
"BaseIndexPatternColumn & { params?: { format?: { id: string; params?: { decimals: number; } | undefined; } | undefined; } | undefined; } & FieldBasedIndexPatternColumn & { operationType: \"avg\"; }"
Expand All @@ -1333,7 +1333,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx",
"lineNumber": 34
"lineNumber": 35
},
"signature": [
"BaseIndexPatternColumn",
Expand Down Expand Up @@ -1365,7 +1365,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx",
"lineNumber": 32
"lineNumber": 33
},
"signature": [
"BaseIndexPatternColumn",
Expand All @@ -1381,7 +1381,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/derivative.tsx",
"lineNumber": 34
"lineNumber": 35
},
"signature": [
"BaseIndexPatternColumn",
Expand Down Expand Up @@ -1475,7 +1475,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx",
"lineNumber": 130
"lineNumber": 127
},
"signature": [
"BaseIndexPatternColumn & { params?: { format?: { id: string; params?: { decimals: number; } | undefined; } | undefined; } | undefined; } & FieldBasedIndexPatternColumn & { operationType: \"max\"; }"
Expand All @@ -1490,7 +1490,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx",
"lineNumber": 131
"lineNumber": 128
},
"signature": [
"BaseIndexPatternColumn & { params?: { format?: { id: string; params?: { decimals: number; } | undefined; } | undefined; } | undefined; } & FieldBasedIndexPatternColumn & { operationType: \"median\"; }"
Expand All @@ -1505,7 +1505,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx",
"lineNumber": 129
"lineNumber": 126
},
"signature": [
"BaseIndexPatternColumn & { params?: { format?: { id: string; params?: { decimals: number; } | undefined; } | undefined; } | undefined; } & FieldBasedIndexPatternColumn & { operationType: \"min\"; }"
Expand Down Expand Up @@ -1598,7 +1598,7 @@
"description": [],
"source": {
"path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx",
"lineNumber": 127
"lineNumber": 124
},
"signature": [
"BaseIndexPatternColumn & { params?: { format?: { id: string; params?: { decimals: number; } | undefined; } | undefined; } | undefined; } & FieldBasedIndexPatternColumn & { operationType: \"sum\"; }"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
} from './utils';
import { DEFAULT_TIME_SCALE } from '../../time_scale_utils';
import { OperationDefinition } from '..';
import { getFormatFromPreviousColumn } from '../helpers';

const ofName = buildLabelFunction((name?: string) => {
return i18n.translate('xpack.lens.indexPattern.CounterRateOf', {
Expand Down Expand Up @@ -81,13 +82,7 @@ export const counterRateOperation: OperationDefinition<
scale: 'ratio',
references: referenceIds,
timeScale,
params:
previousColumn?.dataType === 'number' &&
previousColumn.params &&
'format' in previousColumn.params &&
previousColumn.params.format
? { format: previousColumn.params.format }
: undefined,
params: getFormatFromPreviousColumn(previousColumn),
};
},
isTransferable: (column, newIndexPattern) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
hasDateField,
} from './utils';
import { OperationDefinition } from '..';
import { getFormatFromPreviousColumn } from '../helpers';

const ofName = (name?: string) => {
return i18n.translate('xpack.lens.indexPattern.cumulativeSumOf', {
Expand Down Expand Up @@ -77,13 +78,7 @@ export const cumulativeSumOperation: OperationDefinition<
isBucketed: false,
scale: 'ratio',
references: referenceIds,
params:
previousColumn?.dataType === 'number' &&
previousColumn.params &&
'format' in previousColumn.params &&
previousColumn.params.format
? { format: previousColumn.params.format }
: undefined,
params: getFormatFromPreviousColumn(previousColumn),
};
},
isTransferable: () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
} from './utils';
import { adjustTimeScaleOnOtherColumnChange } from '../../time_scale_utils';
import { OperationDefinition } from '..';
import { getFormatFromPreviousColumn } from '../helpers';

const ofName = buildLabelFunction((name?: string) => {
return i18n.translate('xpack.lens.indexPattern.derivativeOf', {
Expand Down Expand Up @@ -82,13 +83,7 @@ export const derivativeOperation: OperationDefinition<
scale: 'ratio',
references: referenceIds,
timeScale: previousColumn?.timeScale,
params:
previousColumn?.dataType === 'number' &&
previousColumn.params &&
'format' in previousColumn.params &&
previousColumn.params.format
? { format: previousColumn.params.format }
: undefined,
params: getFormatFromPreviousColumn(previousColumn),
};
},
isTransferable: (column, newIndexPattern) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
hasDateField,
} from './utils';
import { updateColumnParam } from '../../layer_helpers';
import { isValidNumber, useDebounceWithOptions } from '../helpers';
import { getFormatFromPreviousColumn, isValidNumber, useDebounceWithOptions } from '../helpers';
import { adjustTimeScaleOnOtherColumnChange } from '../../time_scale_utils';
import { HelpPopover, HelpPopoverButton } from '../../../help_popover';
import type { OperationDefinition, ParamEditorProps } from '..';
Expand Down Expand Up @@ -89,13 +89,10 @@ export const movingAverageOperation: OperationDefinition<
scale: 'ratio',
references: referenceIds,
timeScale: previousColumn?.timeScale,
params:
previousColumn?.dataType === 'number' &&
previousColumn.params &&
'format' in previousColumn.params &&
previousColumn.params.format
? { format: previousColumn.params.format, window: 5 }
: { window: 5 },
params: {
window: 5,
...getFormatFromPreviousColumn(previousColumn),
},
};
},
paramEditor: MovingAverageParamEditor,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { buildExpressionFunction } from '../../../../../../../src/plugins/expres
import { OperationDefinition } from './index';
import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types';

import { getInvalidFieldMessage, getSafeName } from './helpers';
import { getFormatFromPreviousColumn, getInvalidFieldMessage, getSafeName } from './helpers';

const supportedTypes = new Set(['string', 'boolean', 'number', 'ip', 'date']);

Expand Down Expand Up @@ -70,13 +70,7 @@ export const cardinalityOperation: OperationDefinition<CardinalityIndexPatternCo
scale: SCALE,
sourceField: field.name,
isBucketed: IS_BUCKETED,
params:
previousColumn?.dataType === 'number' &&
previousColumn.params &&
'format' in previousColumn.params &&
previousColumn.params.format
? { format: previousColumn.params.format }
: undefined,
params: getFormatFromPreviousColumn(previousColumn),
};
},
toEsAggsFn: (column, columnId) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,12 @@ export function isValidNumber(
(lowerBound === undefined || inputValueAsNumber >= lowerBound)
);
}

export function getFormatFromPreviousColumn(previousColumn: IndexPatternColumn | undefined) {
return previousColumn?.dataType === 'number' &&
previousColumn.params &&
'format' in previousColumn.params &&
previousColumn.params.format
? { format: previousColumn.params.format }
: undefined;
}
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,60 @@ describe('last_value', () => {
);
});

it('should pick the previous format configuration if set', () => {
const indexPattern = createMockedIndexPattern();
expect(
lastValueOperation.buildColumn({
indexPattern,
layer: {
columns: {
col1: {
label: 'Count',
dataType: 'number',
isBucketed: false,
sourceField: 'Records',
operationType: 'count',
},
},
columnOrder: [],
indexPatternId: '',
},

field: {
aggregatable: true,
searchable: true,
type: 'boolean',
name: 'test',
displayName: 'test',
},
previousColumn: {
label: 'Count',
dataType: 'number',
isBucketed: false,
sourceField: 'Records',
operationType: 'count',
params: {
format: {
id: 'number',
params: {
decimals: 2,
},
},
},
},
}).params
).toEqual(
expect.objectContaining({
format: {
id: 'number',
params: {
decimals: 2,
},
},
})
);
});

describe('param editor', () => {
it('should render current sortField', () => {
const updateLayerSpy = jest.fn();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { FieldBasedIndexPatternColumn } from './column_types';
import { IndexPatternField, IndexPattern } from '../../types';
import { updateColumnParam } from '../layer_helpers';
import { DataType } from '../../../types';
import { getInvalidFieldMessage, getSafeName } from './helpers';
import { getFormatFromPreviousColumn, getInvalidFieldMessage, getSafeName } from './helpers';

function ofName(name: string) {
return i18n.translate('xpack.lens.indexPattern.lastValueOf', {
Expand Down Expand Up @@ -162,6 +162,7 @@ export const lastValueOperation: OperationDefinition<LastValueIndexPatternColumn
sourceField: field.name,
params: {
sortField,
...getFormatFromPreviousColumn(previousColumn),
},
};
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import { i18n } from '@kbn/i18n';
import { buildExpressionFunction } from '../../../../../../../src/plugins/expressions/public';
import { OperationDefinition } from './index';
import { getInvalidFieldMessage, getSafeName } from './helpers';
import { getFormatFromPreviousColumn, getInvalidFieldMessage, getSafeName } from './helpers';
import {
FormattedIndexPatternColumn,
FieldBasedIndexPatternColumn,
Expand Down Expand Up @@ -99,10 +99,7 @@ function buildMetricOperation<T extends MetricColumn<string>>({
isBucketed: false,
scale: 'ratio',
timeScale: optionalTimeScaling ? previousColumn?.timeScale : undefined,
params:
previousColumn && previousColumn.dataType === 'number'
? previousColumn.params
: undefined,
params: getFormatFromPreviousColumn(previousColumn),
} as T),
onFieldChange: (oldColumn, field) => {
return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { AggFunctionsMapping } from 'src/plugins/data/public';
import { buildExpressionFunction } from '../../../../../../../src/plugins/expressions/public';
import { OperationDefinition } from './index';
import {
getFormatFromPreviousColumn,
getInvalidFieldMessage,
getSafeName,
isValidNumber,
Expand Down Expand Up @@ -72,10 +73,6 @@ export const percentileOperation: OperationDefinition<PercentileIndexPatternColu
getDefaultLabel: (column, indexPattern, columns) =>
ofName(getSafeName(column.sourceField, indexPattern), column.params.percentile),
buildColumn: ({ field, previousColumn, indexPattern }) => {
const existingFormat =
previousColumn?.params && 'format' in previousColumn?.params
? previousColumn?.params?.format
: undefined;
const existingPercentileParam =
previousColumn?.operationType === 'percentile' && previousColumn?.params.percentile;
const newPercentileParam = existingPercentileParam || DEFAULT_PERCENTILE_VALUE;
Expand All @@ -87,8 +84,8 @@ export const percentileOperation: OperationDefinition<PercentileIndexPatternColu
isBucketed: false,
scale: 'ratio',
params: {
format: existingFormat,
percentile: newPercentileParam,
...getFormatFromPreviousColumn(previousColumn),
},
};
},
Expand Down

0 comments on commit 2a28925

Please sign in to comment.