mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-10-17 02:21:33 +08:00

* refactor: search in dropdown * refactor: name of the view to i18 * refactor: make the use of useForm from antd * refactor: moved QuerySearchParamNames into save view module * refactor: reset to query build when click on explorer link * refactor: save view prd design changes * refactor: reverted resetQuery in querybuilder * refactor: queryParams to query.ts in querybuilder constants * fix: redirect with saved view is updated * refactor: removed useffect logic for updating query --------- Co-authored-by: Palash Gupta <palashgdev@gmail.com>
78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
import { QueryParams } from 'constants/query';
|
|
import { initialAutocompleteData, PANEL_TYPES } from 'constants/queryBuilder';
|
|
import { SIGNOZ_VALUE } from 'container/QueryBuilder/filters/OrderByFilter/constants';
|
|
import { useCallback } from 'react';
|
|
import { Query } from 'types/api/queryBuilder/queryBuilderData';
|
|
import { DataSource } from 'types/common/queryBuilder';
|
|
|
|
import { useGetSearchQueryParam } from './queryBuilder/useGetSearchQueryParam';
|
|
import { useQueryBuilder } from './queryBuilder/useQueryBuilder';
|
|
|
|
export const useHandleExplorerTabChange = (): {
|
|
handleExplorerTabChange: (
|
|
type: string,
|
|
querySearchParameters?: ICurrentQueryData,
|
|
) => void;
|
|
} => {
|
|
const {
|
|
currentQuery,
|
|
panelType,
|
|
redirectWithQueryBuilderData,
|
|
updateAllQueriesOperators,
|
|
updateQueriesData,
|
|
} = useQueryBuilder();
|
|
|
|
const viewName = useGetSearchQueryParam(QueryParams.viewName) || '';
|
|
|
|
const viewKey = useGetSearchQueryParam(QueryParams.viewKey) || '';
|
|
|
|
const getUpdateQuery = useCallback(
|
|
(newPanelType: PANEL_TYPES): Query => {
|
|
let query = updateAllQueriesOperators(
|
|
currentQuery,
|
|
newPanelType,
|
|
DataSource.TRACES,
|
|
);
|
|
|
|
if (
|
|
newPanelType === PANEL_TYPES.LIST ||
|
|
newPanelType === PANEL_TYPES.TRACE
|
|
) {
|
|
query = updateQueriesData(query, 'queryData', (item) => ({
|
|
...item,
|
|
orderBy: item.orderBy.filter((item) => item.columnName !== SIGNOZ_VALUE),
|
|
aggregateAttribute: initialAutocompleteData,
|
|
}));
|
|
}
|
|
|
|
return query;
|
|
},
|
|
[currentQuery, updateAllQueriesOperators, updateQueriesData],
|
|
);
|
|
|
|
const handleExplorerTabChange = useCallback(
|
|
(type: string, currentQueryData?: ICurrentQueryData) => {
|
|
const newPanelType = type as PANEL_TYPES;
|
|
|
|
if (newPanelType === panelType && !currentQueryData) return;
|
|
|
|
const query = currentQueryData?.query || getUpdateQuery(newPanelType);
|
|
|
|
redirectWithQueryBuilderData(query, {
|
|
[QueryParams.panelTypes]: newPanelType,
|
|
[QueryParams.viewName]: currentQueryData?.name || viewName,
|
|
[QueryParams.viewKey]: currentQueryData?.uuid || viewKey,
|
|
});
|
|
},
|
|
[panelType, getUpdateQuery, redirectWithQueryBuilderData, viewName, viewKey],
|
|
);
|
|
|
|
return { handleExplorerTabChange };
|
|
};
|
|
|
|
interface ICurrentQueryData {
|
|
name: string;
|
|
uuid: string;
|
|
query: Query;
|
|
}
|