From 0a33d4aed571120f34e7608a171e144df159d011 Mon Sep 17 00:00:00 2001 From: Qiwen Li Date: Thu, 14 Dec 2023 18:10:59 -0500 Subject: [PATCH] [OSCI][Fix][Discover]Prevent Adding Timefield to the Side Nav Selected Fields on Column Removal (#5537) * added in a filter for columns before rendering the panel, remove timeField if it was not previously chosen. * fix issue 5538 too --------- Signed-off-by: qiwen li Signed-off-by: Qiwen Li --- CHANGELOG.md | 1 + .../view_components/panel/index.tsx | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87aa8c065ea..606355e8458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [BUG] Fix filtering issue in data source selector ([5484](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5484)) - [BUG][Data] Support for custom filters with heterogeneous data fields ([5577](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5577)) - [BUG][Data] Fix empty suggestion history when querying in search bar [#5349](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5349) +- [BUG][Discover] Fix what is displayed in `selected fields` when removing columns from canvas [#5537](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5537) ### 🚞 Infrastructure diff --git a/src/plugins/discover/public/application/view_components/panel/index.tsx b/src/plugins/discover/public/application/view_components/panel/index.tsx index bbf5331fb16..6b4cd2a87c9 100644 --- a/src/plugins/discover/public/application/view_components/panel/index.tsx +++ b/src/plugins/discover/public/application/view_components/panel/index.tsx @@ -3,12 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; import { ViewProps } from '../../../../../data_explorer/public'; import { addColumn, removeColumn, reorderColumn, + setColumns, useDispatch, useSelector, } from '../../utils/state_management'; @@ -19,6 +20,7 @@ import { IndexPatternField, opensearchFilters } from '../../../../../data/public import { useOpenSearchDashboards } from '../../../../../opensearch_dashboards_react/public'; import { DiscoverViewServices } from '../../../build_services'; import { popularizeField } from '../../helpers/popularize_field'; +import { buildColumns } from '../../utils/columns'; // eslint-disable-next-line import/no-default-export export default function DiscoverPanel(props: ViewProps) { @@ -36,7 +38,27 @@ export default function DiscoverPanel(props: ViewProps) { const { columns } = useSelector((state) => ({ columns: state.discover.columns, })); + + const prevColumns = useRef(columns); const dispatch = useDispatch(); + useEffect(() => { + const timeFieldname = indexPattern?.timeFieldName; + + if (columns !== prevColumns.current) { + let updatedColumns = buildColumns(columns); + if ( + timeFieldname && + !prevColumns.current.includes(timeFieldname) && + columns.includes(timeFieldname) + ) { + // Remove timeFieldname from columns if previously chosen columns does not include time field + updatedColumns = columns.filter((column) => column !== timeFieldname); + } + // Update the ref with the new columns + dispatch(setColumns({ columns: updatedColumns })); + prevColumns.current = columns; + } + }, [columns, dispatch, indexPattern?.timeFieldName]); useEffect(() => { const subscription = data$.subscribe((next) => {