2023-06-19 15:57:58 +03:00
|
|
|
import { Tabs } from 'antd';
|
2023-06-23 21:39:59 +03:00
|
|
|
import { initialQueriesMap, PANEL_TYPES } from 'constants/queryBuilder';
|
|
|
|
|
import { PANEL_TYPES_QUERY } from 'constants/queryBuilderQueryNames';
|
|
|
|
|
import { GRAPH_TYPES } from 'container/NewDashboard/ComponentsSlider';
|
2023-06-19 15:57:58 +03:00
|
|
|
import QuerySection from 'container/TracesExplorer/QuerySection';
|
2023-06-23 21:39:59 +03:00
|
|
|
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
2023-06-19 15:57:58 +03:00
|
|
|
import { useShareBuilderUrl } from 'hooks/queryBuilder/useShareBuilderUrl';
|
2023-06-23 21:39:59 +03:00
|
|
|
import { useCallback, useMemo } from 'react';
|
|
|
|
|
import { DataSource } from 'types/common/queryBuilder';
|
2023-06-19 15:57:58 +03:00
|
|
|
|
|
|
|
|
import { Container } from './styles';
|
|
|
|
|
import { getTabsItems } from './utils';
|
|
|
|
|
|
|
|
|
|
function TracesExplorer(): JSX.Element {
|
2023-06-23 21:39:59 +03:00
|
|
|
const {
|
|
|
|
|
updateAllQueriesOperators,
|
|
|
|
|
redirectWithQueryBuilderData,
|
|
|
|
|
currentQuery,
|
|
|
|
|
panelType,
|
|
|
|
|
} = useQueryBuilder();
|
|
|
|
|
|
2023-06-19 15:57:58 +03:00
|
|
|
const tabsItems = getTabsItems();
|
|
|
|
|
|
2023-06-23 21:39:59 +03:00
|
|
|
const currentTab = panelType || PANEL_TYPES.TIME_SERIES;
|
2023-06-19 15:57:58 +03:00
|
|
|
|
|
|
|
|
const handleTabChange = useCallback(
|
2023-06-23 21:39:59 +03:00
|
|
|
(newPanelType: string): void => {
|
|
|
|
|
if (panelType === newPanelType) return;
|
|
|
|
|
|
|
|
|
|
const query = updateAllQueriesOperators(
|
|
|
|
|
currentQuery,
|
|
|
|
|
newPanelType as GRAPH_TYPES,
|
|
|
|
|
DataSource.TRACES,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
redirectWithQueryBuilderData(query, { [PANEL_TYPES_QUERY]: newPanelType });
|
2023-06-19 15:57:58 +03:00
|
|
|
},
|
2023-06-23 21:39:59 +03:00
|
|
|
[
|
|
|
|
|
currentQuery,
|
|
|
|
|
panelType,
|
|
|
|
|
redirectWithQueryBuilderData,
|
|
|
|
|
updateAllQueriesOperators,
|
|
|
|
|
],
|
2023-06-19 15:57:58 +03:00
|
|
|
);
|
|
|
|
|
|
2023-06-23 21:39:59 +03:00
|
|
|
const defaultValue = useMemo(
|
|
|
|
|
() =>
|
|
|
|
|
updateAllQueriesOperators(
|
|
|
|
|
initialQueriesMap.traces,
|
|
|
|
|
PANEL_TYPES.TIME_SERIES,
|
|
|
|
|
DataSource.TRACES,
|
|
|
|
|
),
|
|
|
|
|
[updateAllQueriesOperators],
|
|
|
|
|
);
|
2023-06-19 15:57:58 +03:00
|
|
|
|
2023-06-23 21:39:59 +03:00
|
|
|
useShareBuilderUrl(defaultValue);
|
2023-06-19 15:57:58 +03:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<QuerySection />
|
|
|
|
|
|
|
|
|
|
<Container>
|
2023-06-23 21:39:59 +03:00
|
|
|
<Tabs
|
|
|
|
|
defaultActiveKey={currentTab}
|
|
|
|
|
activeKey={currentTab}
|
|
|
|
|
items={tabsItems}
|
|
|
|
|
onChange={handleTabChange}
|
|
|
|
|
/>
|
2023-06-19 15:57:58 +03:00
|
|
|
</Container>
|
|
|
|
|
</>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default TracesExplorer;
|