Skip to content

Commit 4ebca5f

Browse files
committed
move hidden flag to dimension editor
1 parent 0ec8926 commit 4ebca5f

5 files changed

Lines changed: 68 additions & 79 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import React from 'react';
8+
import { i18n } from '@kbn/i18n';
9+
import { EuiSwitch, EuiFormRow } from '@elastic/eui';
10+
import { VisualizationDimensionEditorProps } from '../../types';
11+
import { DatatableVisualizationState } from '../visualization';
12+
13+
export function TableDimensionEditor(
14+
props: VisualizationDimensionEditorProps<DatatableVisualizationState>
15+
) {
16+
const { state, setState, accessor } = props;
17+
const column = state.columns.find((c) => c.columnId === accessor);
18+
19+
if (!column) {
20+
return null;
21+
}
22+
23+
return (
24+
<EuiFormRow
25+
label={i18n.translate('xpack.lens.table.columnVisibilityLabel', {
26+
defaultMessage: 'Column hidden in table',
27+
})}
28+
display="columnCompressedSwitch"
29+
>
30+
<EuiSwitch
31+
compressed
32+
label={i18n.translate('xpack.lens.table.columnVisibilityLabel', {
33+
defaultMessage: 'Column hidden',
34+
})}
35+
showLabel={false}
36+
data-test-subj="lns-table-column-hidden"
37+
checked={Boolean(column?.hidden)}
38+
onChange={() => {
39+
const newState = {
40+
...state,
41+
columns: state.columns.map((currentColumn) => {
42+
if (currentColumn.columnId === accessor) {
43+
return {
44+
...currentColumn,
45+
hidden: !column.hidden,
46+
};
47+
} else {
48+
return currentColumn;
49+
}
50+
}),
51+
};
52+
setState(newState);
53+
}}
54+
/>
55+
</EuiFormRow>
56+
);
57+
}

x-pack/plugins/lens/public/datatable_visualization/components/toolbar.tsx

Lines changed: 0 additions & 69 deletions
This file was deleted.

x-pack/plugins/lens/public/datatable_visualization/visualization.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import type {
1616
DatasourcePublicAPI,
1717
} from '../types';
1818
import { LensIconChartDatatable } from '../assets/chart_datatable';
19-
import { TableToolbar } from './components/toolbar';
19+
import { TableDimensionEditor } from './components/dimension_editor';
2020

2121
export interface ColumnState {
2222
columnId: string;
@@ -165,6 +165,7 @@ export const datatableVisualization: Visualization<DatatableVisualizationState>
165165
supportsMoreColumns: true,
166166
filterOperations: (op) => op.isBucketed,
167167
dataTestSubj: 'lnsDatatable_column',
168+
enableDimensionEditor: true,
168169
},
169170
{
170171
groupId: 'metrics',
@@ -179,6 +180,7 @@ export const datatableVisualization: Visualization<DatatableVisualizationState>
179180
filterOperations: (op) => !op.isBucketed,
180181
required: true,
181182
dataTestSubj: 'lnsDatatable_metrics',
183+
enableDimensionEditor: true,
182184
},
183185
],
184186
};
@@ -200,10 +202,10 @@ export const datatableVisualization: Visualization<DatatableVisualizationState>
200202
sorting: prevState.sorting?.columnId === columnId ? undefined : prevState.sorting,
201203
};
202204
},
203-
renderToolbar(domElement, props) {
205+
renderDimensionEditor(domElement, props) {
204206
render(
205207
<I18nProvider>
206-
<TableToolbar {...props} />
208+
<TableDimensionEditor {...props} />
207209
</I18nProvider>,
208210
domElement
209211
);

x-pack/test/functional/apps/lens/table.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
5353
expect(await PageObjects.lens.getDatatableHeaderText(1)).to.equal('@timestamp per 3 hours');
5454
expect(await PageObjects.lens.getDatatableHeaderText(2)).to.equal('Average of bytes');
5555

56-
await PageObjects.lens.toggleColumnVisibility('Top values of ip');
56+
await PageObjects.lens.toggleColumnVisibility('lnsDatatable_column > lns-dimensionTrigger');
5757

5858
expect(await PageObjects.lens.getDatatableHeaderText(0)).to.equal('@timestamp per 3 hours');
5959
expect(await PageObjects.lens.getDatatableHeaderText(1)).to.equal('Average of bytes');
6060

61-
await PageObjects.lens.toggleColumnVisibility('Top values of ip');
61+
await PageObjects.lens.toggleColumnVisibility('lnsDatatable_column > lns-dimensionTrigger');
6262

6363
expect(await PageObjects.lens.getDatatableHeaderText(0)).to.equal('Top values of ip');
6464
expect(await PageObjects.lens.getDatatableHeaderText(1)).to.equal('@timestamp per 3 hours');

x-pack/test/functional/page_objects/lens_page.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -561,13 +561,12 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont
561561
return buttonEl.click();
562562
},
563563

564-
async toggleColumnVisibility(label: string) {
565-
const id = `lnsColumns-toggle-${label.replace(/ /g, '-')}`;
566-
await testSubjects.click('lnsColumnsButton');
567-
await testSubjects.existOrFail(id);
564+
async toggleColumnVisibility(dimension: string) {
565+
await this.openDimensionEditor(dimension);
566+
const id = 'lns-table-column-hidden';
568567
const isChecked = await testSubjects.isEuiSwitchChecked(id);
569568
await testSubjects.setEuiSwitch(id, isChecked ? 'uncheck' : 'check');
570-
await testSubjects.click('lnsColumnsButton');
569+
await this.closeDimensionEditor();
571570
await PageObjects.header.waitUntilLoadingHasFinished();
572571
},
573572

0 commit comments

Comments
 (0)