diff --git a/src/components/EditorCanvas/Table.jsx b/src/components/EditorCanvas/Table.jsx index 1b9fc4c..2fa3f03 100644 --- a/src/components/EditorCanvas/Table.jsx +++ b/src/components/EditorCanvas/Table.jsx @@ -1,11 +1,9 @@ import { useState } from "react"; import { - sqlDataTypes, - tableThemes, - defaultBlue, Tab, - Action, ObjectType, + tableFieldHeight, + tableHeaderHeight, } from "../../data/constants"; import { IconEdit, @@ -13,62 +11,38 @@ import { IconMinus, IconDeleteStroked, IconKeyStroked, - IconCheckboxTick, } from "@douyinfe/semi-icons"; -import { - Select, - Input, - TextArea, - Card, - Checkbox, - InputNumber, - TagInput, - Row, - Col, - Popover, - Tag, - Button, - SideSheet, - Toast, -} from "@douyinfe/semi-ui"; -import { getSize, hasCheck, hasPrecision, isSized } from "../../utils/toSQL"; -import { - useLayout, - useSettings, - useUndoRedo, - useTables, - useSelect, - useTypes, -} from "../../hooks"; +import { Popover, Tag, Button, Toast, SideSheet } from "@douyinfe/semi-ui"; +import { useLayout, useSettings, useTables, useSelect } from "../../hooks"; +import TableInfo from "../EditorSidePanel/TablesTab/TableInfo"; export default function Table(props) { const [hoveredField, setHoveredField] = useState(-1); - const [editField, setEditField] = useState({}); - const { layout } = useLayout(); const { - deleteTable, - updateTable, - updateField, - deleteField, - setRelationships, - } = useTables(); + tableData, + onMouseDown, + setHoveredTable, + handleGripField, + setLinkingLine, + } = props; + const { layout } = useLayout(); + const { deleteTable, deleteField } = useTables(); const { settings } = useSettings(); - const { types } = useTypes(); - const { setUndoStack, setRedoStack } = useUndoRedo(); const { selectedElement, setSelectedElement } = useSelect(); - const height = props.tableData.fields.length * 36 + 50 + 7; + const height = + tableData.fields.length * tableFieldHeight + tableHeaderHeight + 7; return ( <>
- {props.tableData.name} + {tableData.name}
@@ -111,7 +85,7 @@ export default function Table(props) { setSelectedElement((prev) => ({ ...prev, element: ObjectType.TABLE, - id: props.tableData.id, + id: tableData.id, open: true, })); } else { @@ -119,12 +93,12 @@ export default function Table(props) { ...prev, currentTab: Tab.TABLES, element: ObjectType.TABLE, - id: props.tableData.id, + id: tableData.id, open: true, })); if (selectedElement.currentTab !== Tab.TABLES) return; document - .getElementById(`scroll_table_${props.tableData.id}`) + .getElementById(`scroll_table_${tableData.id}`) .scrollIntoView({ behavior: "smooth" }); } }} @@ -134,25 +108,25 @@ export default function Table(props) {
Comment :{" "} - {props.tableData.comment === "" ? ( + {tableData.comment === "" ? ( "No comment" ) : ( -
{props.tableData.comment}
+
{tableData.comment}
)}
Indices : {" "} - {props.tableData.indices.length === 0 ? ( + {tableData.indices.length === 0 ? ( "No indices" ) : (
- {props.tableData.indices.map((index, k) => ( + {tableData.indices.map((index, k) => (
{ Toast.success(`Table deleted!`); - deleteTable(props.tableData.id); + deleteTable(tableData.id); }} > Delete table @@ -207,7 +181,7 @@ export default function Table(props) {
- {props.tableData.fields.map((e, i) => { + {tableData.fields.map((e, i) => { return settings.showFieldSummary ? ( -
-
Name:
- - updateTable(props.tableData.id, { name: value }) - } - onFocus={(e) => setEditField({ name: e.target.value })} - onBlur={(e) => { - if (e.target.value === editField.name) return; - setUndoStack((prev) => [ - ...prev, - { - action: Action.EDIT, - element: ObjectType.TABLE, - component: "self", - tid: props.tableData.id, - undo: editField, - redo: { name: e.target.value }, - message: `Edit table name to ${e.target.value}`, - }, - ]); - setRedoStack([]); - }} - /> -
-
- {props.tableData.fields.map((f, j) => ( - - - - updateField(props.tableData.id, j, { name: value }) - } - onFocus={(e) => setEditField({ name: e.target.value })} - onBlur={(e) => { - if (e.target.value === editField.name) return; - setUndoStack((prev) => [ - ...prev, - { - action: Action.EDIT, - element: ObjectType.TABLE, - component: "field", - tid: props.tableData.id, - fid: j, - undo: editField, - redo: { name: e.target.value }, - message: `Edit table field name to "${e.target.value}"`, - }, - ]); - setRedoStack([]); - }} - /> - - - - - - - - -