import { SearchOutlined, SwapOutlined } from "@ant-design/icons"; import { Button, Descriptions, Form, Input, Popconfirm, Popover, Select } from "antd"; import React from "react"; import { RELATION_TYPE_OPTIONS } from "@/constants"; import { useModel } from "umi"; import noData from "@/assets/no-data.png"; import { ColumnRelation } from "@/type"; export default function RelationPanel() { const { project, addRelation, updateRelation, deleteRelation } = useModel("erModel"); const [search, setSearch] = React.useState(""); const list = React.useMemo(() => { return project.relations.filter((item) => item.name.includes(search)); }, [search, project.relations]); const [active, setActive] = React.useState(""); const handleChange = (index: number, key: string, value: any) => { const data = project.relations[index]; updateRelation({ ...data, [key]: value, }); }; const handleSwitchChange = (record: ColumnRelation) => { updateRelation({ ...record, primaryTable: record.foreignTable, primaryKey: record.foreignKey, foreignTable: record.primaryTable, foreignKey: record.primaryKey, }) } const getPrimaryColumn = (item: ColumnRelation) => { const tableItem = project.tables.find((table) => table.table.id === item.primaryTable); return { table: tableItem?.table, column: tableItem?.tableColumnList.find((column) => column.id === item.primaryKey) } }; const getForeignColumn = (item: ColumnRelation) => { const tableItem = project.tables .find((table) => table.table.id === item.foreignTable); return { table: tableItem?.table, column: tableItem?.tableColumnList.find((column) => column.id === item.foreignKey) } }; return (