From e5b2a2be2f747254bd390b72eac1924785bb92d0 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Wed, 22 Nov 2023 21:32:17 +0200 Subject: [PATCH] Save diagram id in window name to avoid loading latest diagram when not empty --- src/components/ControlPanel.jsx | 15 ++++++++----- src/pages/editor.jsx | 40 +++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/components/ControlPanel.jsx b/src/components/ControlPanel.jsx index 04d0ed8..2b6a3b3 100644 --- a/src/components/ControlPanel.jsx +++ b/src/components/ControlPanel.jsx @@ -63,7 +63,12 @@ import { Editor } from "@monaco-editor/react"; import { db } from "../data/db"; import { useLiveQuery } from "dexie-react-hooks"; -export default function ControlPanel({ diagramId, setDiagramId }) { +export default function ControlPanel({ + diagramId, + setDiagramId, + title, + setTitle, +}) { const MODAL = { NONE: 0, IMG: 1, @@ -82,7 +87,6 @@ export default function ControlPanel({ diagramId, setDiagramId }) { }; const diagrams = useLiveQuery(() => db.diagrams.toArray()); const [visible, setVisible] = useState(MODAL.NONE); - const [title, setTitle] = useState("Untitled Diagram"); const [prevTitle, setPrevTitle] = useState(title); const [saveAsTitle, setSaveAsTitle] = useState(title); const [selectedDiagramId, setSelectedDiagramId] = useState(0); @@ -703,12 +707,13 @@ export default function ControlPanel({ diagramId, setDiagramId }) { setDiagramId(diagram.id); setTitle(diagram.name); setTables(diagram.tables); - setTypes(diagram.types) + setTypes(diagram.types); setRelationships(diagram.references); setAreas(diagram.areas); setNotes(diagram.notes); setUndoStack([]); setRedoStack([]); + window.name = `d ${diagram.id}`; } else { Toast.error("Oops! Something went wrong."); } @@ -1367,7 +1372,7 @@ export default function ControlPanel({ diagramId, setDiagramId }) { description={
You have no saved diagrams.
} /> ) : ( - <> +
@@ -1416,7 +1421,7 @@ export default function ControlPanel({ diagramId, setDiagramId }) { })}
- +
)} ); diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index d393d31..c44d7b7 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -30,6 +30,7 @@ export const TypeContext = createContext(); export default function Editor(props) { const [id, setId] = useState(0); + const [title, setTitle] = useState("Untitled Diagram"); const [tables, setTables] = useState([]); const [relationships, setRelationships] = useState([]); const [areas, setAreas] = useState([]); @@ -473,6 +474,30 @@ export default function Editor(props) { setRelationships(d.references); setNotes(d.notes); setAreas(d.areas); + setTypes(d.types); + } + window.name = `d ${d.id}`; + }) + .catch((error) => { + console.log(error); + }); + }; + + const loadDiagram = async (id) => { + await db.diagrams + .get(id) + .then((diagram) => { + if (diagram) { + setId(diagram.id); + setTitle(diagram.name); + setTables(diagram.tables); + setTypes(diagram.types); + setRelationships(diagram.references); + setAreas(diagram.areas); + setNotes(diagram.notes); + setUndoStack([]); + setRedoStack([]); + window.name = `d ${diagram.id}`; } }) .catch((error) => { @@ -482,7 +507,13 @@ export default function Editor(props) { const args = localStorage.getItem("args"); if (!args || args === "-1") { - loadLatestDiagram(); + if (window.name === "") { + console.log("Loading the latest diagram"); + loadLatestDiagram(); + } else { + const did = parseInt(window.name.split(" ")[1]); + loadDiagram(did); + } } else { console.log("Loading template with id", args); localStorage.setItem("args", "-1"); @@ -589,7 +620,12 @@ export default function Editor(props) { }} >
- +