This commit is contained in:
1ilit
2023-09-19 15:50:49 +03:00
parent 155690e0f7
commit d61a90530f
5 changed files with 81 additions and 30 deletions

View File

@@ -102,7 +102,12 @@ export default function Canvas(props) {
prevY: note.y, prevY: note.y,
}); });
} }
setSelectedElement({ element: type, id: id, openDialogue: false, openCollapse: false }); setSelectedElement({
element: type,
id: id,
openDialogue: false,
openCollapse: false,
});
}; };
const handleMouseMove = (e) => { const handleMouseMove = (e) => {
@@ -113,8 +118,8 @@ export default function Canvas(props) {
setLine({ setLine({
...line, ...line,
endX: (e.clientX - offsetX) / settings.zoom - settings.pan.x, endX: (e.clientX - offsetX - settings.pan.x) / settings.zoom,
endY: (e.clientY - offsetY) / settings.zoom - settings.pan.y, endY: (e.clientY - offsetY - settings.pan.y) / settings.zoom,
}); });
} else if ( } else if (
panning.state && panning.state &&

View File

@@ -12,7 +12,6 @@ import {
Table, Table,
} from "@douyinfe/semi-ui"; } from "@douyinfe/semi-ui";
import { import {
IconRowsStroked,
IconDeleteStroked, IconDeleteStroked,
IconLoopTextStroked, IconLoopTextStroked,
IconMore, IconMore,
@@ -309,27 +308,14 @@ export default function ReferenceOverview(props) {
}} }}
></Checkbox> ></Checkbox>
</div> </div>
<Row gutter={6} className="mt-3"> <Button
<Col span={12}> icon={<IconDeleteStroked />}
<Button block
icon={<IconRowsStroked />} type="danger"
disabled={r.cardinality === Cardinality.ONE_TO_ONE} onClick={() => deleteRelationship(r.id, true)}
block >
> Delete
Extract to table </Button>
</Button>
</Col>
<Col span={12}>
<Button
icon={<IconDeleteStroked />}
block
type="danger"
onClick={() => deleteRelationship(r.id, true)}
>
Delete
</Button>
</Col>
</Row>
</Collapse.Panel> </Collapse.Panel>
</div> </div>
)) ))

View File

@@ -44,10 +44,10 @@ import {
export default function Table(props) { export default function Table(props) {
const [isHovered, setIsHovered] = useState(false); const [isHovered, setIsHovered] = useState(false);
const [hoveredField, setHoveredField] = useState(-1); const [hoveredField, setHoveredField] = useState(-1);
// const [visible, setVisible] = useState(false);
const [editField, setEditField] = useState({}); const [editField, setEditField] = useState({});
const { layout } = useContext(LayoutContext); const { layout } = useContext(LayoutContext);
const { deleteTable, updateTable, updateField } = useContext(TableContext); const { deleteTable, updateTable, updateField, setRelationships } =
useContext(TableContext);
const { tab, setTab } = useContext(TabContext); const { tab, setTab } = useContext(TabContext);
const { settings } = useContext(SettingsContext); const { settings } = useContext(SettingsContext);
const { setUndoStack, setRedoStack } = useContext(UndoRedoContext); const { setUndoStack, setRedoStack } = useContext(UndoRedoContext);
@@ -88,7 +88,15 @@ export default function Table(props) {
style={{ backgroundColor: props.tableData.color }} style={{ backgroundColor: props.tableData.color }}
/> />
<div className="font-bold text-slate-800 h-[40px] flex justify-between items-center border-b border-gray-400 bg-gray-200"> <div className="font-bold text-slate-800 h-[40px] flex justify-between items-center border-b border-gray-400 bg-gray-200">
<div className="px-3">{props.tableData.name}</div> <div className="px-3">
{isHovered
? props.tableData.name.length < 10
? props.tableData.name
: `${props.tableData.name.substring(0, 10)}...`
: props.tableData.name.length < 14
? props.tableData.name
: `${props.tableData.name.substring(0, 14)}...`}
</div>
{isHovered && ( {isHovered && (
<div className="flex justify-end items-center mx-2"> <div className="flex justify-end items-center mx-2">
<Button <Button
@@ -662,6 +670,19 @@ export default function Table(props) {
}, },
]); ]);
setRedoStack([]); setRedoStack([]);
setRelationships((prev) =>
prev
.filter(
(e) =>
!(
(e.startTableId === props.tableData.id &&
e.startFieldId === j) ||
(e.endTableId === props.tableData.id &&
e.endFieldId === j)
)
)
.map((e, i) => ({ ...e, id: i }))
);
updateTable(props.tableData.id, { updateTable(props.tableData.id, {
fields: props.tableData.fields fields: props.tableData.fields
.filter((field) => field.id !== j) .filter((field) => field.id !== j)
@@ -1102,6 +1123,19 @@ export default function Table(props) {
}, },
]); ]);
setRedoStack([]); setRedoStack([]);
setRelationships((prev) =>
prev
.filter(
(e) =>
!(
(e.startTableId === props.tableData.id &&
e.startFieldId === index) ||
(e.endTableId === props.tableData.id &&
e.endFieldId === index)
)
)
.map((e, i) => ({ ...e, id: i }))
);
updateTable(props.tableData.id, { updateTable(props.tableData.id, {
fields: props.tableData.fields fields: props.tableData.fields
.filter((e) => e.id !== fieldData.id) .filter((e) => e.id !== fieldData.id)

View File

@@ -39,8 +39,14 @@ import { SelectContext, TableContext, UndoRedoContext } from "../pages/editor";
export default function TableOverview(props) { export default function TableOverview(props) {
const [indexActiveKey, setIndexActiveKey] = useState(""); const [indexActiveKey, setIndexActiveKey] = useState("");
const [value, setValue] = useState(""); const [value, setValue] = useState("");
const { tables, addTable, deleteTable, updateField, updateTable } = const {
useContext(TableContext); tables,
addTable,
deleteTable,
updateField,
updateTable,
setRelationships,
} = useContext(TableContext);
const { setUndoStack, setRedoStack } = useContext(UndoRedoContext); const { setUndoStack, setRedoStack } = useContext(UndoRedoContext);
const { selectedElement, setSelectedElement } = useContext(SelectContext); const { selectedElement, setSelectedElement } = useContext(SelectContext);
const [editField, setEditField] = useState({}); const [editField, setEditField] = useState({});
@@ -502,6 +508,21 @@ export default function TableOverview(props) {
}, },
]); ]);
setRedoStack([]); setRedoStack([]);
setRelationships((prev) =>
prev
.filter(
(e) =>
!(
(e.startTableId ===
props.tableData.id &&
e.startFieldId === j) ||
(e.endTableId ===
props.tableData.id &&
e.endFieldId === j)
)
)
.map((e, i) => ({ ...e, id: i }))
);
updateTable(i, { updateTable(i, {
fields: t.fields fields: t.fields
.filter((field) => field.id !== j) .filter((field) => field.id !== j)

View File

@@ -230,6 +230,11 @@ export default function Editor(props) {
setTables((prev) => setTables((prev) =>
prev.filter((e) => e.id !== id).map((e, i) => ({ ...e, id: i })) prev.filter((e) => e.id !== id).map((e, i) => ({ ...e, id: i }))
); );
setRelationships((prev) =>
prev
.filter((e) => e.startTableId !== id && e.endTableId !== id)
.map((e, i) => ({ ...e, id: i }))
);
if (id === selectedElement.id) { if (id === selectedElement.id) {
setSelectedElement({ setSelectedElement({
element: ObjectType.NONE, element: ObjectType.NONE,