From 032d77df2cec726bd62d260438a37df380adddbf Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:48:44 +0300 Subject: [PATCH] brrr --- src/components/canvas.jsx | 6 +- src/components/table.jsx | 482 ++++++++++---------------------------- src/data/data.js | 2 +- 3 files changed, 131 insertions(+), 359 deletions(-) diff --git a/src/components/canvas.jsx b/src/components/canvas.jsx index a697483..faf9992 100644 --- a/src/components/canvas.jsx +++ b/src/components/canvas.jsx @@ -131,13 +131,13 @@ export default function Canvas(props) { ...r, startX: props.tables[r.startTableId].x + 15, startY: - props.tables[r.startTableId].y + r.startFieldId * 36 + 40 + 19, + props.tables[r.startTableId].y + r.startFieldId * 36 + 50 + 19, }; } else if (r.endTableId === dragging[1]) { return { ...r, endX: props.tables[r.endTableId].x + 15, - endY: props.tables[r.endTableId].y + r.endFieldId * 36 + 40 + 19, + endY: props.tables[r.endTableId].y + r.endFieldId * 36 + 50 + 19, }; } return r; @@ -247,7 +247,7 @@ export default function Canvas(props) { endTableId: onRect.tableId, endFieldId: onRect.field, endX: props.tables[onRect.tableId].x + 15, - endY: props.tables[onRect.tableId].y + onRect.field * 36 + 40 + 19, + endY: props.tables[onRect.tableId].y + onRect.field * 36 + 50 + 19, name: `${props.tables[line.startTableId].name}_to_${ props.tables[onRect.tableId].name }`, diff --git a/src/components/table.jsx b/src/components/table.jsx index 2ccec3e..6ef6524 100644 --- a/src/components/table.jsx +++ b/src/components/table.jsx @@ -1,91 +1,34 @@ import { React, useState } from "react"; -import { sqlDataTypes } from "../data/data"; +// import { sqlDataTypes } from "../data/data"; +import { IconEdit, IconPlus, IconMore, IconMinus } from "@douyinfe/semi-icons"; import { - IconEdit, - IconDelete, - IconPlus, - IconMinus, -} from "@douyinfe/semi-icons"; -import { - Modal, - Form, - Checkbox, - Row, - Col, + // Modal, + // Form, + // Checkbox, + // Row, + // Col, Popover, Tag, - Popconfirm, - Toast, + Button, } 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 [visible, setVisible] = useState(false); + // const [editFieldVisible, setEditFieldVisible] = useState(-1); + // const [field, setField] = useState({ + // name: "", + // type: "", + // default: "", + // primary: false, + // unique: false, + // notNull: false, + // increment: false, + // comment: "", + // }); - const [field, setField] = useState({ - name: "", - type: "", - default: "", - primary: false, - unique: false, - notNull: false, - increment: false, - comment: "", - }); - - 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, - comment: "", - }); - 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, - comment: "", - }); - setVisible(false); - }; - - const height = props.tableData.fields.length * 36 + 40 + 4 + 36; - - const onCheck = (checkedValues) => { - setField({ - ...field, - [checkedValues.target.value]: checkedValues.target.checked, - }); - }; + const height = props.tableData.fields.length * 36 + 50 + 3; return ( @@ -95,7 +38,7 @@ export default function Table(props) { y={props.tableData.y} width={200} height={height} - style={{ cursor: "move" }} + className="shadow-lg rounded-md cursor-move" onMouseDown={props.onMouseDown} onMouseEnter={() => { setIsHovered(true); @@ -110,42 +53,87 @@ export default function Table(props) { >
-
- {props.tableData.name} -
+ className={`h-[10px] w-full rounded-t-md`} + style={{ backgroundColor: props.tableData.color }} + /> +
+
{props.tableData.name}
{isHovered && ( -
- - - { - Toast.success(`Table deleted!`); - console.log("table.jsx ", props.id); +
+ + + +

+ Comment :{" "} + {props.tableData.comment === "" + ? "No comment" + : props.tableData.comment} +

+

+ + Indices : + {" "} + {props.tableData.indices.length === 0 ? ( + "No indices" + ) : ( +

+ {props.tableData.indices.map((index, k) => ( +
+ +
+ {index.fields.map((f) => ( + {f} + ))} +
+
+ ))} +
+ )} +

+
+ } + position="rightTop" + showArrow + trigger="click" > - -
+ +
)}
@@ -154,7 +142,7 @@ export default function Table(props) { + <>

{e.name}

{e.type}

@@ -188,7 +176,7 @@ export default function Table(props) { Comment :{" "} {e.comment === "" ? "Not comment" : e.comment}

-
+ } position="right" showArrow @@ -197,8 +185,8 @@ export default function Table(props) { className={`${ i === props.tableData.fields.length - 1 ? "" - : "border-b-2 border-gray-400" - } h-[36px] p-2 flex justify-between`} + : "border-b border-gray-400" + } h-[36px] px-2 py-1 flex justify-between`} onMouseEnter={() => { setHoveredField(i); props.setOnRect({ @@ -211,10 +199,10 @@ export default function Table(props) { }} >
{e.name}
-
+
{hoveredField === i ? ( -
- - -
+ ) : ( e.type )} @@ -269,215 +248,8 @@ export default function Table(props) { ); })} -
- {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 - -
- -
-
-
); } - \ No newline at end of file diff --git a/src/data/data.js b/src/data/data.js index 7e0f6a0..9eb5669 100644 --- a/src/data/data.js +++ b/src/data/data.js @@ -39,7 +39,7 @@ const tableThemes = [ "#ff9159", ]; -const defaultTableTheme = "#9e9e9e"; +const defaultTableTheme = "#175e7a"; const bgBlue = "#124559"; const Cardinality = {