From 8bf1ad1cff8a6d504b448e0f0deeace47f82022a Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Thu, 25 Sep 2025 14:39:54 -0600 Subject: [PATCH] dashboard updates --- .../dashboards/mutations/useMetrics.ts | 16 +++++++++++++--- .../dashboards/mutations/useSaveDashboard.ts | 10 ++++++++-- .../dashboards/mutations/useUpdateDashboard.ts | 5 ++++- .../mutations/useUpdateDashboardConfig.ts | 3 ++- .../dashboards/queries/useGetDashboard.ts | 1 - .../versionHistory/DashboardVersionModal.tsx | 1 + .../ui/table/AppDataGrid/DataGridRow.tsx | 4 ++-- 7 files changed, 30 insertions(+), 10 deletions(-) diff --git a/apps/web/src/api/buster_rest/dashboards/mutations/useMetrics.ts b/apps/web/src/api/buster_rest/dashboards/mutations/useMetrics.ts index 6ee1d6889..2c6fe283c 100644 --- a/apps/web/src/api/buster_rest/dashboards/mutations/useMetrics.ts +++ b/apps/web/src/api/buster_rest/dashboards/mutations/useMetrics.ts @@ -16,7 +16,10 @@ import { useSaveDashboard } from '../queryRequests'; export const useAddAndRemoveMetricsFromDashboard = () => { const { openErrorMessage, openConfirmModal } = useBusterNotifications(); const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false }); - const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave: true }); + const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ + updateOnSave: true, + updateVersion: true, + }); const addAndRemoveMetrics = async ({ metrics, @@ -57,6 +60,7 @@ export const useAddAndRemoveMetricsFromDashboard = () => { const data = await dashboardsUpdateDashboard({ id: dashboardId, config: newConfig, + update_version: true, }); return data; @@ -108,7 +112,10 @@ export const useAddMetricsToDashboard = () => { const queryClient = useQueryClient(); const { openErrorMessage, openConfirmModal } = useBusterNotifications(); const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false }); - const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave: true }); + const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ + updateOnSave: true, + updateVersion: true, + }); const addMetricToDashboard = async ({ metricIds, @@ -169,7 +176,10 @@ export const useRemoveMetricsFromDashboard = () => { const { openConfirmModal, openErrorMessage } = useBusterNotifications(); const queryClient = useQueryClient(); const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false }); - const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave: true }); + const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ + updateOnSave: true, + updateVersion: true, + }); const removeMetricFromDashboard = async ({ metricIds, diff --git a/apps/web/src/api/buster_rest/dashboards/mutations/useSaveDashboard.ts b/apps/web/src/api/buster_rest/dashboards/mutations/useSaveDashboard.ts index 7bcb8a179..ae510c6f5 100644 --- a/apps/web/src/api/buster_rest/dashboards/mutations/useSaveDashboard.ts +++ b/apps/web/src/api/buster_rest/dashboards/mutations/useSaveDashboard.ts @@ -10,13 +10,19 @@ import { dashboardsUpdateDashboard } from '../requests'; * useSaveDashboard * Saves the dashboard to the server and updates cache optionally. */ -export const useSaveDashboard = (params?: { updateOnSave?: boolean }) => { +export const useSaveDashboard = (params?: { updateOnSave?: boolean; updateVersion?: boolean }) => { const updateOnSave = params?.updateOnSave || false; + const updateVersion = params?.updateVersion || true; + const queryClient = useQueryClient(); const navigate = useNavigate(); return useMutation({ - mutationFn: dashboardsUpdateDashboard, + mutationFn: (variables: Parameters[0]) => + dashboardsUpdateDashboard({ + ...variables, + update_version: variables.update_version ?? updateVersion, + }), onMutate: (variables) => { const options = dashboardQueryKeys.dashboardGetDashboard(variables.id, 'LATEST'); queryClient.setQueryData(options.queryKey, (old) => { diff --git a/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboard.ts b/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboard.ts index f62f33c76..34d7f7c3d 100644 --- a/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboard.ts +++ b/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboard.ts @@ -15,7 +15,10 @@ export const useUpdateDashboard = (params?: { }) => { const { updateOnSave = false, updateVersion = false, saveToServer = false } = params || {}; const queryClient = useQueryClient(); - const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave }); + const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ + updateOnSave, + updateVersion, + }); const mutationFn = async (variables: Parameters[0]) => { if (saveToServer) { diff --git a/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboardConfig.ts b/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboardConfig.ts index 1ea50870e..3bada46e3 100644 --- a/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboardConfig.ts +++ b/apps/web/src/api/buster_rest/dashboards/mutations/useUpdateDashboardConfig.ts @@ -3,13 +3,14 @@ import { create } from 'mutative'; import type { BusterDashboard } from '@/api/asset_interfaces/dashboard'; import { dashboardQueryKeys } from '@/api/query_keys/dashboard'; import { useSaveDashboard } from './useSaveDashboard'; +import { useUpdateDashboard } from './useUpdateDashboard'; /** * useUpdateDashboardConfig * Client-optmistic update for the dashboard.config field, then persists. */ export const useUpdateDashboardConfig = () => { - const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ + const { mutateAsync: dashboardsUpdateDashboard } = useUpdateDashboard({ updateOnSave: true, }); const queryClient = useQueryClient(); diff --git a/apps/web/src/api/buster_rest/dashboards/queries/useGetDashboard.ts b/apps/web/src/api/buster_rest/dashboards/queries/useGetDashboard.ts index 425468862..ca492dfab 100644 --- a/apps/web/src/api/buster_rest/dashboards/queries/useGetDashboard.ts +++ b/apps/web/src/api/buster_rest/dashboards/queries/useGetDashboard.ts @@ -154,7 +154,6 @@ export const prefetchGetDashboard = async ({ version_number, }: Parameters[0]) => { const chosenVersionNumber = version_number || 'LATEST'; - console.log('prefetchGetDashboard', chosenVersionNumber); const queryFn = async () => getDashboardAndInitializeMetrics({ id, diff --git a/apps/web/src/components/features/versionHistory/DashboardVersionModal.tsx b/apps/web/src/components/features/versionHistory/DashboardVersionModal.tsx index e1b3fb38c..dfbe84bfb 100644 --- a/apps/web/src/components/features/versionHistory/DashboardVersionModal.tsx +++ b/apps/web/src/components/features/versionHistory/DashboardVersionModal.tsx @@ -26,6 +26,7 @@ export const DashboardVersionModal = React.memo( ); const { mutateAsync: updateDashboard, isPending: isRestoringVersion } = useSaveDashboard({ updateOnSave: true, + updateVersion: true, }); const { diff --git a/apps/web/src/components/ui/table/AppDataGrid/DataGridRow.tsx b/apps/web/src/components/ui/table/AppDataGrid/DataGridRow.tsx index b9028b574..5310672b4 100644 --- a/apps/web/src/components/ui/table/AppDataGrid/DataGridRow.tsx +++ b/apps/web/src/components/ui/table/AppDataGrid/DataGridRow.tsx @@ -14,8 +14,8 @@ export const DataGridRow: React.FC = ({ row, virtualRow }) =>