diff --git a/src/components/ControlPanel.jsx b/src/components/ControlPanel.jsx index 2877c27..1d24507 100644 --- a/src/components/ControlPanel.jsx +++ b/src/components/ControlPanel.jsx @@ -80,6 +80,7 @@ export default function ControlPanel(props) { const diagrams = useLiveQuery(() => db.diagrams.toArray()); const [visible, setVisible] = useState(MODAL.NONE); const [title, setTitle] = useState("Untitled Diagram"); + const [selectedDiagramId, setSelectedDiagramId] = useState(0); const [prevTitle, setPrevTitle] = useState(title); const [showEditName, setShowEditName] = useState(false); const [exportData, setExportData] = useState({ @@ -663,13 +664,9 @@ export default function ControlPanel(props) { del(); }; const save = () => { - const lastModified = new Date(); db.diagrams.add({ name: title, - lastModified: - lastModified.toLocaleDateString() + - " " + - lastModified.toLocaleTimeString(), + lastModified: new Date(), tables: tables, references: relationships, types: types, @@ -678,6 +675,24 @@ export default function ControlPanel(props) { }); }; const open = () => setVisible(MODAL.OPEN); + const loadDiagram = (id) => { + db.diagrams + .get(id) + .then((diagram) => { + if (diagram) { + setTitle(diagram.name); + setTables(diagram.tables); + setRelationships(diagram.references); + setAreas(diagram.areas); + setNotes(diagram.notes); + } else { + Toast.error("Oops! Something went wrong."); + } + }) + .catch(() => { + Toast.error("Oops! Couldn't load diagram."); + }); + }; const menu = { File: { @@ -1101,6 +1116,11 @@ export default function ControlPanel(props) { setRedoStack([]); } return; + case MODAL.OPEN: + if (selectedDiagramId === 0) return; + loadDiagram(selectedDiagramId); + setVisible(MODAL.NONE); + return; default: setVisible(MODAL.NONE); return; @@ -1241,7 +1261,7 @@ export default function ControlPanel(props) { /> ) : ( <> -
Name | @@ -1259,12 +1279,30 @@ export default function ControlPanel(props) { sizeStr = (size / (1024 * 1024)).toFixed(1) + "MB"; else sizeStr = size + "B"; return ( -|||
---|---|---|---|
{d.name} | -{d.lastModified} | ++ {d.lastModified.toLocaleDateString() + + " " + + d.lastModified.toLocaleTimeString()} + | {sizeStr} |