Save diagram id in window name to avoid loading latest diagram when not empty

This commit is contained in:
1ilit 2023-11-22 21:32:17 +02:00
parent 1ec9b5fd1f
commit e5b2a2be2f
2 changed files with 48 additions and 7 deletions

View File

@ -63,7 +63,12 @@ import { Editor } from "@monaco-editor/react";
import { db } from "../data/db"; import { db } from "../data/db";
import { useLiveQuery } from "dexie-react-hooks"; import { useLiveQuery } from "dexie-react-hooks";
export default function ControlPanel({ diagramId, setDiagramId }) { export default function ControlPanel({
diagramId,
setDiagramId,
title,
setTitle,
}) {
const MODAL = { const MODAL = {
NONE: 0, NONE: 0,
IMG: 1, IMG: 1,
@ -82,7 +87,6 @@ export default function ControlPanel({ diagramId, setDiagramId }) {
}; };
const diagrams = useLiveQuery(() => db.diagrams.toArray()); const diagrams = useLiveQuery(() => db.diagrams.toArray());
const [visible, setVisible] = useState(MODAL.NONE); const [visible, setVisible] = useState(MODAL.NONE);
const [title, setTitle] = useState("Untitled Diagram");
const [prevTitle, setPrevTitle] = useState(title); const [prevTitle, setPrevTitle] = useState(title);
const [saveAsTitle, setSaveAsTitle] = useState(title); const [saveAsTitle, setSaveAsTitle] = useState(title);
const [selectedDiagramId, setSelectedDiagramId] = useState(0); const [selectedDiagramId, setSelectedDiagramId] = useState(0);
@ -703,12 +707,13 @@ export default function ControlPanel({ diagramId, setDiagramId }) {
setDiagramId(diagram.id); setDiagramId(diagram.id);
setTitle(diagram.name); setTitle(diagram.name);
setTables(diagram.tables); setTables(diagram.tables);
setTypes(diagram.types) setTypes(diagram.types);
setRelationships(diagram.references); setRelationships(diagram.references);
setAreas(diagram.areas); setAreas(diagram.areas);
setNotes(diagram.notes); setNotes(diagram.notes);
setUndoStack([]); setUndoStack([]);
setRedoStack([]); setRedoStack([]);
window.name = `d ${diagram.id}`;
} else { } else {
Toast.error("Oops! Something went wrong."); Toast.error("Oops! Something went wrong.");
} }
@ -1367,7 +1372,7 @@ export default function ControlPanel({ diagramId, setDiagramId }) {
description={<div>You have no saved diagrams.</div>} description={<div>You have no saved diagrams.</div>}
/> />
) : ( ) : (
<> <div className="max-h-[360px]">
<table className="w-full text-left border-separate border-spacing-x-0"> <table className="w-full text-left border-separate border-spacing-x-0">
<thead> <thead>
<tr> <tr>
@ -1416,7 +1421,7 @@ export default function ControlPanel({ diagramId, setDiagramId }) {
})} })}
</tbody> </tbody>
</table> </table>
</> </div>
)} )}
</div> </div>
); );

View File

@ -30,6 +30,7 @@ export const TypeContext = createContext();
export default function Editor(props) { export default function Editor(props) {
const [id, setId] = useState(0); const [id, setId] = useState(0);
const [title, setTitle] = useState("Untitled Diagram");
const [tables, setTables] = useState([]); const [tables, setTables] = useState([]);
const [relationships, setRelationships] = useState([]); const [relationships, setRelationships] = useState([]);
const [areas, setAreas] = useState([]); const [areas, setAreas] = useState([]);
@ -473,6 +474,30 @@ export default function Editor(props) {
setRelationships(d.references); setRelationships(d.references);
setNotes(d.notes); setNotes(d.notes);
setAreas(d.areas); 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) => { .catch((error) => {
@ -482,7 +507,13 @@ export default function Editor(props) {
const args = localStorage.getItem("args"); const args = localStorage.getItem("args");
if (!args || args === "-1") { 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 { } else {
console.log("Loading template with id", args); console.log("Loading template with id", args);
localStorage.setItem("args", "-1"); localStorage.setItem("args", "-1");
@ -589,7 +620,12 @@ export default function Editor(props) {
}} }}
> >
<div className="h-[100vh] overflow-hidden theme"> <div className="h-[100vh] overflow-hidden theme">
<ControlPanel diagramId={id} setDiagramId={setId} /> <ControlPanel
diagramId={id}
setDiagramId={setId}
title={title}
setTitle={setTitle}
/>
<div <div
className={ className={
layout.header layout.header