From bd6f8e6ef7e46f96fa340b7ad567227a8061dbbf Mon Sep 17 00:00:00 2001 From: Aditi Patel Date: Tue, 21 Nov 2023 06:20:57 -0600 Subject: [PATCH] fix: Explore -Tables missing vertical spacing (#78149) * fix: added vertical space to tables * chore: used theme for spacing * fix: extended themeable2 * test: fixed TableContainer test with theme --- .../explore/Table/TableContainer.test.tsx | 14 ++--- .../features/explore/Table/TableContainer.tsx | 56 ++++++++++--------- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/public/app/features/explore/Table/TableContainer.test.tsx b/public/app/features/explore/Table/TableContainer.test.tsx index c8db16caca3..7c0e5adbd94 100644 --- a/public/app/features/explore/Table/TableContainer.test.tsx +++ b/public/app/features/explore/Table/TableContainer.test.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { DataFrame, FieldType, getDefaultTimeRange, InternalTimeZones, toDataFrame } from '@grafana/data'; -import { TableContainer } from './TableContainer'; +import { TableContainerWithTheme } from './TableContainer'; function getTables(): HTMLElement[] { return screen.getAllByRole('table'); @@ -57,10 +57,10 @@ const defaultProps = { timeZone: InternalTimeZones.utc, }; -describe('TableContainer', () => { +describe('TableContainerWithTheme', () => { describe('With one main frame', () => { it('should render component', () => { - render(); + render(); const tables = getTables(); expect(tables.length).toBe(1); expect(tables[0]).toBeInTheDocument(); @@ -82,12 +82,12 @@ describe('TableContainer', () => { length: 0, }, ]; - render(); + render(); expect(screen.getByText('0 series returned')).toBeInTheDocument(); }); it('should update time when timezone changes', () => { - const { rerender } = render(); + const { rerender } = render(); const rowsBeforeChange = within(getTables()[0]).getAllByRole('row'); expect(getRowsData(rowsBeforeChange)).toEqual([ { time: '2021-01-01 00:00:00', text: 'test_string_1' }, @@ -96,7 +96,7 @@ describe('TableContainer', () => { { time: '2021-01-01 02:00:00', text: 'test_string_4' }, ]); - rerender(); + rerender(); const rowsAfterChange = within(getTables()[0]).getAllByRole('row'); expect(getRowsData(rowsAfterChange)).toEqual([ { time: '2020-12-31 19:00:00', text: 'test_string_1' }, @@ -110,7 +110,7 @@ describe('TableContainer', () => { it('should render multiple tables for multiple frames', () => { const dataFrames = [dataFrame, dataFrame]; const multiDefaultProps = { ...defaultProps, tableResult: dataFrames }; - render(); + render(); const tables = getTables(); expect(tables.length).toBe(2); expect(tables[0]).toBeInTheDocument(); diff --git a/public/app/features/explore/Table/TableContainer.tsx b/public/app/features/explore/Table/TableContainer.tsx index 57e9e6a27f7..0c83c9b78ae 100644 --- a/public/app/features/explore/Table/TableContainer.tsx +++ b/public/app/features/explore/Table/TableContainer.tsx @@ -1,9 +1,10 @@ +import { css } from '@emotion/css'; import React, { PureComponent } from 'react'; import { connect, ConnectedProps } from 'react-redux'; import { applyFieldOverrides, TimeZone, SplitOpen, DataFrame, LoadingState, FieldType } from '@grafana/data'; import { getTemplateSrv } from '@grafana/runtime'; -import { Table, AdHocFilterItem, PanelChrome } from '@grafana/ui'; +import { Table, AdHocFilterItem, PanelChrome, withTheme2, Themeable2 } from '@grafana/ui'; import { config } from 'app/core/config'; import { t } from 'app/core/internationalization'; import { @@ -17,7 +18,7 @@ import { MetaInfoText } from '../MetaInfoText'; import { selectIsWaitingForData } from '../state/query'; import { exploreDataLinkPostProcessorFactory } from '../utils/links'; -interface TableContainerProps { +interface TableContainerProps extends Themeable2 { ariaLabel?: string; exploreId: string; width: number; @@ -61,7 +62,8 @@ export class TableContainer extends PureComponent { } render() { - const { loading, onCellFilterAdded, tableResult, width, splitOpenFn, range, ariaLabel, timeZone } = this.props; + const { loading, onCellFilterAdded, tableResult, width, splitOpenFn, range, ariaLabel, timeZone, theme } = + this.props; let dataFrames = hasDeprecatedParentRowIndex(tableResult) ? migrateFromParentRowIndexToNestedFrames(tableResult) @@ -93,30 +95,34 @@ export class TableContainer extends PureComponent { {() => } )} - {frames && - frames.length > 0 && - frames.map((data, i) => ( - - {(innerWidth, innerHeight) => ( - - )} - - ))} + {frames && frames.length > 0 && ( +
+ {frames.map((data, i) => ( + + {(innerWidth, innerHeight) => ( +
+ )} + + ))} + + )} ); } } -export default connector(TableContainer); +export const TableContainerWithTheme = withTheme2(TableContainer); + +export default withTheme2(connector(TableContainer));