import './Explorer.styles.scss'; import * as Sentry from '@sentry/react'; import { Switch } from 'antd'; import { initialQueriesMap, PANEL_TYPES } from 'constants/queryBuilder'; import ExplorerOptionWrapper from 'container/ExplorerOptions/ExplorerOptionWrapper'; import RightToolbarActions from 'container/QueryBuilder/components/ToolbarActions/RightToolbarActions'; import DateTimeSelector from 'container/TopNav/DateTimeSelectionV2'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { useShareBuilderUrl } from 'hooks/queryBuilder/useShareBuilderUrl'; import { useSafeNavigate } from 'hooks/useSafeNavigate'; import ErrorBoundaryFallback from 'pages/ErrorBoundaryFallback/ErrorBoundaryFallback'; import { useCallback, useMemo, useState } from 'react'; import { useSearchParams } from 'react-router-dom-v5-compat'; import { Dashboard } from 'types/api/dashboard/getAll'; import { Query } from 'types/api/queryBuilder/queryBuilderData'; import { DataSource } from 'types/common/queryBuilder'; import { generateExportToDashboardLink } from 'utils/dashboard/generateExportToDashboardLink'; import { v4 as uuid } from 'uuid'; import QuerySection from './QuerySection'; import TimeSeries from './TimeSeries'; import { ExplorerTabs } from './types'; import { splitQueryIntoOneChartPerQuery } from './utils'; const ONE_CHART_PER_QUERY_ENABLED_KEY = 'isOneChartPerQueryEnabled'; function Explorer(): JSX.Element { const { handleRunQuery, stagedQuery, updateAllQueriesOperators, currentQuery, } = useQueryBuilder(); const { safeNavigate } = useSafeNavigate(); const [searchParams, setSearchParams] = useSearchParams(); const isOneChartPerQueryEnabled = searchParams.get(ONE_CHART_PER_QUERY_ENABLED_KEY) === 'true'; const [showOneChartPerQuery, toggleShowOneChartPerQuery] = useState( isOneChartPerQueryEnabled, ); const [selectedTab] = useState(ExplorerTabs.TIME_SERIES); const handleToggleShowOneChartPerQuery = (): void => { toggleShowOneChartPerQuery(!showOneChartPerQuery); setSearchParams({ ...Object.fromEntries(searchParams), [ONE_CHART_PER_QUERY_ENABLED_KEY]: (!showOneChartPerQuery).toString(), }); }; const exportDefaultQuery = useMemo( () => updateAllQueriesOperators( currentQuery || initialQueriesMap[DataSource.METRICS], PANEL_TYPES.TIME_SERIES, DataSource.METRICS, ), [currentQuery, updateAllQueriesOperators], ); useShareBuilderUrl(exportDefaultQuery); const handleExport = useCallback( ( dashboard: Dashboard | null, _isNewDashboard?: boolean, queryToExport?: Query, ): void => { if (!dashboard) return; const widgetId = uuid(); const dashboardEditView = generateExportToDashboardLink({ query: queryToExport || exportDefaultQuery, panelType: PANEL_TYPES.TIME_SERIES, dashboardId: dashboard?.uuid || '', widgetId, }); safeNavigate(dashboardEditView); }, [exportDefaultQuery, safeNavigate], ); const splitedQueries = useMemo( () => splitQueryIntoOneChartPerQuery( stagedQuery || initialQueriesMap[DataSource.METRICS], ), [stagedQuery], ); return ( }>
1 chart/query
{/* TODO: Enable once we have resolved all related metrics issues */} {/* */}
{selectedTab === ExplorerTabs.TIME_SERIES && ( )} {/* TODO: Enable once we have resolved all related metrics issues */} {/* {selectedTab === ExplorerTabs.RELATED_METRICS && ( )} */}
); } export default Explorer;