Merge pull request #1150 from buster-so/big-nate-bus-1944-update_version-on-put-requests-to-report-files-and-dashboard

dashboard updates
This commit is contained in:
Nate Kelley 2025-09-25 14:41:23 -06:00 committed by GitHub
commit 3baabc1a62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 30 additions and 10 deletions

View File

@ -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,

View File

@ -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<typeof dashboardsUpdateDashboard>[0]) =>
dashboardsUpdateDashboard({
...variables,
update_version: variables.update_version ?? updateVersion,
}),
onMutate: (variables) => {
const options = dashboardQueryKeys.dashboardGetDashboard(variables.id, 'LATEST');
queryClient.setQueryData(options.queryKey, (old) => {

View File

@ -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<typeof dashboardsUpdateDashboard>[0]) => {
if (saveToServer) {

View File

@ -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();

View File

@ -154,7 +154,6 @@ export const prefetchGetDashboard = async ({
version_number,
}: Parameters<typeof getDashboardAndInitializeMetrics>[0]) => {
const chosenVersionNumber = version_number || 'LATEST';
console.log('prefetchGetDashboard', chosenVersionNumber);
const queryFn = async () =>
getDashboardAndInitializeMetrics({
id,

View File

@ -26,6 +26,7 @@ export const DashboardVersionModal = React.memo(
);
const { mutateAsync: updateDashboard, isPending: isRestoringVersion } = useSaveDashboard({
updateOnSave: true,
updateVersion: true,
});
const {

View File

@ -14,8 +14,8 @@ export const DataGridRow: React.FC<DataGridRowProps> = ({ row, virtualRow }) =>
<tr
className={cn(
'hover:bg-item-hover absolute inset-x-0 border-b flex',
row.getIsSelected() && 'bg-primary/10',
'last:border-b-0'
row.getIsSelected() && 'bg-primary/10'
// 'last:border-b-0' //don't do it
)}
style={{
transform: `translateY(${virtualRow.start}px)`,