From ce92a35c9fb7e73c60d8bd4003aa8c242ef319d2 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:48:53 +0300 Subject: [PATCH] edit table sidesheet --- src/components/canvas.jsx | 2 + src/components/control_panel.jsx | 11 +- src/components/editor_panel.jsx | 9 +- src/components/table.jsx | 527 ++++++++++++++++++++++++++++-- src/components/table_overview.jsx | 12 +- src/index.css | 39 +++ src/pages/editor.jsx | 6 +- 7 files changed, 565 insertions(+), 41 deletions(-) diff --git a/src/components/canvas.jsx b/src/components/canvas.jsx index e0d859f..bc2a92a 100644 --- a/src/components/canvas.jsx +++ b/src/components/canvas.jsx @@ -365,6 +365,8 @@ export default function Canvas(props) { onMouseDown={(e) => handleMouseDownRect(e, table.id, ObjectType.TABLE) } + selectedTable={props.selectedTable} + setSelectedTable={props.setSelectedTable} /> ))} {linking && ( diff --git a/src/components/control_panel.jsx b/src/components/control_panel.jsx index 9073f41..886f511 100644 --- a/src/components/control_panel.jsx +++ b/src/components/control_panel.jsx @@ -18,6 +18,7 @@ import { Form, Image, Modal, + Spin, } from "@douyinfe/semi-ui"; import { toPng, toJpeg, toSvg } from "html-to-image"; import { saveAs } from "file-saver"; @@ -31,7 +32,7 @@ export default function ControlPanel(props) { `diagram_${new Date().toISOString()}` ); const [extension, setExtension] = useState(""); - const {layout, setLayout} = useContext(LayoutContext); + const { layout, setLayout } = useContext(LayoutContext); const menu = { File: { @@ -364,7 +365,13 @@ export default function ControlPanel(props) { cancelText="Cancel" width={470} > - Diagram + {dataUrl !== "" || dataUrl ? ( + Diagram + ) : ( +
+ +
+ )}
{ const [tab, setTab] = useState("1"); // const map = useRef(new Map()); // const {tables, setTables} = useContext(TableContext); - const {areas, setAreas} = useContext(AreaContext); + const { areas, setAreas } = useContext(AreaContext); const tabList = [ { tab: "Tables", itemKey: "1" }, @@ -39,8 +39,11 @@ const EditorPanel = (props) => { { tab: "Editor", itemKey: "4" }, ]; const contentList = [ - , - , + , + , , { + setTables((prev) => + prev.map((table, i) => { + if (tid === i) { + return { + ...table, + fields: table.fields.map((field, j) => + fid === j ? { ...field, ...updatedValues } : field + ), + }; + } + return table; + }) + ); + }; + + const updateTable = (tid, updatedValues) => { + setTables((prev) => + prev.map((table, i) => { + if (tid === i) { + return { + ...table, + ...updatedValues, + }; + } + return table; + }) + ); + }; + return ( setVisible(true)} + onClick={() => { + if (!layout.sidebar) { + setVisible(true); + } else { + props.setSelectedTable(`${props.tableData.id}`); + document + .getElementById(`scroll_table_${props.tableData.id}`) + .scrollIntoView({ behavior: "smooth" }); + } + }} > + + + + updatedField(props.tableData.id, j, value.values) + } + > + + +
+ + + updatedField(props.tableData.id, j, { + [checkedValues.target.value]: + checkedValues.target.checked, + }) + } + > +
+
+ + + updatedField(props.tableData.id, j, { + [checkedValues.target.value]: + checkedValues.target.checked, + }) + } + > +
+ + + + + } + trigger="click" + position="rightTop" + showArrow + > + +
+ + + + ))} + {props.tableData.indices.length > 0 && ( + +
Indices
+ {props.tableData.indices.map((idx, k) => ( +
+