Load diagram from db
This commit is contained in:
parent
63be981131
commit
7f5534dfea
@ -80,6 +80,7 @@ export default function ControlPanel(props) {
|
|||||||
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 [title, setTitle] = useState("Untitled Diagram");
|
||||||
|
const [selectedDiagramId, setSelectedDiagramId] = useState(0);
|
||||||
const [prevTitle, setPrevTitle] = useState(title);
|
const [prevTitle, setPrevTitle] = useState(title);
|
||||||
const [showEditName, setShowEditName] = useState(false);
|
const [showEditName, setShowEditName] = useState(false);
|
||||||
const [exportData, setExportData] = useState({
|
const [exportData, setExportData] = useState({
|
||||||
@ -663,13 +664,9 @@ export default function ControlPanel(props) {
|
|||||||
del();
|
del();
|
||||||
};
|
};
|
||||||
const save = () => {
|
const save = () => {
|
||||||
const lastModified = new Date();
|
|
||||||
db.diagrams.add({
|
db.diagrams.add({
|
||||||
name: title,
|
name: title,
|
||||||
lastModified:
|
lastModified: new Date(),
|
||||||
lastModified.toLocaleDateString() +
|
|
||||||
" " +
|
|
||||||
lastModified.toLocaleTimeString(),
|
|
||||||
tables: tables,
|
tables: tables,
|
||||||
references: relationships,
|
references: relationships,
|
||||||
types: types,
|
types: types,
|
||||||
@ -678,6 +675,24 @@ export default function ControlPanel(props) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
const open = () => setVisible(MODAL.OPEN);
|
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 = {
|
const menu = {
|
||||||
File: {
|
File: {
|
||||||
@ -1101,6 +1116,11 @@ export default function ControlPanel(props) {
|
|||||||
setRedoStack([]);
|
setRedoStack([]);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
case MODAL.OPEN:
|
||||||
|
if (selectedDiagramId === 0) return;
|
||||||
|
loadDiagram(selectedDiagramId);
|
||||||
|
setVisible(MODAL.NONE);
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
setVisible(MODAL.NONE);
|
setVisible(MODAL.NONE);
|
||||||
return;
|
return;
|
||||||
@ -1241,7 +1261,7 @@ export default function ControlPanel(props) {
|
|||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<table className="w-full text-left">
|
<table className="w-full text-left border-separate border-spacing-x-0">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
@ -1259,12 +1279,30 @@ export default function ControlPanel(props) {
|
|||||||
sizeStr = (size / (1024 * 1024)).toFixed(1) + "MB";
|
sizeStr = (size / (1024 * 1024)).toFixed(1) + "MB";
|
||||||
else sizeStr = size + "B";
|
else sizeStr = size + "B";
|
||||||
return (
|
return (
|
||||||
<tr key={d.id} className="hover-1">
|
<tr
|
||||||
|
key={d.id}
|
||||||
|
className={`${
|
||||||
|
selectedDiagramId === d.id
|
||||||
|
? "bg-sky-400 bg-opacity-20"
|
||||||
|
: "hover-1"
|
||||||
|
}`}
|
||||||
|
onClick={() => {
|
||||||
|
setSelectedDiagramId(d.id);
|
||||||
|
}}
|
||||||
|
onDoubleClick={() => {
|
||||||
|
loadDiagram(d.id);
|
||||||
|
setVisible(MODAL.NONE);
|
||||||
|
}}
|
||||||
|
>
|
||||||
<td className="py-1">
|
<td className="py-1">
|
||||||
<i className="bi bi-file-earmark-text text-[16px] me-1 opacity-60"></i>
|
<i className="bi bi-file-earmark-text text-[16px] me-1 opacity-60"></i>
|
||||||
{d.name}
|
{d.name}
|
||||||
</td>
|
</td>
|
||||||
<td className="py-1">{d.lastModified}</td>
|
<td className="py-1">
|
||||||
|
{d.lastModified.toLocaleDateString() +
|
||||||
|
" " +
|
||||||
|
d.lastModified.toLocaleTimeString()}
|
||||||
|
</td>
|
||||||
<td className="py-1">{sizeStr}</td>
|
<td className="py-1">{sizeStr}</td>
|
||||||
</tr>
|
</tr>
|
||||||
);
|
);
|
||||||
@ -1343,7 +1381,8 @@ export default function ControlPanel(props) {
|
|||||||
(visible === MODAL.IMPORT &&
|
(visible === MODAL.IMPORT &&
|
||||||
(error.type === STATUS.ERROR || !data)) ||
|
(error.type === STATUS.ERROR || !data)) ||
|
||||||
((visible === MODAL.IMG || visible === MODAL.CODE) &&
|
((visible === MODAL.IMG || visible === MODAL.CODE) &&
|
||||||
!exportData.data),
|
!exportData.data) ||
|
||||||
|
(visible === MODAL.OPEN && selectedDiagramId === 0),
|
||||||
}}
|
}}
|
||||||
cancelText="Cancel"
|
cancelText="Cancel"
|
||||||
width={600}
|
width={600}
|
||||||
|
Loading…
Reference in New Issue
Block a user