fix deleting tables
This commit is contained in:
parent
d3897f8112
commit
7f6a2d208f
4139
package-lock.json
generated
4139
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -294,7 +294,6 @@ export default function Canvas(props) {
|
|||||||
onMouseDown={(e) =>
|
onMouseDown={(e) =>
|
||||||
handleMouseDownRect(e, table.id, ObjectType.TABLE)
|
handleMouseDownRect(e, table.id, ObjectType.TABLE)
|
||||||
}
|
}
|
||||||
handleDelete={props.handleDelete}
|
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
{linking && (
|
{linking && (
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { React, useState, useRef } from "react";
|
import { React, useState, useRef, memo } from "react";
|
||||||
import { ResizableBox } from "react-resizable";
|
import { ResizableBox } from "react-resizable";
|
||||||
import CodeMirror from "@uiw/react-codemirror";
|
import CodeMirror from "@uiw/react-codemirror";
|
||||||
import { createTheme } from "@uiw/codemirror-themes";
|
import { createTheme } from "@uiw/codemirror-themes";
|
||||||
@ -28,7 +28,7 @@ const myTheme = createTheme({
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
export default function EditorPanel(props) {
|
const EditorPanel = memo(function EditorPanel(props) {
|
||||||
const [tab, setTab] = useState("1");
|
const [tab, setTab] = useState("1");
|
||||||
const map = useRef(new Map());
|
const map = useRef(new Map());
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ export default function EditorPanel(props) {
|
|||||||
];
|
];
|
||||||
const contentList = [
|
const contentList = [
|
||||||
<div>
|
<div>
|
||||||
<TableOverview tables={props.tables} setTables={props.setTables} handleDelete={props.handleDelete}/>
|
<TableOverview tables={props.tables} setTables={props.setTables}/>
|
||||||
</div>,
|
</div>,
|
||||||
<div>
|
<div>
|
||||||
<ReferenceOverview
|
<ReferenceOverview
|
||||||
@ -176,4 +176,6 @@ export default function EditorPanel(props) {
|
|||||||
</div>
|
</div>
|
||||||
</ResizableBox>
|
</ResizableBox>
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
|
|
||||||
|
export default EditorPanel;
|
||||||
|
@ -21,7 +21,7 @@ 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 [name, setName] = useState(props.tableData.name);
|
// const [name, setName] = useState(props.tableData.name);
|
||||||
const [visible, setVisible] = useState(false);
|
const [visible, setVisible] = useState(false);
|
||||||
const [editFieldVisible, setEditFieldVisible] = useState(-1);
|
const [editFieldVisible, setEditFieldVisible] = useState(-1);
|
||||||
|
|
||||||
@ -127,16 +127,16 @@ export default function Table(props) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<input
|
<div
|
||||||
type="text"
|
// type="text"
|
||||||
value={name}
|
// value={name}
|
||||||
onChange={(e) => setName(e.target.value)}
|
// onChange={(e) => setName(e.target.value)}
|
||||||
className={`p-1 select-text w-[100px] bg-gray-400 focus:bg-gray-200 ${
|
className={`p-1 select-text w-[100px] bg-gray-400 focus:bg-gray-200 ${
|
||||||
name < 1
|
false
|
||||||
? "ring-2 ring-red-600"
|
? "ring-2 ring-red-600"
|
||||||
: "focus:ring-2 focus:ring-sky-500 "
|
: "focus:ring-2 focus:ring-sky-500 "
|
||||||
}`}
|
}`}
|
||||||
/>
|
>{props.tableData.name}</div>
|
||||||
</form>
|
</form>
|
||||||
}
|
}
|
||||||
{isHovered && (
|
{isHovered && (
|
||||||
@ -157,7 +157,7 @@ export default function Table(props) {
|
|||||||
okText="Delete"
|
okText="Delete"
|
||||||
onConfirm={() => {
|
onConfirm={() => {
|
||||||
Toast.success(`Table deleted!`);
|
Toast.success(`Table deleted!`);
|
||||||
props.handleDelete(props.id);
|
console.log("table.jsx ", props.id);
|
||||||
}}
|
}}
|
||||||
onCancel={() => {}}
|
onCancel={() => {}}
|
||||||
>
|
>
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import { React, useState } from "react";
|
import { React, useState, memo } from "react";
|
||||||
import { defaultTableTheme, sqlDataTypes, tableThemes } from "../data/data";
|
import { defaultTableTheme, sqlDataTypes, tableThemes } from "../data/data";
|
||||||
import {
|
import {
|
||||||
Collapse,
|
Collapse,
|
||||||
Input,
|
|
||||||
Row,
|
Row,
|
||||||
Col,
|
Col,
|
||||||
Form,
|
Form,
|
||||||
@ -12,7 +11,7 @@ import {
|
|||||||
Checkbox,
|
Checkbox,
|
||||||
Select,
|
Select,
|
||||||
AutoComplete,
|
AutoComplete,
|
||||||
Toast
|
Toast,
|
||||||
} from "@douyinfe/semi-ui";
|
} from "@douyinfe/semi-ui";
|
||||||
import {
|
import {
|
||||||
IconMore,
|
IconMore,
|
||||||
@ -24,9 +23,9 @@ import {
|
|||||||
IconSearch,
|
IconSearch,
|
||||||
} from "@douyinfe/semi-icons";
|
} from "@douyinfe/semi-icons";
|
||||||
|
|
||||||
export default function TableOverview(props) {
|
const TableOverview = memo(function TableOverView(props) {
|
||||||
const [indexActiveKey, setIndexActiveKey] = useState("");
|
const [indexActiveKey, setIndexActiveKey] = useState("");
|
||||||
const [indexActiveKeyTable, setIndexActiveKeyTable] = useState([]);
|
const [tableActiveKey, setTableActiveKey] = useState("");
|
||||||
|
|
||||||
const updateColor = (id, c) => {
|
const updateColor = (id, c) => {
|
||||||
const updatedTables = [...props.tables];
|
const updatedTables = [...props.tables];
|
||||||
@ -71,7 +70,7 @@ export default function TableOverview(props) {
|
|||||||
onChange={(v) => handleChange(v)}
|
onChange={(v) => handleChange(v)}
|
||||||
onSelect={(v) => {
|
onSelect={(v) => {
|
||||||
const { id, name } = props.tables.find((t) => t.name === v);
|
const { id, name } = props.tables.find((t) => t.name === v);
|
||||||
setIndexActiveKeyTable([`${id}`]);
|
setTableActiveKey(`${id}`);
|
||||||
document
|
document
|
||||||
.getElementById(`${name}_scroll_id`)
|
.getElementById(`${name}_scroll_id`)
|
||||||
.scrollIntoView({ behavior: "smooth" });
|
.scrollIntoView({ behavior: "smooth" });
|
||||||
@ -122,29 +121,32 @@ export default function TableOverview(props) {
|
|||||||
</Row>
|
</Row>
|
||||||
</div>
|
</div>
|
||||||
<Collapse
|
<Collapse
|
||||||
activeKey={indexActiveKeyTable}
|
activeKey={tableActiveKey}
|
||||||
onChange={(k) => setIndexActiveKeyTable(k)}
|
onChange={(k) => setTableActiveKey(k)}
|
||||||
|
accordion
|
||||||
>
|
>
|
||||||
{props.tables.map((t, i) => (
|
{props.tables.map((t, i) => (
|
||||||
<div id={`${t.name}_scroll_id`} key={t.id}>
|
<div id={`${t.name}_scroll_id`} key={t.id}>
|
||||||
<Collapse.Panel
|
<Collapse.Panel header={<div>{t.name}</div>} itemKey={`${t.id}`}>
|
||||||
header={
|
|
||||||
<div>
|
|
||||||
<Input defaultValue={t.name} borderless />
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
itemKey={`${t.id}`}
|
|
||||||
>
|
|
||||||
{t.fields.map((f, j) => (
|
{t.fields.map((f, j) => (
|
||||||
<Form
|
<Form
|
||||||
key={j}
|
key={j}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
const updatedTables = [...props.tables];
|
props.setTables((prev) => {
|
||||||
updatedTables[i].fields = updatedTables[i].fields.map(
|
return prev.map((p, idx) => {
|
||||||
(field, index) =>
|
if (idx === i) {
|
||||||
index === j ? { ...field, ...value.values } : field
|
return {
|
||||||
);
|
...p,
|
||||||
props.setTables(updatedTables);
|
fields: p.fields.map((field, index) =>
|
||||||
|
index === j
|
||||||
|
? { ...field, ...value.values }
|
||||||
|
: field
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
});
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Row
|
<Row
|
||||||
@ -176,6 +178,7 @@ export default function TableOverview(props) {
|
|||||||
})}
|
})}
|
||||||
filter
|
filter
|
||||||
initValue={f.type}
|
initValue={f.type}
|
||||||
|
placeholder="Type"
|
||||||
></Form.Select>
|
></Form.Select>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={3}>
|
<Col span={3}>
|
||||||
@ -583,7 +586,12 @@ export default function TableOverview(props) {
|
|||||||
type="danger"
|
type="danger"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
Toast.success(`Table deleted!`);
|
Toast.success(`Table deleted!`);
|
||||||
props.handleDelete(i);
|
props.setTables((prev) => {
|
||||||
|
return prev
|
||||||
|
.filter((e) => e.id !== i)
|
||||||
|
.map((e, idx) => ({ ...e, id: idx }));
|
||||||
|
});
|
||||||
|
setTableActiveKey("");
|
||||||
}}
|
}}
|
||||||
></Button>
|
></Button>
|
||||||
</Col>
|
</Col>
|
||||||
@ -594,4 +602,6 @@ export default function TableOverview(props) {
|
|||||||
</Collapse>
|
</Collapse>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
|
|
||||||
|
export default TableOverview;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import Header from "../components/header";
|
import Header from "../components/header";
|
||||||
import Sidebar from "../components/sidebar";
|
import Sidebar from "../components/sidebar";
|
||||||
import ControlPanel from "../components/control_panel";
|
import ControlPanel from "../components/control_panel";
|
||||||
@ -13,14 +13,13 @@ export default function Editor(props) {
|
|||||||
const [relationships, setRelationships] = useState([]);
|
const [relationships, setRelationships] = useState([]);
|
||||||
const [areas, setAreas] = useState([]);
|
const [areas, setAreas] = useState([]);
|
||||||
|
|
||||||
const deleteTable = (id) => {
|
useEffect(() => {
|
||||||
let updatedTables = [...tables];
|
console.log("changed: ", tables);
|
||||||
updatedTables.splice(id, 1);
|
}, [tables]);
|
||||||
updatedTables = updatedTables.length>0? updatedTables.map((t, i) => ({ ...t, id: i })):[];
|
|
||||||
setTables(updatedTables);
|
|
||||||
console.log(tables);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
// const handleDelete = useCallback((id)=>{
|
||||||
|
// setTables(prev=>prev.filter(e=>e.id!==id).map((e, i)=>({...e, id: i})))
|
||||||
|
// }, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -37,7 +36,7 @@ export default function Editor(props) {
|
|||||||
setRelationships={setRelationships}
|
setRelationships={setRelationships}
|
||||||
areas={areas}
|
areas={areas}
|
||||||
setAreas={setAreas}
|
setAreas={setAreas}
|
||||||
handleDelete={deleteTable}
|
// handleDelete={handleDelete}
|
||||||
/>
|
/>
|
||||||
<Canvas
|
<Canvas
|
||||||
tables={tables}
|
tables={tables}
|
||||||
@ -48,7 +47,6 @@ export default function Editor(props) {
|
|||||||
setRelationships={setRelationships}
|
setRelationships={setRelationships}
|
||||||
areas={areas}
|
areas={areas}
|
||||||
setAreas={setAreas}
|
setAreas={setAreas}
|
||||||
handleDelete={deleteTable}
|
|
||||||
/>
|
/>
|
||||||
</DndProvider>
|
</DndProvider>
|
||||||
<Sidebar />
|
<Sidebar />
|
||||||
|
Loading…
Reference in New Issue
Block a user