mirror of https://github.com/buster-so/buster.git
dashboard updates
This commit is contained in:
parent
dac705c1bd
commit
8bf1ad1cff
|
@ -16,7 +16,10 @@ import { useSaveDashboard } from '../queryRequests';
|
||||||
export const useAddAndRemoveMetricsFromDashboard = () => {
|
export const useAddAndRemoveMetricsFromDashboard = () => {
|
||||||
const { openErrorMessage, openConfirmModal } = useBusterNotifications();
|
const { openErrorMessage, openConfirmModal } = useBusterNotifications();
|
||||||
const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false });
|
const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false });
|
||||||
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave: true });
|
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({
|
||||||
|
updateOnSave: true,
|
||||||
|
updateVersion: true,
|
||||||
|
});
|
||||||
|
|
||||||
const addAndRemoveMetrics = async ({
|
const addAndRemoveMetrics = async ({
|
||||||
metrics,
|
metrics,
|
||||||
|
@ -57,6 +60,7 @@ export const useAddAndRemoveMetricsFromDashboard = () => {
|
||||||
const data = await dashboardsUpdateDashboard({
|
const data = await dashboardsUpdateDashboard({
|
||||||
id: dashboardId,
|
id: dashboardId,
|
||||||
config: newConfig,
|
config: newConfig,
|
||||||
|
update_version: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
@ -108,7 +112,10 @@ export const useAddMetricsToDashboard = () => {
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const { openErrorMessage, openConfirmModal } = useBusterNotifications();
|
const { openErrorMessage, openConfirmModal } = useBusterNotifications();
|
||||||
const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false });
|
const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false });
|
||||||
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave: true });
|
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({
|
||||||
|
updateOnSave: true,
|
||||||
|
updateVersion: true,
|
||||||
|
});
|
||||||
|
|
||||||
const addMetricToDashboard = async ({
|
const addMetricToDashboard = async ({
|
||||||
metricIds,
|
metricIds,
|
||||||
|
@ -169,7 +176,10 @@ export const useRemoveMetricsFromDashboard = () => {
|
||||||
const { openConfirmModal, openErrorMessage } = useBusterNotifications();
|
const { openConfirmModal, openErrorMessage } = useBusterNotifications();
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false });
|
const ensureDashboardConfig = useEnsureDashboardConfig({ prefetchData: false });
|
||||||
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave: true });
|
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({
|
||||||
|
updateOnSave: true,
|
||||||
|
updateVersion: true,
|
||||||
|
});
|
||||||
|
|
||||||
const removeMetricFromDashboard = async ({
|
const removeMetricFromDashboard = async ({
|
||||||
metricIds,
|
metricIds,
|
||||||
|
|
|
@ -10,13 +10,19 @@ import { dashboardsUpdateDashboard } from '../requests';
|
||||||
* useSaveDashboard
|
* useSaveDashboard
|
||||||
* Saves the dashboard to the server and updates cache optionally.
|
* 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 updateOnSave = params?.updateOnSave || false;
|
||||||
|
const updateVersion = params?.updateVersion || true;
|
||||||
|
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: dashboardsUpdateDashboard,
|
mutationFn: (variables: Parameters<typeof dashboardsUpdateDashboard>[0]) =>
|
||||||
|
dashboardsUpdateDashboard({
|
||||||
|
...variables,
|
||||||
|
update_version: variables.update_version ?? updateVersion,
|
||||||
|
}),
|
||||||
onMutate: (variables) => {
|
onMutate: (variables) => {
|
||||||
const options = dashboardQueryKeys.dashboardGetDashboard(variables.id, 'LATEST');
|
const options = dashboardQueryKeys.dashboardGetDashboard(variables.id, 'LATEST');
|
||||||
queryClient.setQueryData(options.queryKey, (old) => {
|
queryClient.setQueryData(options.queryKey, (old) => {
|
||||||
|
|
|
@ -15,7 +15,10 @@ export const useUpdateDashboard = (params?: {
|
||||||
}) => {
|
}) => {
|
||||||
const { updateOnSave = false, updateVersion = false, saveToServer = false } = params || {};
|
const { updateOnSave = false, updateVersion = false, saveToServer = false } = params || {};
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({ updateOnSave });
|
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({
|
||||||
|
updateOnSave,
|
||||||
|
updateVersion,
|
||||||
|
});
|
||||||
|
|
||||||
const mutationFn = async (variables: Parameters<typeof dashboardsUpdateDashboard>[0]) => {
|
const mutationFn = async (variables: Parameters<typeof dashboardsUpdateDashboard>[0]) => {
|
||||||
if (saveToServer) {
|
if (saveToServer) {
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { create } from 'mutative';
|
||||||
import type { BusterDashboard } from '@/api/asset_interfaces/dashboard';
|
import type { BusterDashboard } from '@/api/asset_interfaces/dashboard';
|
||||||
import { dashboardQueryKeys } from '@/api/query_keys/dashboard';
|
import { dashboardQueryKeys } from '@/api/query_keys/dashboard';
|
||||||
import { useSaveDashboard } from './useSaveDashboard';
|
import { useSaveDashboard } from './useSaveDashboard';
|
||||||
|
import { useUpdateDashboard } from './useUpdateDashboard';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* useUpdateDashboardConfig
|
* useUpdateDashboardConfig
|
||||||
* Client-optmistic update for the dashboard.config field, then persists.
|
* Client-optmistic update for the dashboard.config field, then persists.
|
||||||
*/
|
*/
|
||||||
export const useUpdateDashboardConfig = () => {
|
export const useUpdateDashboardConfig = () => {
|
||||||
const { mutateAsync: dashboardsUpdateDashboard } = useSaveDashboard({
|
const { mutateAsync: dashboardsUpdateDashboard } = useUpdateDashboard({
|
||||||
updateOnSave: true,
|
updateOnSave: true,
|
||||||
});
|
});
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
|
|
|
@ -154,7 +154,6 @@ export const prefetchGetDashboard = async ({
|
||||||
version_number,
|
version_number,
|
||||||
}: Parameters<typeof getDashboardAndInitializeMetrics>[0]) => {
|
}: Parameters<typeof getDashboardAndInitializeMetrics>[0]) => {
|
||||||
const chosenVersionNumber = version_number || 'LATEST';
|
const chosenVersionNumber = version_number || 'LATEST';
|
||||||
console.log('prefetchGetDashboard', chosenVersionNumber);
|
|
||||||
const queryFn = async () =>
|
const queryFn = async () =>
|
||||||
getDashboardAndInitializeMetrics({
|
getDashboardAndInitializeMetrics({
|
||||||
id,
|
id,
|
||||||
|
|
|
@ -26,6 +26,7 @@ export const DashboardVersionModal = React.memo(
|
||||||
);
|
);
|
||||||
const { mutateAsync: updateDashboard, isPending: isRestoringVersion } = useSaveDashboard({
|
const { mutateAsync: updateDashboard, isPending: isRestoringVersion } = useSaveDashboard({
|
||||||
updateOnSave: true,
|
updateOnSave: true,
|
||||||
|
updateVersion: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -14,8 +14,8 @@ export const DataGridRow: React.FC<DataGridRowProps> = ({ row, virtualRow }) =>
|
||||||
<tr
|
<tr
|
||||||
className={cn(
|
className={cn(
|
||||||
'hover:bg-item-hover absolute inset-x-0 border-b flex',
|
'hover:bg-item-hover absolute inset-x-0 border-b flex',
|
||||||
row.getIsSelected() && 'bg-primary/10',
|
row.getIsSelected() && 'bg-primary/10'
|
||||||
'last:border-b-0'
|
// 'last:border-b-0' //don't do it
|
||||||
)}
|
)}
|
||||||
style={{
|
style={{
|
||||||
transform: `translateY(${virtualRow.start}px)`,
|
transform: `translateY(${virtualRow.start}px)`,
|
||||||
|
|
Loading…
Reference in New Issue