import { React, useState } from "react"; import {sqlDataTypes} from "../data/data"; import { IconEdit, IconDelete, IconPlus, IconMinus, } from "@douyinfe/semi-icons"; import { Modal, Form, Checkbox, Row, Col, Popover, Tag, Popconfirm, Toast, } from "@douyinfe/semi-ui"; export default function Table(props) { const [isHovered, setIsHovered] = useState(false); const [hoveredField, setHoveredField] = useState(-1); const [name, setName] = useState(props.tableData.name); const [visible, setVisible] = useState(false); const [editFieldVisible, setEditFieldVisible] = useState(-1); const [field, setField] = useState({ name: "", type: "", default: "", primary: false, unique: false, notNull: false, increment: false, }); const handleEditField = () => { props.setTables((prev) => { const updatedTables = [...prev]; updatedTables[props.id].fields[editFieldVisible] = { ...field }; return updatedTables; }); setField({ name: "", type: "", default: "", primary: false, unique: false, notNull: false, increment: false, }); setEditFieldVisible(-1); }; const handleAddField = () => { props.setTables((prev) => { const updatedTables = [...prev]; updatedTables[props.id].fields = [ ...updatedTables[props.id].fields, { ...field }, ]; return updatedTables; }); setField({ name: "", type: "", default: "", primary: false, unique: false, notNull: false, increment: false, }); setVisible(false); }; const height = props.tableData.fields.length * 36 + 40 + 4 + 36; const onCheck = (checkedValues) => { setField({ ...field, [checkedValues.target.value]: checkedValues.target.checked, }); }; return ( { setIsHovered(true); }} onMouseLeave={() => { setIsHovered(false); props.setOnRect({ tableId: -1, field: -2, }); }} >
{
e.preventDefault()} onMouseEnter={() => props.setOnRect({ tableId: props.id, field: -1, }) } > setName(e.target.value)} className={`p-1 select-text w-[100px] bg-gray-400 focus:bg-gray-200 ${ name < 1 ? "ring-2 ring-red-600" : "focus:ring-2 focus:ring-sky-500 " }`} />
} {isHovered && (
{ Toast.success(`Table deleted!`); props.onDelete(props.id); }} onCancel={() => {}} >
)}
{props.tableData.fields.map((e, i) => { return (

{e.name}

{e.type}


{e.primary && ( Primary )} {e.unique && ( Unique )} {e.notNull && ( Not null )} {e.increment && ( Increment )}

Default :{" "} {e.default === "" ? "Not set" : e.default}

} position="right" showArrow >
{ setHoveredField(i); props.setOnRect({ tableId: props.id, field: i, }); }} onMouseLeave={() => { setHoveredField(-1); }} >
{e.name}
{hoveredField === i ? (
) : ( e.type )}
); })}
{ props.tableData.comment===""? "No comment": props.tableData.comment}
setVisible(false)} centered closeOnEsc={true} okText="Add" cancelText="Cancel" >
setField({ ...field, ...v })} > { return { label: value, value: value, }; })} >
setField({ ...field, primary: !field.primary }) } > Primary setField({ ...field, unique: !field.unique })} > Unique setField({ ...field, notNull: !field.notNull }) } > Not null setField({ ...field, increment: !field.increment }) } > Increment
setEditFieldVisible(-1)} centered closeOnEsc={true} okText="Edit" cancelText="Cancel" >
setField({ ...field, ...v })} > { return { label: value, value: value, }; })} filter initValue={ editFieldVisible !== -1 ? props.tableData.fields[editFieldVisible].type : "" } >
Primary Unique Not null Increment
); }