mirror of
https://github.com/SigNoz/signoz.git
synced 2026-04-22 20:00:29 +01:00
Renames the `selectedDashboard` store field (and related setters/getters `setSelectedDashboard`, `getSelectedDashboard`) to `dashboardData` across the frontend. Also renames incidental locals (`updatedSelectedDashboard`, `mockSelectedDashboard`, and the ExportPanel's local `selectedDashboardId`).
76 lines
2.5 KiB
TypeScript
76 lines
2.5 KiB
TypeScript
import { useCallback } from 'react';
|
|
import { useMutation } from 'react-query';
|
|
// eslint-disable-next-line no-restricted-imports
|
|
import { useSelector } from 'react-redux';
|
|
import { getSubstituteVars } from 'api/dashboard/substitute_vars';
|
|
import { prepareQueryRangePayloadV5 } from 'api/v5/v5';
|
|
import { PANEL_TYPES } from 'constants/queryBuilder';
|
|
import { timePreferenceType } from 'container/NewWidget/RightContainer/timeItems';
|
|
import { useDashboardVariablesByType } from 'hooks/dashboard/useDashboardVariablesByType';
|
|
import { getDashboardVariables } from 'lib/dashboardVariables/getDashboardVariables';
|
|
import { mapQueryDataFromApi } from 'lib/newQueryBuilder/queryBuilderMappers/mapQueryDataFromApi';
|
|
import { AppState } from 'store/reducers';
|
|
import { Query } from 'types/api/queryBuilder/queryBuilderData';
|
|
import { GlobalReducer } from 'types/reducer/globalTime';
|
|
import { getGraphType } from 'utils/getGraphType';
|
|
|
|
interface UseUpdatedQueryOptions {
|
|
widgetConfig: {
|
|
query: Query;
|
|
panelTypes: PANEL_TYPES;
|
|
timePreferance: timePreferenceType;
|
|
};
|
|
dashboardData?: any;
|
|
}
|
|
|
|
interface UseUpdatedQueryResult {
|
|
getUpdatedQuery: (options: UseUpdatedQueryOptions) => Promise<Query>;
|
|
isLoading: boolean;
|
|
}
|
|
|
|
function useUpdatedQuery(): UseUpdatedQueryResult {
|
|
const { selectedTime: globalSelectedInterval } = useSelector<
|
|
AppState,
|
|
GlobalReducer
|
|
>((state) => state.globalTime);
|
|
|
|
const queryRangeMutation = useMutation(getSubstituteVars);
|
|
|
|
const dashboardDynamicVariables = useDashboardVariablesByType(
|
|
'DYNAMIC',
|
|
'values',
|
|
);
|
|
|
|
const getUpdatedQuery = useCallback(
|
|
async ({
|
|
widgetConfig,
|
|
dashboardData,
|
|
}: UseUpdatedQueryOptions): Promise<Query> => {
|
|
// Prepare query payload with resolved variables
|
|
const { queryPayload } = prepareQueryRangePayloadV5({
|
|
query: widgetConfig.query,
|
|
graphType: getGraphType(widgetConfig.panelTypes),
|
|
selectedTime: widgetConfig.timePreferance,
|
|
globalSelectedInterval,
|
|
variables: getDashboardVariables(dashboardData?.data?.variables),
|
|
originalGraphType: widgetConfig.panelTypes,
|
|
dynamicVariables: dashboardDynamicVariables,
|
|
});
|
|
|
|
// Execute query and process results
|
|
const queryResult = await queryRangeMutation.mutateAsync(queryPayload);
|
|
|
|
// Map query data from API response
|
|
return mapQueryDataFromApi(queryResult.data.compositeQuery);
|
|
},
|
|
[dashboardDynamicVariables, globalSelectedInterval, queryRangeMutation],
|
|
);
|
|
|
|
return {
|
|
getUpdatedQuery,
|
|
isLoading: queryRangeMutation.isLoading,
|
|
};
|
|
}
|
|
|
|
export default useUpdatedQuery;
|