From 4fdf8afd15fc0dd2a4c61ac3a52ba5db6fabf7d7 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Mon, 14 Sep 2020 14:07:14 +0200 Subject: [PATCH 01/13] feat: BucketNestingEditor proposal --- .../bucket_nesting_editor.test.tsx | 27 ++++++-- .../dimension_panel/bucket_nesting_editor.tsx | 68 ++++++------------- .../dimension_panel/dimension_editor.tsx | 4 +- .../operations/definitions/cardinality.tsx | 1 + .../operations/definitions/count.tsx | 1 + .../operations/definitions/date_histogram.tsx | 13 ++++ .../definitions/filters/filters.tsx | 12 ++++ .../operations/definitions/index.ts | 13 ++++ .../operations/definitions/metrics.tsx | 1 + .../operations/definitions/ranges/ranges.tsx | 12 ++++ .../operations/definitions/terms/index.tsx | 18 +++++ 11 files changed, 116 insertions(+), 54 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx index 3d6c9f6047c81..a2e9ee45b5a2f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx @@ -16,6 +16,12 @@ const fieldMap = { c: { displayName: 'c' } as IndexPatternField, }; +const columnLabelMap = { + a: 'a', + b: 'b', + c: 'c', +}; + describe('BucketNestingEditor', () => { function mockCol(col: Partial = {}): IndexPatternColumn { const result = { @@ -39,6 +45,7 @@ describe('BucketNestingEditor', () => { it('should display the top level grouping when at the root', () => { const component = mount( { setColumns={jest.fn()} /> ); - const control1 = component.find('[data-test-subj="indexPattern-nesting-topLevel"]').first(); - const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomLevel"]').first(); + const control1 = component.find('[data-test-subj="indexPattern-nesting-topCopy"]').first(); + const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomCopy"]').first(); expect(control1.prop('checked')).toBeTruthy(); expect(control2.prop('checked')).toBeFalsy(); @@ -63,6 +70,7 @@ describe('BucketNestingEditor', () => { it('should display the bottom level grouping when appropriate', () => { const component = mount( { /> ); - const control1 = component.find('[data-test-subj="indexPattern-nesting-topLevel"]').first(); - const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomLevel"]').first(); + const control1 = component.find('[data-test-subj="indexPattern-nesting-topCopy"]').first(); + const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomCopy"]').first(); expect(control1.prop('checked')).toBeFalsy(); expect(control2.prop('checked')).toBeTruthy(); @@ -89,6 +97,7 @@ describe('BucketNestingEditor', () => { const setColumns = jest.fn(); const component = mount( { setColumns={setColumns} /> ); - const control1 = component.find('[data-test-subj="indexPattern-nesting-topLevel"]').first(); + const control1 = component.find('[data-test-subj="indexPattern-nesting-topCopy"]').first(); (control1.prop('onChange') as () => {})(); @@ -122,7 +131,7 @@ describe('BucketNestingEditor', () => { }, }); - const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomLevel"]').first(); + const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomCopy"]').first(); (control2.prop('onChange') as () => {})(); @@ -133,6 +142,7 @@ describe('BucketNestingEditor', () => { it('should display nothing if there are no buckets', () => { const component = mount( { it('should display nothing if there is one bucket', () => { const component = mount( { it('should display a dropdown with the parent column selected if 3+ buckets', () => { const component = mount( { const setColumns = jest.fn(); const component = mount( { const setColumns = jest.fn(); const component = mount( { const setColumns = jest.fn(); const component = mount( void; fieldMap: Record; + columnLabelMap: Record; }) { const column = layer.columns[columnId]; const columns = Object.entries(layer.columns); @@ -56,9 +58,15 @@ export function BucketNestingEditor({ const prevColumn = layer.columnOrder[layer.columnOrder.indexOf(columnId) - 1]; - if (aggColumns.length === 1) { - const [target] = aggColumns; + const operationDefinition = operationDefinitionMap[column.operationType]; + const [target] = aggColumns; + + const canAggOrderChangeResult = + operationDefinition.canAggOrderChangeResult || + operationDefinitionMap[target.operationType].canAggOrderChangeResult; + + if (aggColumns.length === 1 && canAggOrderChangeResult && operationDefinition.getAggOrderCopy) { function toggleNesting() { if (prevColumn) { setColumns(nestColumn(layer.columnOrder, columnId, target.value)); @@ -67,43 +75,11 @@ export function BucketNestingEditor({ } } - // todo: move the copy to operations - const topLevelCopy: Record = { - terms: i18n.translate('xpack.lens.indexPattern.groupingOverallTerms', { - defaultMessage: 'Overall top {field}', - values: { field: fieldName }, - }), - filters: i18n.translate('xpack.lens.indexPattern.groupingOverallFilters', { - defaultMessage: 'Top values for each filter', - }), - date_histogram: i18n.translate('xpack.lens.indexPattern.groupingOverallDateHistogram', { - defaultMessage: 'Top values for each {field}', - values: { field: fieldName }, - }), - range: i18n.translate('xpack.lens.indexPattern.groupingOverallRanges', { - defaultMessage: 'Top values for each {field}', - values: { field: fieldName }, - }), - }; - - const bottomLevelCopy: Record = { - terms: i18n.translate('xpack.lens.indexPattern.groupingSecondTerms', { - defaultMessage: 'Top values for each {target}', - values: { target: target.fieldName }, - }), - filters: i18n.translate('xpack.lens.indexPattern.groupingSecondFilters', { - defaultMessage: 'Overall top {target}', - values: { target: target.fieldName }, - }), - date_histogram: i18n.translate('xpack.lens.indexPattern.groupingSecondDateHistogram', { - defaultMessage: 'Overall top {target}', - values: { target: target.fieldName }, - }), - range: i18n.translate('xpack.lens.indexPattern.groupingSecondRanges', { - defaultMessage: 'Overall top {target}', - values: { target: target.fieldName }, - }), - }; + const copy = operationDefinition.getAggOrderCopy( + fieldName, + target.fieldName, + target.operationType + ); return ( <> @@ -116,16 +92,16 @@ export function BucketNestingEditor({ > <> diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index 0e33c20faff7e..e113eebb6bc79 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -14,10 +14,10 @@ import { EuiFieldText, EuiSpacer, EuiListGroupItemProps, + EuiFormLabel } from '@elastic/eui'; -import { EuiFormLabel } from '@elastic/eui'; -import { IndexPatternColumn, OperationType } from '../indexpattern'; import { IndexPatternDimensionEditorProps, OperationSupportMatrix } from './dimension_panel'; +import { IndexPatternColumn, OperationType, uniqueLabels } from '../indexpattern'; import { operationDefinitionMap, getOperationDisplay, 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 65119d3978ee6..1a9be71d27add 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 @@ -33,6 +33,7 @@ export const cardinalityOperation: OperationDefinition { if ( supportedTypes.has(type) && 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 cdf1a6b760493..9885dec1db40a 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 @@ -25,6 +25,7 @@ export const countOperation: OperationDefinition { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index 185f44405bb4b..ca58d9163e9b7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -46,6 +46,7 @@ export const dateHistogramOperation: OperationDefinition< }), input: 'field', priority: 5, // Highest priority level used + canAggOrderChangeResult: false, getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( type === 'date' && @@ -115,6 +116,18 @@ export const dateHistogramOperation: OperationDefinition< return column; }, + getAggOrderCopy: (fieldName, otherFieldName) => { + return { + topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallDateHistogram', { + defaultMessage: 'Top values for each {field}', + values: { field: fieldName }, + }), + bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondDateHistogram', { + defaultMessage: 'Overall top {otherFieldName}', + values: { otherFieldName }, + }), + }; + }, onFieldChange: (oldColumn, indexPattern, field) => { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx index ad0b9f2dbb0ab..86512802cdf22 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx @@ -72,6 +72,18 @@ export const filtersOperation: OperationDefinition { + return { + topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallFilters', { + defaultMessage: 'Top values for each custom query', + }), + bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondFilters', { + defaultMessage: 'Overall top {otherFieldName}', + values: { otherFieldName }, + }), + }; + }, input: 'none', isTransferable: () => true, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 38aec866ca5cb..2566f7d565212 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -131,6 +131,19 @@ interface BaseOperationDefinitionProps { * present on the new index pattern. */ transfer?: (column: C, newIndexPattern: IndexPattern) => C; + /** + * defines if changing the aggregations order in case of nested aggregations + * can change the data coming from es + */ + canAggOrderChangeResult: boolean; + /** + * copy for bucketNestingEditor in case of two nested aggregations + */ + getAggOrderCopy?: ( + fieldName: string, + otherFieldName: string, + operationType: OperationType + ) => { topCopy: string; bottomCopy: string }; } interface BaseBuildColumnArgs { 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 c02f7bcb7d2cd..97e8c590b5f3f 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 @@ -29,6 +29,7 @@ function buildMetricOperation>({ priority, displayName, input: 'field', + canAggOrderChangeResult: false, getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type: fieldType }) => { if ( fieldType === 'number' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx index a59780ef59939..f594aa8e5cd4c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx @@ -83,6 +83,18 @@ export const rangeOperation: OperationDefinition { + return { + topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallRanges', { + defaultMessage: 'Top values for each range', + }), + bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondRanges', { + defaultMessage: 'Overall top {otherFieldName}', + values: { otherFieldName }, + }), + }; + }, getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( type === 'number' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx index 85deb2bac25ca..a2c236ec8b438 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx @@ -44,6 +44,7 @@ export const termsOperation: OperationDefinition { if ( supportedTypes.has(type) && @@ -63,6 +64,23 @@ export const termsOperation: OperationDefinition { + return { + topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallTerms', { + defaultMessage: 'Overall top {field}', + values: { field: fieldName }, + }), + bottomCopy: + otherOperationType === 'filters' + ? i18n.translate('xpack.lens.indexPattern.groupingSecondTermsWithFilters', { + defaultMessage: 'Top values for each custom query', + }) + : i18n.translate('xpack.lens.indexPattern.groupingSecondTerms', { + defaultMessage: 'Top values for each {otherFieldName}', + values: { otherFieldName }, + }), + }; + }, buildColumn({ suggestedPriority, columns, field }) { const existingMetricColumn = Object.entries(columns) .filter(([_columnId, column]) => column && isSortableByColumn(column)) From cac0000b30bc1c50b0d79d728d402c76f450e1d5 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Mon, 14 Sep 2020 15:35:19 +0200 Subject: [PATCH 02/13] i18n fix --- .../operations/definitions/date_histogram.tsx | 4 ++-- .../operations/definitions/filters/filters.tsx | 4 ++-- .../operations/definitions/terms/index.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index ca58d9163e9b7..c7ce05c27e2b0 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -123,8 +123,8 @@ export const dateHistogramOperation: OperationDefinition< values: { field: fieldName }, }), bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondDateHistogram', { - defaultMessage: 'Overall top {otherFieldName}', - values: { otherFieldName }, + defaultMessage: 'Overall top {target}', + values: { target: otherFieldName }, }), }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx index 86512802cdf22..493784c9bab22 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx @@ -79,8 +79,8 @@ export const filtersOperation: OperationDefinition Date: Tue, 15 Sep 2020 11:11:50 +0200 Subject: [PATCH 03/13] eslint --- .../dimension_panel/dimension_editor.tsx | 2 +- .../operations/definitions/ranges/ranges.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index e113eebb6bc79..9c627dc59f7c6 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -14,7 +14,7 @@ import { EuiFieldText, EuiSpacer, EuiListGroupItemProps, - EuiFormLabel + EuiFormLabel, } from '@elastic/eui'; import { IndexPatternDimensionEditorProps, OperationSupportMatrix } from './dimension_panel'; import { IndexPatternColumn, OperationType, uniqueLabels } from '../indexpattern'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx index f594aa8e5cd4c..c2d9fee6a41c7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx @@ -83,7 +83,7 @@ export const rangeOperation: OperationDefinition { return { topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallRanges', { From c382f0d9eb202bd31392287da5522e2610ead53a Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Thu, 1 Oct 2020 14:16:05 +0200 Subject: [PATCH 04/13] button for 2 aggregations that can change the result --- .../dimension_panel/bucket_nesting_editor.tsx | 61 ++++++------------- .../operations/definitions/date_histogram.tsx | 12 ---- .../definitions/filters/filters.tsx | 12 ---- .../operations/definitions/index.ts | 8 --- .../operations/definitions/ranges/ranges.tsx | 11 ---- .../operations/definitions/terms/index.tsx | 17 ------ 6 files changed, 17 insertions(+), 104 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index f0c59c2040921..b1962cd0145ee 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -6,13 +6,11 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiHorizontalRule, EuiRadio, EuiSelect, htmlIdGenerator } from '@elastic/eui'; +import { EuiFormRow, EuiHorizontalRule, EuiSwitch, EuiSelect } from '@elastic/eui'; import { IndexPatternLayer, IndexPatternField } from '../types'; import { hasField } from '../utils'; import { IndexPatternColumn, operationDefinitionMap } from '../operations'; -const generator = htmlIdGenerator('lens-nesting'); - function nestColumn(columnOrder: string[], outer: string, inner: string) { const result = columnOrder.filter((c) => c !== inner); const outerPosition = result.indexOf(outer); @@ -54,58 +52,33 @@ export function BucketNestingEditor({ return null; } - const fieldName = getFieldName(fieldMap, column); - const prevColumn = layer.columnOrder[layer.columnOrder.indexOf(columnId) - 1]; - const operationDefinition = operationDefinitionMap[column.operationType]; - const [target] = aggColumns; + const operationDefinition = operationDefinitionMap[column.operationType]; const canAggOrderChangeResult = operationDefinition.canAggOrderChangeResult || operationDefinitionMap[target.operationType].canAggOrderChangeResult; - if (aggColumns.length === 1 && canAggOrderChangeResult && operationDefinition.getAggOrderCopy) { - function toggleNesting() { - if (prevColumn) { - setColumns(nestColumn(layer.columnOrder, columnId, target.value)); - } else { - setColumns(nestColumn(layer.columnOrder, target.value, columnId)); - } - } - - const copy = operationDefinition.getAggOrderCopy( - fieldName, - target.fieldName, - target.operationType - ); - + if (aggColumns.length === 1 && canAggOrderChangeResult) { return ( <> - - <> - - - + + { + if (prevColumn) { + setColumns(nestColumn(layer.columnOrder, columnId, target.value)); + } else { + setColumns(nestColumn(layer.columnOrder, target.value, columnId)); + } + }} + /> ); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index c7ce05c27e2b0..3c0bf800268bd 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -116,18 +116,6 @@ export const dateHistogramOperation: OperationDefinition< return column; }, - getAggOrderCopy: (fieldName, otherFieldName) => { - return { - topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallDateHistogram', { - defaultMessage: 'Top values for each {field}', - values: { field: fieldName }, - }), - bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondDateHistogram', { - defaultMessage: 'Overall top {target}', - values: { target: otherFieldName }, - }), - }; - }, onFieldChange: (oldColumn, indexPattern, field) => { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx index 493784c9bab22..b1d4e65e7080d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx @@ -73,18 +73,6 @@ export const filtersOperation: OperationDefinition { - return { - topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallFilters', { - defaultMessage: 'Top values for each custom query', - }), - bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondFilters', { - defaultMessage: 'Overall top {target}', - values: { target: otherFieldName }, - }), - }; - }, - input: 'none', isTransferable: () => true, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 2566f7d565212..8c4c33bfe065e 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -136,14 +136,6 @@ interface BaseOperationDefinitionProps { * can change the data coming from es */ canAggOrderChangeResult: boolean; - /** - * copy for bucketNestingEditor in case of two nested aggregations - */ - getAggOrderCopy?: ( - fieldName: string, - otherFieldName: string, - operationType: OperationType - ) => { topCopy: string; bottomCopy: string }; } interface BaseBuildColumnArgs { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx index c2d9fee6a41c7..2208f72baa58f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx @@ -84,17 +84,6 @@ export const rangeOperation: OperationDefinition { - return { - topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallRanges', { - defaultMessage: 'Top values for each range', - }), - bottomCopy: i18n.translate('xpack.lens.indexPattern.groupingSecondRanges', { - defaultMessage: 'Overall top {otherFieldName}', - values: { otherFieldName }, - }), - }; - }, getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( type === 'number' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx index 30eb5ceb465eb..b48da3b0221fc 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx @@ -64,23 +64,6 @@ export const termsOperation: OperationDefinition { - return { - topCopy: i18n.translate('xpack.lens.indexPattern.groupingOverallTerms', { - defaultMessage: 'Overall top {field}', - values: { field: fieldName }, - }), - bottomCopy: - otherOperationType === 'filters' - ? i18n.translate('xpack.lens.indexPattern.groupingSecondTermsWithFilters', { - defaultMessage: 'Top values for each custom query', - }) - : i18n.translate('xpack.lens.indexPattern.groupingSecondTerms', { - defaultMessage: 'Top values for each {target}', - values: { target: otherFieldName }, - }), - }; - }, buildColumn({ suggestedPriority, columns, field }) { const existingMetricColumn = Object.entries(columns) .filter(([_columnId, column]) => column && isSortableByColumn(column)) From ef1de545c0ecd353d188b467c1da14720be36102 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Thu, 1 Oct 2020 14:20:31 +0200 Subject: [PATCH 05/13] checkboxes for any two bucket aggs --- .../dimension_panel/bucket_nesting_editor.tsx | 10 ++-------- .../operations/definitions/cardinality.tsx | 1 - .../operations/definitions/count.tsx | 1 - .../operations/definitions/date_histogram.tsx | 1 - .../operations/definitions/filters/filters.tsx | 1 - .../operations/definitions/index.ts | 5 ----- .../operations/definitions/metrics.tsx | 1 - .../operations/definitions/ranges/ranges.tsx | 1 - .../operations/definitions/terms/index.tsx | 1 - 9 files changed, 2 insertions(+), 20 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index b1962cd0145ee..8d0d531975af7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -54,14 +54,8 @@ export function BucketNestingEditor({ const prevColumn = layer.columnOrder[layer.columnOrder.indexOf(columnId) - 1]; - const [target] = aggColumns; - const operationDefinition = operationDefinitionMap[column.operationType]; - - const canAggOrderChangeResult = - operationDefinition.canAggOrderChangeResult || - operationDefinitionMap[target.operationType].canAggOrderChangeResult; - - if (aggColumns.length === 1 && canAggOrderChangeResult) { + if (aggColumns.length === 1) { + const [target] = aggColumns; return ( <> 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 1a9be71d27add..65119d3978ee6 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 @@ -33,7 +33,6 @@ export const cardinalityOperation: OperationDefinition { if ( supportedTypes.has(type) && 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 9885dec1db40a..cdf1a6b760493 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 @@ -25,7 +25,6 @@ export const countOperation: OperationDefinition { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index 3c0bf800268bd..185f44405bb4b 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -46,7 +46,6 @@ export const dateHistogramOperation: OperationDefinition< }), input: 'field', priority: 5, // Highest priority level used - canAggOrderChangeResult: false, getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( type === 'date' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx index b1d4e65e7080d..076c1846e35a7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.tsx @@ -72,7 +72,6 @@ export const filtersOperation: OperationDefinition true, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 8c4c33bfe065e..38aec866ca5cb 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -131,11 +131,6 @@ interface BaseOperationDefinitionProps { * present on the new index pattern. */ transfer?: (column: C, newIndexPattern: IndexPattern) => C; - /** - * defines if changing the aggregations order in case of nested aggregations - * can change the data coming from es - */ - canAggOrderChangeResult: boolean; } interface BaseBuildColumnArgs { 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 97e8c590b5f3f..c02f7bcb7d2cd 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 @@ -29,7 +29,6 @@ function buildMetricOperation>({ priority, displayName, input: 'field', - canAggOrderChangeResult: false, getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type: fieldType }) => { if ( fieldType === 'number' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx index 2208f72baa58f..a59780ef59939 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx @@ -83,7 +83,6 @@ export const rangeOperation: OperationDefinition { if ( type === 'number' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx index b48da3b0221fc..85deb2bac25ca 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx @@ -44,7 +44,6 @@ export const termsOperation: OperationDefinition { if ( supportedTypes.has(type) && From b064a2a05fb6766f578741af751e353b13f79d21 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Thu, 1 Oct 2020 15:02:25 +0200 Subject: [PATCH 06/13] fix tests --- .../bucket_nesting_editor.test.tsx | 41 +++++-------------- .../dimension_panel/bucket_nesting_editor.tsx | 5 +-- .../dimension_panel/dimension_editor.tsx | 2 +- 3 files changed, 13 insertions(+), 35 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx index a2e9ee45b5a2f..3696f3ad7b102 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.test.tsx @@ -16,12 +16,6 @@ const fieldMap = { c: { displayName: 'c' } as IndexPatternField, }; -const columnLabelMap = { - a: 'a', - b: 'b', - c: 'c', -}; - describe('BucketNestingEditor', () => { function mockCol(col: Partial = {}): IndexPatternColumn { const result = { @@ -45,7 +39,6 @@ describe('BucketNestingEditor', () => { it('should display the top level grouping when at the root', () => { const component = mount( { setColumns={jest.fn()} /> ); - const control1 = component.find('[data-test-subj="indexPattern-nesting-topCopy"]').first(); - const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomCopy"]').first(); - - expect(control1.prop('checked')).toBeTruthy(); - expect(control2.prop('checked')).toBeFalsy(); + const nestingSwitch = component.find('[data-test-subj="indexPattern-nesting-switch"]').first(); + expect(nestingSwitch.prop('checked')).toBeTruthy(); }); it('should display the bottom level grouping when appropriate', () => { const component = mount( { setColumns={jest.fn()} /> ); - - const control1 = component.find('[data-test-subj="indexPattern-nesting-topCopy"]').first(); - const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomCopy"]').first(); - - expect(control1.prop('checked')).toBeFalsy(); - expect(control2.prop('checked')).toBeTruthy(); + const nestingSwitch = component.find('[data-test-subj="indexPattern-nesting-switch"]').first(); + expect(nestingSwitch.prop('checked')).toBeFalsy(); }); it('should reorder the columns when toggled', () => { const setColumns = jest.fn(); const component = mount( { setColumns={setColumns} /> ); - const control1 = component.find('[data-test-subj="indexPattern-nesting-topCopy"]').first(); - (control1.prop('onChange') as () => {})(); + const nestingSwitch = component.find('[data-test-subj="indexPattern-nesting-switch"]').first(); + (nestingSwitch.prop('onChange') as () => {})(); expect(setColumns).toHaveBeenCalledTimes(1); expect(setColumns).toHaveBeenCalledWith(['a', 'b', 'c']); @@ -131,9 +115,10 @@ describe('BucketNestingEditor', () => { }, }); - const control2 = component.find('[data-test-subj="indexPattern-nesting-bottomCopy"]').first(); - - (control2.prop('onChange') as () => {})(); + (component + .find('[data-test-subj="indexPattern-nesting-switch"]') + .first() + .prop('onChange') as () => {})(); expect(setColumns).toHaveBeenCalledTimes(2); expect(setColumns).toHaveBeenLastCalledWith(['b', 'a', 'c']); @@ -142,7 +127,6 @@ describe('BucketNestingEditor', () => { it('should display nothing if there are no buckets', () => { const component = mount( { it('should display nothing if there is one bucket', () => { const component = mount( { it('should display a dropdown with the parent column selected if 3+ buckets', () => { const component = mount( { const setColumns = jest.fn(); const component = mount( { const setColumns = jest.fn(); const component = mount( { const setColumns = jest.fn(); const component = mount( c !== inner); @@ -29,13 +29,11 @@ export function BucketNestingEditor({ layer, setColumns, fieldMap, - columnLabelMap, }: { columnId: string; layer: IndexPatternLayer; setColumns: (columns: string[]) => void; fieldMap: Record; - columnLabelMap: Record; }) { const column = layer.columns[columnId]; const columns = Object.entries(layer.columns); @@ -61,6 +59,7 @@ export function BucketNestingEditor({ Date: Thu, 1 Oct 2020 19:33:57 +0200 Subject: [PATCH 07/13] don't display grouping on incompatible operation --- .../dimension_panel/bucket_nesting_editor.tsx | 86 ++++++++++--------- .../dimension_panel/dimension_editor.tsx | 2 +- .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - 4 files changed, 45 insertions(+), 49 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 50fefa9d88cfe..09788cf097e09 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -55,53 +55,55 @@ export function BucketNestingEditor({ if (aggColumns.length === 1) { const [target] = aggColumns; return ( - <> - - - { - if (prevColumn) { - setColumns(nestColumn(layer.columnOrder, columnId, target.value)); - } else { - setColumns(nestColumn(layer.columnOrder, target.value, columnId)); - } - }} - /> - - - ); - } - - return ( - <> - - ({ value, text })), - ]} - value={prevColumn} - onChange={(e) => setColumns(nestColumn(layer.columnOrder, e.target.value, columnId))} + data-test-subj="indexPattern-nesting-switch" + name="nestingSwitch" + label={i18n.translate('xpack.lens.indexPattern.useAsTopLevelAgg', { + defaultMessage: 'Use as top level aggregation', + })} + checked={!prevColumn} + onChange={() => { + if (prevColumn) { + setColumns(nestColumn(layer.columnOrder, columnId, target.value)); + } else { + setColumns(nestColumn(layer.columnOrder, target.value, columnId)); + } + }} /> - + ); + } + + return ( + + ({ value, text })), + ]} + value={prevColumn} + onChange={(e) => setColumns(nestColumn(layer.columnOrder, e.target.value, columnId))} + /> + ); } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index 5d28a374fc171..8b0c9011f2c27 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -411,7 +411,7 @@ export function DimensionEditor(props: DimensionEditorProps) { /> )} - {!hideGrouping && ( + {!incompatibleSelectedOperationType && !hideGrouping && ( Date: Fri, 2 Oct 2020 08:07:17 +0200 Subject: [PATCH 08/13] fix types --- .../dimension_panel/bucket_nesting_editor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 09788cf097e09..12eb9030821f4 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -6,7 +6,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiHorizontalRule, EuiSwitch, EuiSelect } from '@elastic/eui'; +import { EuiFormRow, EuiSwitch, EuiSelect } from '@elastic/eui'; import { IndexPatternLayer, IndexPatternField } from '../types'; import { hasField } from '../utils'; import { IndexPatternColumn } from '../operations'; From a4ef5117729aa228e0bf97ad966c3db32194e678 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Mon, 5 Oct 2020 11:25:56 +0200 Subject: [PATCH 09/13] copy according to the proposal --- .../dimension_panel/bucket_nesting_editor.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 12eb9030821f4..84f2ef512b918 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -66,7 +66,10 @@ export function BucketNestingEditor({ data-test-subj="indexPattern-nesting-switch" name="nestingSwitch" label={i18n.translate('xpack.lens.indexPattern.useAsTopLevelAgg', { - defaultMessage: 'Use as top level aggregation', + defaultMessage: 'Group by {columnName} first', + values: { + columnName: column.label, + }, })} checked={!prevColumn} onChange={() => { From 8524824bd3c5cfb7abc9ae1a9be2d67933ceb670 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Tue, 6 Oct 2020 09:54:18 +0200 Subject: [PATCH 10/13] another update --- .../dimension_panel/bucket_nesting_editor.tsx | 70 ++++++++++++------- 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 84f2ef512b918..7fce550c795d8 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -6,7 +6,15 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiSwitch, EuiSelect } from '@elastic/eui'; +import { + EuiFormRow, + EuiSwitch, + EuiSelect, + EuiIconTip, + EuiSpacer, + EuiFlexItem, + EuiFlexGroup, +} from '@elastic/eui'; import { IndexPatternLayer, IndexPatternField } from '../types'; import { hasField } from '../utils'; import { IndexPatternColumn } from '../operations'; @@ -54,32 +62,42 @@ export function BucketNestingEditor({ if (aggColumns.length === 1) { const [target] = aggColumns; + const useAsTopLevelAggCopy = i18n.translate('xpack.lens.indexPattern.useAsTopLevelAgg', { + defaultMessage: 'Group by {columnName} first', + values: { + columnName: column.label, + }, + }); return ( - - { - if (prevColumn) { - setColumns(nestColumn(layer.columnOrder, columnId, target.value)); - } else { - setColumns(nestColumn(layer.columnOrder, target.value, columnId)); - } - }} - /> + + + + {' '} + + + + { + if (prevColumn) { + setColumns(nestColumn(layer.columnOrder, columnId, target.value)); + } else { + setColumns(nestColumn(layer.columnOrder, target.value, columnId)); + } + }} + /> + + ); } From 907860e01328d217bbfe49f5123b53e90e51ea21 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Tue, 6 Oct 2020 10:26:38 +0200 Subject: [PATCH 11/13] Update bucket_nesting_editor.tsx --- .../dimension_panel/bucket_nesting_editor.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 7fce550c795d8..6a2160f40f6dc 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -11,7 +11,6 @@ import { EuiSwitch, EuiSelect, EuiIconTip, - EuiSpacer, EuiFlexItem, EuiFlexGroup, } from '@elastic/eui'; From 01dc76108f45463a5e271e383913e8e1e4a7dac6 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Tue, 6 Oct 2020 19:14:44 +0200 Subject: [PATCH 12/13] no tooltip --- .../dimension_panel/bucket_nesting_editor.tsx | 52 ++++++------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 6a2160f40f6dc..7e635307f4f28 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -6,14 +6,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { - EuiFormRow, - EuiSwitch, - EuiSelect, - EuiIconTip, - EuiFlexItem, - EuiFlexGroup, -} from '@elastic/eui'; +import { EuiFormRow, EuiSwitch, EuiSelect } from '@elastic/eui'; import { IndexPatternLayer, IndexPatternField } from '../types'; import { hasField } from '../utils'; import { IndexPatternColumn } from '../operations'; @@ -69,34 +62,21 @@ export function BucketNestingEditor({ }); return ( - - - {' '} - - - - { - if (prevColumn) { - setColumns(nestColumn(layer.columnOrder, columnId, target.value)); - } else { - setColumns(nestColumn(layer.columnOrder, target.value, columnId)); - } - }} - /> - - + { + if (prevColumn) { + setColumns(nestColumn(layer.columnOrder, columnId, target.value)); + } else { + setColumns(nestColumn(layer.columnOrder, target.value, columnId)); + } + }} + /> ); } From dcab9e580299317d66afb1b7ba64c9511d788271 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Tue, 6 Oct 2020 19:20:02 +0200 Subject: [PATCH 13/13] copy --- .../dimension_panel/bucket_nesting_editor.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 7e635307f4f28..7057538c7c632 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -55,10 +55,7 @@ export function BucketNestingEditor({ if (aggColumns.length === 1) { const [target] = aggColumns; const useAsTopLevelAggCopy = i18n.translate('xpack.lens.indexPattern.useAsTopLevelAgg', { - defaultMessage: 'Group by {columnName} first', - values: { - columnName: column.label, - }, + defaultMessage: 'Group by this field first', }); return (