Skip to content

Commit 666ece2

Browse files
committed
Merge upstream drawdb-io/drawdb main branch
- Fix retaining full table data after undo/redo (drawdb-io#661) - Retain table id after redo (drawdb-io#659) - Bump vite from 6.3.6 to 6.4.1 (drawdb-io#656) - Implement height adjustment for textarea on mount (drawdb-io#649) - Update node-sql-parser version (drawdb-io#654) Conflicts resolved: - Kept monorepo package.json structure (removed upstream's monolithic version) - Removed package-lock.json (using pnpm-lock.yaml instead)
2 parents 32e7811 + 3743a73 commit 666ece2

File tree

3 files changed

+41
-35
lines changed

3 files changed

+41
-35
lines changed

apps/gui/src/components/EditorCanvas/Note.jsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useMemo, useState, useRef } from "react";
1+
import { useMemo, useState, useRef, useEffect } from "react";
22
import { Action, ObjectType, Tab, State } from "../../data/constants";
33
import { Input, Button, Popover } from "@douyinfe/semi-ui";
44
import ColorPicker from "../EditorSidePanel/ColorPicker";
@@ -179,6 +179,14 @@ export default function Note({ data, onPointerDown }) {
179179
const width = data.width ?? noteWidth;
180180
const MIN_NOTE_WIDTH = 120;
181181

182+
useEffect(() => {
183+
const textarea = document.getElementById(`note_${data.id}`);
184+
textarea.style.height = "0";
185+
textarea.style.height = textarea.scrollHeight + "px";
186+
const newHeight = textarea.scrollHeight + 42;
187+
updateNote(data.id, { height: newHeight });
188+
}, [data.id, updateNote]);
189+
182190
return (
183191
<g
184192
onPointerEnter={(e) => e.isPrimary && setHovered(true)}
@@ -506,4 +514,4 @@ export default function Note({ data, onPointerDown }) {
506514
</foreignObject>
507515
</g>
508516
);
509-
}
517+
}

apps/gui/src/components/EditorHeader/ControlPanel.jsx

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

159159
if (a.action === Action.ADD) {
160160
if (a.element === ObjectType.TABLE) {
161-
deleteTable(a.id, false);
161+
deleteTable(a.data.table.id, false);
162162
} else if (a.element === ObjectType.AREA) {
163163
deleteArea(areas[areas.length - 1].id, false);
164164
} else if (a.element === ObjectType.NOTE) {
@@ -192,7 +192,7 @@ export default function ControlPanel({
192192
} else if (a.action === Action.DELETE) {
193193
if (a.element === ObjectType.TABLE) {
194194
a.data.relationship.forEach((x) => addRelationship(x, false));
195-
addTable(a.data.table, false);
195+
addTable(a.data, false);
196196
} else if (a.element === ObjectType.RELATIONSHIP) {
197197
addRelationship(a.data, false);
198198
} else if (a.element === ObjectType.NOTE) {
@@ -327,7 +327,7 @@ export default function ControlPanel({
327327

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

apps/gui/src/context/DiagramContext.jsx

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,46 +18,44 @@ export default function DiagramContextProvider({ children }) {
1818

1919
const addTable = (data, addToHistory = true) => {
2020
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)