This commit is contained in:
1ilit 2023-09-19 15:48:11 +03:00
parent 519b9d0a27
commit d3897f8112
5 changed files with 50 additions and 27 deletions

View File

@ -159,12 +159,6 @@ export default function Canvas(props) {
setLinking(false); setLinking(false);
}; };
const deleteTable = (id) => {
const updatedTables = [...props.tables];
updatedTables.splice(id, 1);
props.setTables(updatedTables);
};
const handleGripField = (id) => { const handleGripField = (id) => {
setPanning(false); setPanning(false);
setDragging([ObjectType.NONE, -1]); setDragging([ObjectType.NONE, -1]);
@ -300,7 +294,7 @@ export default function Canvas(props) {
onMouseDown={(e) => onMouseDown={(e) =>
handleMouseDownRect(e, table.id, ObjectType.TABLE) handleMouseDownRect(e, table.id, ObjectType.TABLE)
} }
onDelete={deleteTable} handleDelete={props.handleDelete}
/> />
))} ))}
{linking && ( {linking && (

View File

@ -40,7 +40,7 @@ export default function EditorPanel(props) {
]; ];
const contentList = [ const contentList = [
<div> <div>
<TableOverview tables={props.tables} setTables={props.setTables} /> <TableOverview tables={props.tables} setTables={props.setTables} handleDelete={props.handleDelete}/>
</div>, </div>,
<div> <div>
<ReferenceOverview <ReferenceOverview

View File

@ -157,7 +157,7 @@ export default function Table(props) {
okText="Delete" okText="Delete"
onConfirm={() => { onConfirm={() => {
Toast.success(`Table deleted!`); Toast.success(`Table deleted!`);
props.onDelete(props.id); props.handleDelete(props.id);
}} }}
onCancel={() => {}} onCancel={() => {}}
> >

View File

@ -12,6 +12,7 @@ import {
Checkbox, Checkbox,
Select, Select,
AutoComplete, AutoComplete,
Toast
} from "@douyinfe/semi-ui"; } from "@douyinfe/semi-ui";
import { import {
IconMore, IconMore,
@ -25,7 +26,7 @@ import {
export default function TableOverview(props) { export default function TableOverview(props) {
const [indexActiveKey, setIndexActiveKey] = useState(""); const [indexActiveKey, setIndexActiveKey] = useState("");
const [indexActiveKeyTable, setIndexActiveKeyTable] = useState(""); const [indexActiveKeyTable, setIndexActiveKeyTable] = useState([]);
const updateColor = (id, c) => { const updateColor = (id, c) => {
const updatedTables = [...props.tables]; const updatedTables = [...props.tables];
@ -70,7 +71,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}`); setIndexActiveKeyTable([`${id}`]);
document document
.getElementById(`${name}_scroll_id`) .getElementById(`${name}_scroll_id`)
.scrollIntoView({ behavior: "smooth" }); .scrollIntoView({ behavior: "smooth" });
@ -83,9 +84,13 @@ export default function TableOverview(props) {
icon={<IconPlus />} icon={<IconPlus />}
block block
onClick={() => { onClick={() => {
const id =
props.tables.length === 0
? 0
: props.tables[props.tables.length - 1].id + 1;
const newTable = { const newTable = {
id: props.tables.length, id: id,
name: `table_${props.tables.length}`, name: `table_${id}`,
x: 0, x: 0,
y: 0, y: 0,
fields: [ fields: [
@ -118,10 +123,10 @@ export default function TableOverview(props) {
</div> </div>
<Collapse <Collapse
activeKey={indexActiveKeyTable} activeKey={indexActiveKeyTable}
onChange={(i) => setIndexActiveKeyTable(i)} onChange={(k) => setIndexActiveKeyTable(k)}
> >
{props.tables.map((t, i) => ( {props.tables.map((t, i) => (
<div id={`${t.name}_scroll_id`} key={i}> <div id={`${t.name}_scroll_id`} key={t.id}>
<Collapse.Panel <Collapse.Panel
header={ header={
<div> <div>
@ -307,15 +312,18 @@ export default function TableOverview(props) {
icon={<IconDeleteStroked />} icon={<IconDeleteStroked />}
type="danger" type="danger"
block block
onClick={() => { onClick={(ev) => {
const updatedTables = [...props.tables]; props.setTables((prev) => {
const updatedFields = [...t.fields]; const updatedTables = [...prev];
updatedFields.splice(j, 1); const updatedFields = [
updatedTables[i] = { ...updatedTables[t.id].fields,
...t, ];
fields: [...updatedFields], updatedFields.splice(j, 1);
}; updatedTables[t.id].fields = [
props.setTables(updatedTables); ...updatedFields,
];
return updatedTables;
});
}} }}
> >
Delete Delete
@ -342,7 +350,7 @@ export default function TableOverview(props) {
activeKey={indexActiveKey} activeKey={indexActiveKey}
onChange={(itemKey) => setIndexActiveKey(itemKey)} onChange={(itemKey) => setIndexActiveKey(itemKey)}
> >
<Collapse.Panel header="Indices" itemKey="1"> <Collapse.Panel header="Indices" itemKey="1" accordion>
{t.indices.map((idx, k) => ( {t.indices.map((idx, k) => (
<div <div
className="flex justify-between items-center mb-2" className="flex justify-between items-center mb-2"
@ -526,7 +534,7 @@ export default function TableOverview(props) {
></Button> ></Button>
</Popover> </Popover>
</Col> </Col>
<Col span={8}> <Col span={7}>
<Button <Button
block block
onClick={() => { onClick={() => {
@ -545,7 +553,7 @@ export default function TableOverview(props) {
Add index Add index
</Button> </Button>
</Col> </Col>
<Col span={8}> <Col span={6}>
<Button <Button
onClick={() => { onClick={() => {
const updatedTables = [...props.tables]; const updatedTables = [...props.tables];
@ -569,6 +577,16 @@ export default function TableOverview(props) {
Add field Add field
</Button> </Button>
</Col> </Col>
<Col span={3}>
<Button
icon={<IconDeleteStroked />}
type="danger"
onClick={() => {
Toast.success(`Table deleted!`);
props.handleDelete(i);
}}
></Button>
</Col>
</Row> </Row>
</Collapse.Panel> </Collapse.Panel>
</div> </div>

View File

@ -13,6 +13,15 @@ export default function Editor(props) {
const [relationships, setRelationships] = useState([]); const [relationships, setRelationships] = useState([]);
const [areas, setAreas] = 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 ( return (
<> <>
<Header name={props.name} /> <Header name={props.name} />
@ -28,6 +37,7 @@ export default function Editor(props) {
setRelationships={setRelationships} setRelationships={setRelationships}
areas={areas} areas={areas}
setAreas={setAreas} setAreas={setAreas}
handleDelete={deleteTable}
/> />
<Canvas <Canvas
tables={tables} tables={tables}
@ -38,6 +48,7 @@ export default function Editor(props) {
setRelationships={setRelationships} setRelationships={setRelationships}
areas={areas} areas={areas}
setAreas={setAreas} setAreas={setAreas}
handleDelete={deleteTable}
/> />
</DndProvider> </DndProvider>
<Sidebar /> <Sidebar />