diff --git a/src/components/canvas.jsx b/src/components/canvas.jsx index 9ded02c..c3bc785 100644 --- a/src/components/canvas.jsx +++ b/src/components/canvas.jsx @@ -159,12 +159,6 @@ export default function Canvas(props) { setLinking(false); }; - const deleteTable = (id) => { - const updatedTables = [...props.tables]; - updatedTables.splice(id, 1); - props.setTables(updatedTables); - }; - const handleGripField = (id) => { setPanning(false); setDragging([ObjectType.NONE, -1]); @@ -300,7 +294,7 @@ export default function Canvas(props) { onMouseDown={(e) => handleMouseDownRect(e, table.id, ObjectType.TABLE) } - onDelete={deleteTable} + handleDelete={props.handleDelete} /> ))} {linking && ( diff --git a/src/components/editor_panel.jsx b/src/components/editor_panel.jsx index 09fbe9e..2a25aed 100644 --- a/src/components/editor_panel.jsx +++ b/src/components/editor_panel.jsx @@ -40,7 +40,7 @@ export default function EditorPanel(props) { ]; const contentList = [
- +
,
{ Toast.success(`Table deleted!`); - props.onDelete(props.id); + props.handleDelete(props.id); }} onCancel={() => {}} > diff --git a/src/components/table_overview.jsx b/src/components/table_overview.jsx index 8d1e19a..3c58576 100644 --- a/src/components/table_overview.jsx +++ b/src/components/table_overview.jsx @@ -12,6 +12,7 @@ import { Checkbox, Select, AutoComplete, + Toast } from "@douyinfe/semi-ui"; import { IconMore, @@ -25,7 +26,7 @@ import { export default function TableOverview(props) { const [indexActiveKey, setIndexActiveKey] = useState(""); - const [indexActiveKeyTable, setIndexActiveKeyTable] = useState(""); + const [indexActiveKeyTable, setIndexActiveKeyTable] = useState([]); const updateColor = (id, c) => { const updatedTables = [...props.tables]; @@ -70,7 +71,7 @@ export default function TableOverview(props) { onChange={(v) => handleChange(v)} onSelect={(v) => { const { id, name } = props.tables.find((t) => t.name === v); - setIndexActiveKeyTable(`${id}`); + setIndexActiveKeyTable([`${id}`]); document .getElementById(`${name}_scroll_id`) .scrollIntoView({ behavior: "smooth" }); @@ -83,9 +84,13 @@ export default function TableOverview(props) { icon={} block onClick={() => { + const id = + props.tables.length === 0 + ? 0 + : props.tables[props.tables.length - 1].id + 1; const newTable = { - id: props.tables.length, - name: `table_${props.tables.length}`, + id: id, + name: `table_${id}`, x: 0, y: 0, fields: [ @@ -118,10 +123,10 @@ export default function TableOverview(props) {
setIndexActiveKeyTable(i)} + onChange={(k) => setIndexActiveKeyTable(k)} > {props.tables.map((t, i) => ( -
+
@@ -307,15 +312,18 @@ export default function TableOverview(props) { icon={} type="danger" block - onClick={() => { - const updatedTables = [...props.tables]; - const updatedFields = [...t.fields]; - updatedFields.splice(j, 1); - updatedTables[i] = { - ...t, - fields: [...updatedFields], - }; - props.setTables(updatedTables); + onClick={(ev) => { + props.setTables((prev) => { + const updatedTables = [...prev]; + const updatedFields = [ + ...updatedTables[t.id].fields, + ]; + updatedFields.splice(j, 1); + updatedTables[t.id].fields = [ + ...updatedFields, + ]; + return updatedTables; + }); }} > Delete @@ -342,7 +350,7 @@ export default function TableOverview(props) { activeKey={indexActiveKey} onChange={(itemKey) => setIndexActiveKey(itemKey)} > - + {t.indices.map((idx, k) => (
- + - + + + +
diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index 03bd540..b8d8ac5 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -13,6 +13,15 @@ export default function Editor(props) { const [relationships, setRelationships] = useState([]); const [areas, setAreas] = useState([]); + const deleteTable = (id) => { + let updatedTables = [...tables]; + updatedTables.splice(id, 1); + updatedTables = updatedTables.length>0? updatedTables.map((t, i) => ({ ...t, id: i })):[]; + setTables(updatedTables); + console.log(tables); + }; + + return ( <>
@@ -28,6 +37,7 @@ export default function Editor(props) { setRelationships={setRelationships} areas={areas} setAreas={setAreas} + handleDelete={deleteTable} />