From 3a580149be258c8b32d268e4647a80faca9b3c88 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Sun, 21 Apr 2024 09:40:56 +0300 Subject: [PATCH] Update relationships when fields get reordered --- .../EditorSidePanel/TablesTab/TableInfo.jsx | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/components/EditorSidePanel/TablesTab/TableInfo.jsx b/src/components/EditorSidePanel/TablesTab/TableInfo.jsx index e70ce7a..ca10bb5 100644 --- a/src/components/EditorSidePanel/TablesTab/TableInfo.jsx +++ b/src/components/EditorSidePanel/TablesTab/TableInfo.jsx @@ -19,7 +19,8 @@ import IndexDetails from "./IndexDetails"; export default function TableInfo({ data }) { const [indexActiveKey, setIndexActiveKey] = useState(""); - const { deleteTable, updateTable, updateField } = useTables(); + const { deleteTable, updateTable, updateField, setRelationships } = + useTables(); const { setUndoStack, setRedoStack } = useUndoRedo(); const [editField, setEditField] = useState({}); const draggingElementIndex = useRef(); @@ -79,6 +80,28 @@ export default function TableInfo({ data }) { updateField(data.id, index, { ...b, id: index }); updateField(data.id, j, { ...a, id: j }); + + setRelationships((prev) => + prev.map((e) => { + if (e.startTableId === data.id) { + if (e.startFieldId === index) { + return { ...e, startFieldId: j }; + } + if (e.startFieldId === j) { + return { ...e, startFieldId: index }; + } + } + if (e.endTableId === data.id) { + if (e.endFieldId === index) { + return { ...e, endFieldId: j }; + } + if (e.endFieldId === j) { + return { ...e, endFieldId: index }; + } + } + return e; + }), + ); }} onDragEnd={(e) => { e.preventDefault();