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({ + + +