diff --git a/package-lock.json b/package-lock.json
index 30bd13ea..f3a4d42c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,7 @@
"@vercel/speed-insights": "^1.2.0",
"axios": "^1.12.0",
"classnames": "^2.5.1",
+ "dagre": "^0.8.5",
"dexie": "^3.2.4",
"dexie-react-hooks": "^1.1.7",
"file-saver": "^2.0.5",
@@ -3152,6 +3153,16 @@
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
+ "node_modules/dagre": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz",
+ "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==",
+ "license": "MIT",
+ "dependencies": {
+ "graphlib": "^2.1.8",
+ "lodash": "^4.17.15"
+ }
+ },
"node_modules/data-view-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
@@ -4456,6 +4467,15 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/graphlib": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
+ "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash": "^4.17.15"
+ }
+ },
"node_modules/has-bigints": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
diff --git a/package.json b/package.json
index bddd6175..c2b8aee6 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"@vercel/speed-insights": "^1.2.0",
"axios": "^1.12.0",
"classnames": "^2.5.1",
+ "dagre": "^0.8.5",
"dexie": "^3.2.4",
"dexie-react-hooks": "^1.1.7",
"file-saver": "^2.0.5",
diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx
index cc1968d7..cfc0550f 100644
--- a/src/components/EditorHeader/ControlPanel.jsx
+++ b/src/components/EditorHeader/ControlPanel.jsx
@@ -119,6 +119,7 @@ export default function ControlPanel({
addRelationship,
deleteRelationship,
updateRelationship,
+ autoArrangeTables,
database,
setDatabase,
} = useDiagram();
@@ -253,6 +254,10 @@ export default function ControlPanel({
});
} else if (a.component === "self") {
updateTable(a.tid, a.undo);
+ } else if (a.component === "auto_arrange") {
+ a.data.oldTables.forEach((oldTable) => {
+ updateTable(oldTable.id, { x: oldTable.x, y: oldTable.y });
+ });
}
} else if (a.element === ObjectType.RELATIONSHIP) {
updateRelationship(a.rid, a.undo);
@@ -431,6 +436,10 @@ export default function ControlPanel({
});
} else if (a.component === "self") {
updateTable(a.tid, a.redo, false);
+ } else if (a.component === "auto_arrange") {
+ a.data.newTables.forEach((newTable) => {
+ updateTable(newTable.id, { x: newTable.x, y: newTable.y });
+ });
}
} else if (a.element === ObjectType.RELATIONSHIP) {
updateRelationship(a.rid, a.redo);
@@ -1820,6 +1829,14 @@ export default function ControlPanel({
+
+
+