diff --git a/src/pages/console/connected-space/subject-view/context.tsx b/src/pages/console/connected-space/subject-view/context.tsx index 6066627..3ba534f 100644 --- a/src/pages/console/connected-space/subject-view/context.tsx +++ b/src/pages/console/connected-space/subject-view/context.tsx @@ -25,7 +25,7 @@ interface SpaceDefs { export interface SubjectContext { defs: SpaceDefs; - save: () => void; + save: (immediately?: boolean) => Promise; } const Context = React.createContext({} as SubjectContext); @@ -89,18 +89,27 @@ export const SubjectContextProvider = (props: { setDefs(computeSpaceDefs(available, space)); }, [ space, available ]); - const save = () => { + const save = async (immediately: boolean = false) => { if (saveTimeoutHandle) { clearTimeout(saveTimeoutHandle); } - setSaveTimeoutHandle(setTimeout(async () => { + if (immediately) { setSaveTimeoutHandle(null); if (doSave) { await doSave(subject); } else { await saveSubject(subject); } - }, 3000)); + } else { + setSaveTimeoutHandle(setTimeout(async () => { + setSaveTimeoutHandle(null); + if (doSave) { + await doSave(subject); + } else { + await saveSubject(subject); + } + }, 3000)); + } }; return {children}; diff --git a/src/pages/console/connected-space/subject-view/graphics/chart.tsx b/src/pages/console/connected-space/subject-view/graphics/chart.tsx index 2d2be54..71f4f40 100644 --- a/src/pages/console/connected-space/subject-view/graphics/chart.tsx +++ b/src/pages/console/connected-space/subject-view/graphics/chart.tsx @@ -494,9 +494,9 @@ export const Chart = (props: { event.stopPropagation(); setSettingsVisible(true); }; - const onCloseSettings = () => { + const onCloseSettings = async () => { + await saveSubject(true); setSettingsVisible(false); - saveSubject(); }; const onDeleteConfirmClicked = () => { onDeleteChart(chart);