mirror of
https://github.com/drawdb-io/drawdb.git
synced 2025-09-01 18:35:24 +00:00
Edit templates
This commit is contained in:
@@ -1432,6 +1432,7 @@ export default function ControlPanel({
|
|||||||
}}
|
}}
|
||||||
onDoubleClick={() => {
|
onDoubleClick={() => {
|
||||||
loadDiagram(d.id);
|
loadDiagram(d.id);
|
||||||
|
window.name = "d " + d.id;
|
||||||
setVisible(MODAL.NONE);
|
setVisible(MODAL.NONE);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -1704,6 +1705,8 @@ export default function ControlPanel({
|
|||||||
return `Last saved ${lastSaved}`;
|
return `Last saved ${lastSaved}`;
|
||||||
case State.SAVING:
|
case State.SAVING:
|
||||||
return "Saving . . .";
|
return "Saving . . .";
|
||||||
|
case State.ERROR:
|
||||||
|
return "Failed to save";
|
||||||
default:
|
default:
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@@ -1729,6 +1732,7 @@ export default function ControlPanel({
|
|||||||
onMouseLeave={() => setShowEditName(false)}
|
onMouseLeave={() => setShowEditName(false)}
|
||||||
onClick={() => setVisible(MODAL.RENAME)}
|
onClick={() => setVisible(MODAL.RENAME)}
|
||||||
>
|
>
|
||||||
|
{window.name.split(" ")[0] === "t" ? "Templates/" : "Diagrams/"}
|
||||||
{title}
|
{title}
|
||||||
</div>
|
</div>
|
||||||
{(showEditName || visible === MODAL.RENAME) && <IconEdit />}
|
{(showEditName || visible === MODAL.RENAME) && <IconEdit />}
|
||||||
|
@@ -108,6 +108,7 @@ const State = {
|
|||||||
SAVING: 1,
|
SAVING: 1,
|
||||||
SAVED: 2,
|
SAVED: 2,
|
||||||
LOADING: 3,
|
LOADING: 3,
|
||||||
|
ERROR: 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
@@ -172,7 +172,8 @@ export default function Templates() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const editTemplate = (id) => {
|
const editTemplate = (id) => {
|
||||||
console.log(id);
|
const newWindow = window.open("/editor", "_blank");
|
||||||
|
newWindow.name = "t " + id;
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@@ -408,7 +408,7 @@ export default function Editor() {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateNote = (id, values, addToHistory = true) => {
|
const updateNote = (id, values) => {
|
||||||
setNotes((prev) =>
|
setNotes((prev) =>
|
||||||
prev.map((t) => {
|
prev.map((t) => {
|
||||||
if (t.id === id) {
|
if (t.id === id) {
|
||||||
@@ -488,10 +488,11 @@ export default function Editor() {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const save = async () => {
|
const save = async (diagram = true) => {
|
||||||
if (state !== State.SAVING) {
|
if (state !== State.SAVING) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (diagram) {
|
||||||
if (id === 0 && window.name === "") {
|
if (id === 0 && window.name === "") {
|
||||||
db.diagrams
|
db.diagrams
|
||||||
.add({
|
.add({
|
||||||
@@ -525,8 +526,30 @@ export default function Editor() {
|
|||||||
setLastSaved(new Date().toLocaleString());
|
setLastSaved(new Date().toLocaleString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
db.templates
|
||||||
|
.update(id, {
|
||||||
|
title: title,
|
||||||
|
tables: tables,
|
||||||
|
relationships: relationships,
|
||||||
|
types: types,
|
||||||
|
notes: notes,
|
||||||
|
subjectAreas: areas,
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
setState(State.SAVED);
|
||||||
|
setLastSaved(new Date().toLocaleString());
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
setState(State.ERROR);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
save();
|
const name = window.name.split(" ");
|
||||||
|
const op = name[0];
|
||||||
|
const diagram = window.name === "" || op === "d";
|
||||||
|
|
||||||
|
save(diagram);
|
||||||
}, [tables, relationships, notes, areas, types, title, id, state]);
|
}, [tables, relationships, notes, areas, types, title, id, state]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -578,6 +601,27 @@ export default function Editor() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const loadTemplate = async (id) => {
|
||||||
|
await db.templates
|
||||||
|
.get(id)
|
||||||
|
.then((diagram) => {
|
||||||
|
if (diagram) {
|
||||||
|
setId(diagram.id);
|
||||||
|
setTitle(diagram.title);
|
||||||
|
setTables(diagram.tables);
|
||||||
|
setTypes(diagram.types);
|
||||||
|
setRelationships(diagram.relationships);
|
||||||
|
setAreas(diagram.subjectAreas);
|
||||||
|
setNotes(diagram.notes);
|
||||||
|
setUndoStack([]);
|
||||||
|
setRedoStack([]);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
if (window.name == "") {
|
if (window.name == "") {
|
||||||
console.log("Loading the latest diagram");
|
console.log("Loading the latest diagram");
|
||||||
loadLatestDiagram();
|
loadLatestDiagram();
|
||||||
@@ -594,6 +638,10 @@ export default function Editor() {
|
|||||||
console.log("Loading template with id", did);
|
console.log("Loading template with id", did);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "t": {
|
||||||
|
loadTemplate(did);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user