Save pan and zoom

This commit is contained in:
1ilit 2024-02-26 02:42:46 +02:00
parent a7f4fca580
commit 6a5f18f1de

View File

@ -1,4 +1,4 @@
import { useState, createContext, useEffect } from "react"; import { useState, createContext, useEffect, useCallback } from "react";
import ControlPanel from "../components/ControlPanel"; import ControlPanel from "../components/ControlPanel";
import Canvas from "../components/Canvas"; import Canvas from "../components/Canvas";
import SidePanel from "../components/SidePanel"; import SidePanel from "../components/SidePanel";
@ -471,10 +471,12 @@ export default function Editor() {
types.length, types.length,
relationships.length, relationships.length,
tasks?.length, tasks?.length,
settings.pan,
settings.zoom,
]); ]);
useEffect(() => { const save = useCallback(
const save = async (diagram = true) => { async (diagram = true) => {
if (state !== State.SAVING) { if (state !== State.SAVING) {
return; return;
} }
@ -493,6 +495,8 @@ export default function Editor() {
notes: notes, notes: notes,
areas: areas, areas: areas,
todos: tasks, todos: tasks,
pan: settings.pan,
zoom: settings.zoom,
}) })
.then((id) => { .then((id) => {
setId(id); setId(id);
@ -511,6 +515,8 @@ export default function Editor() {
notes: notes, notes: notes,
areas: areas, areas: areas,
todos: tasks, todos: tasks,
pan: settings.pan,
zoom: settings.zoom,
}) })
.then(() => { .then(() => {
setState(State.SAVED); setState(State.SAVED);
@ -527,6 +533,8 @@ export default function Editor() {
notes: notes, notes: notes,
subjectAreas: areas, subjectAreas: areas,
todos: tasks, todos: tasks,
pan: settings.pan,
zoom: settings.zoom,
}) })
.then(() => { .then(() => {
setState(State.SAVED); setState(State.SAVED);
@ -536,13 +544,39 @@ export default function Editor() {
setState(State.ERROR); setState(State.ERROR);
}); });
} }
}; },
[
tables,
relationships,
notes,
areas,
types,
title,
id,
state,
tasks,
settings.zoom,
settings.pan,
]
);
useEffect(() => {
const name = window.name.split(" "); const name = window.name.split(" ");
const op = name[0]; const op = name[0];
const diagram = window.name === "" || op === "d" || op === "lt"; const diagram = window.name === "" || op === "d" || op === "lt";
save(diagram); save(diagram);
}, [tables, relationships, notes, areas, types, title, id, state, tasks]); }, [
tables,
relationships,
notes,
areas,
types,
title,
id,
state,
tasks,
save,
]);
useEffect(() => { useEffect(() => {
document.title = "Editor | drawDB"; document.title = "Editor | drawDB";
@ -560,6 +594,7 @@ export default function Editor() {
setAreas(d.areas); setAreas(d.areas);
setTypes(d.types); setTypes(d.types);
setTasks(d.todos); setTasks(d.todos);
setSettings((prev) => ({ ...prev, pan: d.pan, zoom: d.zoom }));
window.name = `d ${d.id}`; window.name = `d ${d.id}`;
} else { } else {
window.name = ""; window.name = "";
@ -583,6 +618,11 @@ export default function Editor() {
setAreas(diagram.areas); setAreas(diagram.areas);
setNotes(diagram.notes); setNotes(diagram.notes);
setTasks(diagram.todos); setTasks(diagram.todos);
setSettings((prev) => ({
...prev,
pan: diagram.pan,
zoom: diagram.zoom,
}));
setUndoStack([]); setUndoStack([]);
setRedoStack([]); setRedoStack([]);
window.name = `d ${diagram.id}`; window.name = `d ${diagram.id}`;
@ -608,6 +648,11 @@ export default function Editor() {
setAreas(diagram.subjectAreas); setAreas(diagram.subjectAreas);
setTasks(diagram.tasks); setTasks(diagram.tasks);
setNotes(diagram.notes); setNotes(diagram.notes);
setSettings((prev) => ({
...prev,
pan: diagram.pan,
zoom: diagram.zoom,
}));
setUndoStack([]); setUndoStack([]);
setRedoStack([]); setRedoStack([]);
} }