Skip to content

Commit 771baed

Browse files
committed
Fix retaining full table data after undo/redo
1 parent d37f15a commit 771baed

File tree

2 files changed

+33
-35
lines changed

2 files changed

+33
-35
lines changed

src/components/EditorHeader/ControlPanel.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export default function ControlPanel({
157157

158158
if (a.action === Action.ADD) {
159159
if (a.element === ObjectType.TABLE) {
160-
deleteTable(a.id, false);
160+
deleteTable(a.data.table.id, false);
161161
} else if (a.element === ObjectType.AREA) {
162162
deleteArea(areas[areas.length - 1].id, false);
163163
} else if (a.element === ObjectType.NOTE) {
@@ -191,7 +191,7 @@ export default function ControlPanel({
191191
} else if (a.action === Action.DELETE) {
192192
if (a.element === ObjectType.TABLE) {
193193
a.data.relationship.forEach((x) => addRelationship(x, false));
194-
addTable(a.data.table, false);
194+
addTable(a.data, false);
195195
} else if (a.element === ObjectType.RELATIONSHIP) {
196196
addRelationship(a.data, false);
197197
} else if (a.element === ObjectType.NOTE) {
@@ -326,7 +326,7 @@ export default function ControlPanel({
326326

327327
if (a.action === Action.ADD) {
328328
if (a.element === ObjectType.TABLE) {
329-
addTable(null, false, a.id);
329+
addTable(a.data, false);
330330
} else if (a.element === ObjectType.AREA) {
331331
addArea(null, false);
332332
} else if (a.element === ObjectType.NOTE) {

src/context/DiagramContext.jsx

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,48 +16,46 @@ export default function DiagramContextProvider({ children }) {
1616
const { setUndoStack, setRedoStack } = useUndoRedo();
1717
const { selectedElement, setSelectedElement } = useSelect();
1818

19-
const addTable = (data, addToHistory = true, idToUse = null) => {
20-
const id = idToUse || nanoid();
19+
const addTable = (data, addToHistory = true) => {
20+
const id = nanoid();
21+
const newTable = {
22+
id,
23+
name: `table_${id}`,
24+
x: transform.pan.x,
25+
y: transform.pan.y,
26+
locked: false,
27+
fields: [
28+
{
29+
name: "id",
30+
type: database === DB.GENERIC ? "INT" : "INTEGER",
31+
default: "",
32+
check: "",
33+
primary: true,
34+
unique: true,
35+
notNull: true,
36+
increment: true,
37+
comment: "",
38+
id: nanoid(),
39+
},
40+
],
41+
comment: "",
42+
indices: [],
43+
color: defaultBlue,
44+
};
2145
if (data) {
2246
setTables((prev) => {
2347
const temp = prev.slice();
24-
temp.splice(data.index, 0, data);
48+
temp.splice(data.index, 0, data.table);
2549
return temp;
2650
});
2751
} else {
28-
setTables((prev) => [
29-
...prev,
30-
{
31-
id,
32-
name: `table_${id}`,
33-
x: transform.pan.x,
34-
y: transform.pan.y,
35-
locked: false,
36-
fields: [
37-
{
38-
name: "id",
39-
type: database === DB.GENERIC ? "INT" : "INTEGER",
40-
default: "",
41-
check: "",
42-
primary: true,
43-
unique: true,
44-
notNull: true,
45-
increment: true,
46-
comment: "",
47-
id: nanoid(),
48-
},
49-
],
50-
comment: "",
51-
indices: [],
52-
color: defaultBlue,
53-
},
54-
]);
52+
setTables((prev) => [...prev, newTable]);
5553
}
5654
if (addToHistory) {
5755
setUndoStack((prev) => [
5856
...prev,
5957
{
60-
id: data ? data.id : id,
58+
data: data || { table: newTable, index: tables.length - 1 },
6159
action: Action.ADD,
6260
element: ObjectType.TABLE,
6361
message: t("add_table"),
@@ -185,7 +183,7 @@ export default function DiagramContextProvider({ children }) {
185183
element: ObjectType.RELATIONSHIP,
186184
data: {
187185
relationship: data,
188-
index: prevUndo.length
186+
index: prevUndo.length,
189187
},
190188
message: t("add_relationship"),
191189
},

0 commit comments

Comments
 (0)