update link positions on table move
This commit is contained in:
parent
09f7142d75
commit
58642f3e8e
@ -6,6 +6,10 @@ export default function Canvas(props) {
|
|||||||
const [dragging, setDragging] = useState(-1);
|
const [dragging, setDragging] = useState(-1);
|
||||||
const [linking, setLinking] = useState(false);
|
const [linking, setLinking] = useState(false);
|
||||||
const [line, setLine] = useState({
|
const [line, setLine] = useState({
|
||||||
|
startTableId: -1,
|
||||||
|
startFieldId: -1,
|
||||||
|
endTableId: -1,
|
||||||
|
endFieldId: -1,
|
||||||
startX: 0,
|
startX: 0,
|
||||||
startY: 0,
|
startY: 0,
|
||||||
endX: 0,
|
endX: 0,
|
||||||
@ -61,6 +65,7 @@ export default function Canvas(props) {
|
|||||||
|
|
||||||
setRelationships(
|
setRelationships(
|
||||||
relationships.map((r) => ({
|
relationships.map((r) => ({
|
||||||
|
...r,
|
||||||
startX: r.startX + dx,
|
startX: r.startX + dx,
|
||||||
startY: r.startY + dy,
|
startY: r.startY + dy,
|
||||||
endX: r.endX + dx,
|
endX: r.endX + dx,
|
||||||
@ -80,6 +85,24 @@ export default function Canvas(props) {
|
|||||||
return t;
|
return t;
|
||||||
});
|
});
|
||||||
props.setTables(updatedTables);
|
props.setTables(updatedTables);
|
||||||
|
const updatedRelationShips = relationships.map((r) => {
|
||||||
|
if (r.startTableId === dragging - 1) {
|
||||||
|
return {
|
||||||
|
...r,
|
||||||
|
startX: props.tables[r.startTableId].x + 15,
|
||||||
|
startY:
|
||||||
|
props.tables[r.startTableId].y + r.startFieldId * 36 + 40 + 19,
|
||||||
|
};
|
||||||
|
} else if (r.endTableId === dragging - 1) {
|
||||||
|
return {
|
||||||
|
...r,
|
||||||
|
endX: props.tables[r.endTableId].x + 15,
|
||||||
|
endY: props.tables[r.endTableId].y + r.endFieldId * 36 + 40 + 19,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
});
|
||||||
|
setRelationships(updatedRelationShips);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -119,10 +142,11 @@ export default function Canvas(props) {
|
|||||||
setRelationships((prev) => [
|
setRelationships((prev) => [
|
||||||
...prev,
|
...prev,
|
||||||
{
|
{
|
||||||
startX: line.startX,
|
...line,
|
||||||
startY: line.startY,
|
|
||||||
endX: props.tables[onRect.tableId].x + 15,
|
endX: props.tables[onRect.tableId].x + 15,
|
||||||
endY: props.tables[onRect.tableId].y + onRect.field * 36 + 40 + 19,
|
endY: props.tables[onRect.tableId].y + onRect.field * 36 + 40 + 19,
|
||||||
|
endTableId: onRect.tableId,
|
||||||
|
endFieldId: onRect.field,
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
@ -229,8 +253,9 @@ export default function Canvas(props) {
|
|||||||
strokeDasharray="5,5"
|
strokeDasharray="5,5"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{relationships.map((e) => (
|
{relationships.map((e, i) => (
|
||||||
<line
|
<line
|
||||||
|
key={i}
|
||||||
x1={e.startX}
|
x1={e.startX}
|
||||||
y1={e.startY}
|
y1={e.startY}
|
||||||
x2={e.endX}
|
x2={e.endX}
|
||||||
|
@ -67,7 +67,6 @@ export default function EditorPanel(props) {
|
|||||||
};
|
};
|
||||||
props.setTables(prev => {
|
props.setTables(prev => {
|
||||||
const updatedTables = [...prev, newTable];
|
const updatedTables = [...prev, newTable];
|
||||||
console.log(updatedTables);
|
|
||||||
return updatedTables;
|
return updatedTables;
|
||||||
});
|
});
|
||||||
props.setCode((prev) =>
|
props.setCode((prev) =>
|
||||||
|
@ -226,12 +226,15 @@ export default function Table(props) {
|
|||||||
className={`w-[10px] h-[10px] bg-green-600 rounded-full me-2`}
|
className={`w-[10px] h-[10px] bg-green-600 rounded-full me-2`}
|
||||||
onMouseDown={(ev) => {
|
onMouseDown={(ev) => {
|
||||||
props.handleGripField(i);
|
props.handleGripField(i);
|
||||||
props.setLine({
|
props.setLine((prev)=>({
|
||||||
|
...prev,
|
||||||
|
startFieldId: i,
|
||||||
|
startTableId: props.id,
|
||||||
startX: props.tableData.x + 15,
|
startX: props.tableData.x + 15,
|
||||||
startY: props.tableData.y + i * 36 + 40 + 19,
|
startY: props.tableData.y + i * 36 + 40 + 19,
|
||||||
endX: props.tableData.x + 15,
|
endX: props.tableData.x + 15,
|
||||||
endY: props.tableData.y + i * 36 + 40 + 19,
|
endY: props.tableData.y + i * 36 + 40 + 19,
|
||||||
});
|
}));
|
||||||
}}
|
}}
|
||||||
></button>
|
></button>
|
||||||
{e.name}
|
{e.name}
|
||||||
|
Loading…
Reference in New Issue
Block a user