Save diagram id in window name to avoid loading latest diagram when not empty
This commit is contained in:
parent
1ec9b5fd1f
commit
e5b2a2be2f
@ -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>
|
||||||
);
|
);
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user