diff --git a/src/components/canvas.jsx b/src/components/canvas.jsx index d1626a0..5c74ff0 100644 --- a/src/components/canvas.jsx +++ b/src/components/canvas.jsx @@ -1,6 +1,7 @@ import React, { useRef, useState } from "react"; import { useDrop } from "react-dnd"; import Table from "./table"; +import { defaultTableTheme } from "../data/data"; export default function Canvas(props) { const [dragging, setDragging] = useState(-1); @@ -86,14 +87,14 @@ export default function Canvas(props) { }); props.setTables(updatedTables); const updatedRelationShips = relationships.map((r) => { - if (r.startTableId === dragging - 1) { + if (r.startTableId === dragging) { return { ...r, startX: props.tables[r.startTableId].x + 15, startY: props.tables[r.startTableId].y + r.startFieldId * 36 + 40 + 19, }; - } else if (r.endTableId === dragging - 1) { + } else if (r.endTableId === dragging) { return { ...r, endX: props.tables[r.endTableId].x + 15, @@ -160,8 +161,8 @@ export default function Canvas(props) { const x = offset.x - canvasRect.left - 100 * 0.5; const y = offset.y - canvasRect.top - 100 * 0.5; const newTable = { - id: props.tables.length + 1, - name: `Table ${props.tables.length + 1}`, + id: props.tables.length, + name: `Table ${props.tables.length}`, x: x, y: y, fields: [ @@ -178,6 +179,7 @@ export default function Canvas(props) { ], comment: "", indices: [], + color: defaultTableTheme, }; props.setTables((prev) => [...prev, newTable]); props.setCode((prev) => @@ -235,7 +237,7 @@ export default function Canvas(props) { {props.tables.map((table, i) => ( { + const updatedTables = [...props.tables]; + updatedTables[id] = { ...updatedTables[id], color: c }; + props.setTables(updatedTables); + }; + return ( {props.tables.map((t, i) => ( @@ -33,8 +40,8 @@ export default function DiagramOverview(props) { itemKey={`${i}`} > {t.fields.map((f, j) => ( -
-
+ +
- -
+
@@ -152,7 +158,66 @@ export default function DiagramOverview(props) {
- + +
+
Theme
+ +
+
+
+
+ {tableThemes + .slice(0, Math.ceil(tableThemes.length / 2)) + .map((c) => ( + + ))} +
+
+ {tableThemes + .slice(Math.ceil(tableThemes.length / 2)) + .map((c) => ( + + ))} +
+
+ + } + trigger="click" + position="bottomLeft" + showArrow + > + +
diff --git a/src/components/editor_panel.jsx b/src/components/editor_panel.jsx index 3dff824..1b1058a 100644 --- a/src/components/editor_panel.jsx +++ b/src/components/editor_panel.jsx @@ -11,6 +11,7 @@ import { Parser } from "node-sql-parser"; import { Tabs } from "@douyinfe/semi-ui"; import "react-resizable/css/styles.css"; import DiagramOverview from "./diagram_overview"; +import { defaultTableTheme } from "../data/data"; const myTheme = createTheme({ dark: "light", @@ -37,7 +38,7 @@ export default function EditorPanel(props) { ]; const contentList = [
- +
,
@@ -79,8 +80,8 @@ export default function EditorPanel(props) {