mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-15 23:05:56 +08:00
fix: log details action not it (#3350)
* fix: log details action not it * fix: getting keys when query param redirect * fix: getting operator * fix: data type for not existing autocomplete value --------- Co-authored-by: Palash Gupta <palashgdev@gmail.com>
This commit is contained in:
parent
8ef4c0bcdd
commit
9a6fcb6b1d
@ -1,20 +1,20 @@
|
|||||||
import { OPERATORS, QueryBuilderKeys } from 'constants/queryBuilder';
|
import { getAggregateKeys } from 'api/queryBuilder/getAttributeKeys';
|
||||||
|
import { QueryBuilderKeys } from 'constants/queryBuilder';
|
||||||
import ROUTES from 'constants/routes';
|
import ROUTES from 'constants/routes';
|
||||||
|
import { getOperatorValue } from 'container/QueryBuilder/filters/QueryBuilderSearch/utils';
|
||||||
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
||||||
|
import { useNotifications } from 'hooks/useNotifications';
|
||||||
import { getGeneratedFilterQueryString } from 'lib/getGeneratedFilterQueryString';
|
import { getGeneratedFilterQueryString } from 'lib/getGeneratedFilterQueryString';
|
||||||
import { chooseAutocompleteFromCustomValue } from 'lib/newQueryBuilder/chooseAutocompleteFromCustomValue';
|
import { chooseAutocompleteFromCustomValue } from 'lib/newQueryBuilder/chooseAutocompleteFromCustomValue';
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useQueryClient } from 'react-query';
|
import { useQueryClient } from 'react-query';
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
import { useDispatch, useSelector } from 'react-redux';
|
||||||
import { useHistory, useLocation } from 'react-router-dom';
|
import { useHistory, useLocation } from 'react-router-dom';
|
||||||
import { AppState } from 'store/reducers';
|
import { AppState } from 'store/reducers';
|
||||||
import { SET_DETAILED_LOG_DATA } from 'types/actions/logs';
|
import { SET_DETAILED_LOG_DATA } from 'types/actions/logs';
|
||||||
import { SuccessResponse } from 'types/api';
|
|
||||||
import { ILog } from 'types/api/logs/log';
|
import { ILog } from 'types/api/logs/log';
|
||||||
import {
|
import { BaseAutocompleteData } from 'types/api/queryBuilder/queryAutocompleteResponse';
|
||||||
BaseAutocompleteData,
|
|
||||||
IQueryAutocompleteResponse,
|
|
||||||
} from 'types/api/queryBuilder/queryAutocompleteResponse';
|
|
||||||
import { Query } from 'types/api/queryBuilder/queryBuilderData';
|
import { Query } from 'types/api/queryBuilder/queryBuilderData';
|
||||||
import { ILogsReducer } from 'types/reducer/logs';
|
import { ILogsReducer } from 'types/reducer/logs';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
@ -31,6 +31,9 @@ export const useActiveLog = (): UseActiveLog => {
|
|||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const { currentQuery, redirectWithQueryBuilderData } = useQueryBuilder();
|
const { currentQuery, redirectWithQueryBuilderData } = useQueryBuilder();
|
||||||
|
const { notifications } = useNotifications();
|
||||||
|
|
||||||
|
const { t } = useTranslation('common');
|
||||||
|
|
||||||
const isLogsPage = useMemo(() => pathname === ROUTES.LOGS, [pathname]);
|
const isLogsPage = useMemo(() => pathname === ROUTES.LOGS, [pathname]);
|
||||||
|
|
||||||
@ -60,48 +63,64 @@ export const useActiveLog = (): UseActiveLog => {
|
|||||||
const onClearActiveLog = useCallback((): void => setActiveLog(null), []);
|
const onClearActiveLog = useCallback((): void => setActiveLog(null), []);
|
||||||
|
|
||||||
const onAddToQueryExplorer = useCallback(
|
const onAddToQueryExplorer = useCallback(
|
||||||
(fieldKey: string, fieldValue: string, operator: string): void => {
|
async (
|
||||||
const keysAutocomplete: BaseAutocompleteData[] =
|
fieldKey: string,
|
||||||
queryClient.getQueryData<SuccessResponse<IQueryAutocompleteResponse>>(
|
fieldValue: string,
|
||||||
[QueryBuilderKeys.GET_AGGREGATE_KEYS],
|
operator: string,
|
||||||
{ exact: false },
|
): Promise<void> => {
|
||||||
)?.payload.attributeKeys || [];
|
try {
|
||||||
|
const keysAutocompleteResponse = await queryClient.fetchQuery(
|
||||||
|
[QueryBuilderKeys.GET_AGGREGATE_KEYS, fieldKey],
|
||||||
|
async () =>
|
||||||
|
getAggregateKeys({
|
||||||
|
searchText: fieldKey,
|
||||||
|
aggregateOperator: currentQuery.builder.queryData[0].aggregateOperator,
|
||||||
|
dataSource: currentQuery.builder.queryData[0].dataSource,
|
||||||
|
aggregateAttribute:
|
||||||
|
currentQuery.builder.queryData[0].aggregateAttribute.key,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
const existAutocompleteKey = chooseAutocompleteFromCustomValue(
|
const keysAutocomplete: BaseAutocompleteData[] =
|
||||||
keysAutocomplete,
|
keysAutocompleteResponse.payload?.attributeKeys || [];
|
||||||
fieldKey,
|
|
||||||
);
|
|
||||||
|
|
||||||
const currentOperator =
|
const existAutocompleteKey = chooseAutocompleteFromCustomValue(
|
||||||
Object.keys(OPERATORS).find((op) => op === operator) || '';
|
keysAutocomplete,
|
||||||
|
fieldKey,
|
||||||
|
);
|
||||||
|
|
||||||
const nextQuery: Query = {
|
const currentOperator = getOperatorValue(operator);
|
||||||
...currentQuery,
|
|
||||||
builder: {
|
|
||||||
...currentQuery.builder,
|
|
||||||
queryData: currentQuery.builder.queryData.map((item) => ({
|
|
||||||
...item,
|
|
||||||
filters: {
|
|
||||||
...item.filters,
|
|
||||||
items: [
|
|
||||||
...item.filters.items.filter(
|
|
||||||
(item) => item.key?.id !== existAutocompleteKey.id,
|
|
||||||
),
|
|
||||||
{
|
|
||||||
id: uuid(),
|
|
||||||
key: existAutocompleteKey,
|
|
||||||
op: currentOperator,
|
|
||||||
value: fieldValue,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
})),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
redirectWithQueryBuilderData(nextQuery);
|
const nextQuery: Query = {
|
||||||
|
...currentQuery,
|
||||||
|
builder: {
|
||||||
|
...currentQuery.builder,
|
||||||
|
queryData: currentQuery.builder.queryData.map((item) => ({
|
||||||
|
...item,
|
||||||
|
filters: {
|
||||||
|
...item.filters,
|
||||||
|
items: [
|
||||||
|
...item.filters.items.filter(
|
||||||
|
(item) => item.key?.id !== existAutocompleteKey.id,
|
||||||
|
),
|
||||||
|
{
|
||||||
|
id: uuid(),
|
||||||
|
key: existAutocompleteKey,
|
||||||
|
op: currentOperator,
|
||||||
|
value: fieldValue,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
redirectWithQueryBuilderData(nextQuery);
|
||||||
|
} catch {
|
||||||
|
notifications.error({ message: t('something_went_wrong') });
|
||||||
|
}
|
||||||
},
|
},
|
||||||
[currentQuery, queryClient, redirectWithQueryBuilderData],
|
[currentQuery, notifications, queryClient, redirectWithQueryBuilderData, t],
|
||||||
);
|
);
|
||||||
|
|
||||||
const onAddToQueryLogs = useCallback(
|
const onAddToQueryLogs = useCallback(
|
||||||
|
@ -9,8 +9,9 @@ export const chooseAutocompleteFromCustomValue = (
|
|||||||
(sourceAutoComplete) => value === sourceAutoComplete.key,
|
(sourceAutoComplete) => value === sourceAutoComplete.key,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!firstBaseAutoCompleteValue)
|
if (!firstBaseAutoCompleteValue) {
|
||||||
return { ...initialAutocompleteData, key: value };
|
return { ...initialAutocompleteData, key: value, dataType: 'string' };
|
||||||
|
}
|
||||||
|
|
||||||
return firstBaseAutoCompleteValue;
|
return firstBaseAutoCompleteValue;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user