From dafa8747a039c120ef2e0c7395319ba50d2019c8 Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:49:16 +0300 Subject: [PATCH] Add setting to show field summary --- src/components/control_panel.jsx | 6 ++ src/components/table.jsx | 146 +++++++++++++++++-------------- src/pages/editor.jsx | 1 + 3 files changed, 85 insertions(+), 68 deletions(-) diff --git a/src/components/control_panel.jsx b/src/components/control_panel.jsx index 64f89eb..fee08d0 100644 --- a/src/components/control_panel.jsx +++ b/src/components/control_panel.jsx @@ -178,6 +178,12 @@ export default function ControlPanel(props) { setSettings((prev) => ({ ...prev, strictMode: !prev.strictMode })); }, }, + "Field summary": { + children: [], + function: () => { + setSettings((prev) => ({ ...prev, showFieldSummary: !prev.showFieldSummary })); + }, + }, "Reset view": { children: [], function: () => {}, diff --git a/src/components/table.jsx b/src/components/table.jsx index 0babc2b..5afa7fd 100644 --- a/src/components/table.jsx +++ b/src/components/table.jsx @@ -29,7 +29,12 @@ import { SideSheet, Toast, } from "@douyinfe/semi-ui"; -import { LayoutContext, TabContext, TableContext } from "../pages/editor"; +import { + LayoutContext, + SettingsContext, + TabContext, + TableContext, +} from "../pages/editor"; export default function Table(props) { const [isHovered, setIsHovered] = useState(false); @@ -38,6 +43,7 @@ export default function Table(props) { const { layout } = useContext(LayoutContext); const { setTables } = useContext(TableContext); const { tab, setTab } = useContext(TabContext); + const { settings } = useContext(SettingsContext); const height = props.tableData.fields.length * 36 + 50 + 3; @@ -199,7 +205,7 @@ export default function Table(props) { )} {props.tableData.fields.map((e, i) => { - return ( + return settings.showFieldSummary ? ( -
{ - setHoveredField(i); - props.setOnRect({ - tableId: props.tableData.id, - field: i, - }); - }} - onMouseLeave={() => { - setHoveredField(-1); - }} - > -
- - {e.name} -
-
- {hoveredField === i ? ( - - ) : ( - e.type - )} -
-
+ {field(e, i)}
+ ) : ( + field(e, i) ); })} @@ -748,4 +691,71 @@ export default function Table(props) { ); + + function field(fieldData, index) { + return ( +
{ + setHoveredField(index); + props.setOnRect({ + tableId: props.tableData.id, + field: index, + }); + }} + onMouseLeave={() => { + setHoveredField(-1); + }} + > +
+ + {fieldData.name} +
+
+ {hoveredField === index ? ( + + ) : ( + fieldData.type + )} +
+
+ ); + } } diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index 7e1d5e5..c1834bf 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -38,6 +38,7 @@ export default function Editor(props) { }); const [settings, setSettings] = useState({ strictMode: false, + showFieldSummary: true, }); const dragHandler = (e) => {