fix tab error
This commit is contained in:
parent
8da14317e5
commit
246aad77d0
@ -1,4 +1,4 @@
|
|||||||
import { React, useState } from "react";
|
import { React, useContext } from "react";
|
||||||
import CodeMirror from "@uiw/react-codemirror";
|
import CodeMirror from "@uiw/react-codemirror";
|
||||||
import { createTheme } from "@uiw/codemirror-themes";
|
import { createTheme } from "@uiw/codemirror-themes";
|
||||||
import { sql } from "@codemirror/lang-sql";
|
import { sql } from "@codemirror/lang-sql";
|
||||||
@ -10,6 +10,8 @@ import TableOverview from "./table_overview";
|
|||||||
import ReferenceOverview from "./reference_overview";
|
import ReferenceOverview from "./reference_overview";
|
||||||
import AreaOverview from "./area_overview";
|
import AreaOverview from "./area_overview";
|
||||||
// import { TableContext } from "../pages/editor";
|
// import { TableContext } from "../pages/editor";
|
||||||
|
import { Tab } from "../data/data";
|
||||||
|
import { TabContext } from "../pages/editor";
|
||||||
|
|
||||||
const myTheme = createTheme({
|
const myTheme = createTheme({
|
||||||
dark: "light",
|
dark: "light",
|
||||||
@ -26,16 +28,15 @@ const myTheme = createTheme({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const EditorPanel = (props) => {
|
const EditorPanel = (props) => {
|
||||||
const [tab, setTab] = useState("1");
|
|
||||||
// const map = useRef(new Map());
|
// const map = useRef(new Map());
|
||||||
// const {tables, setTables} = useContext(TableContext);
|
const {tab, setTab} = useContext(TabContext);
|
||||||
|
|
||||||
const tabList = [
|
const tabList = [
|
||||||
{ tab: "Tables", itemKey: "1" },
|
{ tab: "Tables", itemKey: Tab.tables },
|
||||||
{ tab: "Relationships", itemKey: "2" },
|
{ tab: "Relationships", itemKey: Tab.relationships },
|
||||||
{ tab: "Subject Areas", itemKey: "3" },
|
{ tab: "Subject Areas", itemKey: Tab.subject_areas },
|
||||||
{ tab: "Shapes", itemKey: "4" },
|
{ tab: "Shapes", itemKey: Tab.shapes },
|
||||||
{ tab: "Editor", itemKey: "5" },
|
{ tab: "Editor", itemKey: Tab.editor },
|
||||||
];
|
];
|
||||||
const contentList = [
|
const contentList = [
|
||||||
<TableOverview
|
<TableOverview
|
||||||
@ -61,6 +62,7 @@ const EditorPanel = (props) => {
|
|||||||
<div style={{ width: `${props.width}px` }} className="overflow-y-auto">
|
<div style={{ width: `${props.width}px` }} className="overflow-y-auto">
|
||||||
<Tabs
|
<Tabs
|
||||||
type="card"
|
type="card"
|
||||||
|
activeKey={tab}
|
||||||
tabList={tabList}
|
tabList={tabList}
|
||||||
onChange={(key) => {
|
onChange={(key) => {
|
||||||
setTab(key);
|
setTab(key);
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import { React, useState, useContext } from "react";
|
import { React, useState, useContext } from "react";
|
||||||
import { sqlDataTypes, tableThemes, defaultTableTheme } from "../data/data";
|
import {
|
||||||
|
sqlDataTypes,
|
||||||
|
tableThemes,
|
||||||
|
defaultTableTheme,
|
||||||
|
Tab,
|
||||||
|
} from "../data/data";
|
||||||
import {
|
import {
|
||||||
IconEdit,
|
IconEdit,
|
||||||
IconPlus,
|
IconPlus,
|
||||||
@ -24,7 +29,7 @@ import {
|
|||||||
SideSheet,
|
SideSheet,
|
||||||
Toast,
|
Toast,
|
||||||
} from "@douyinfe/semi-ui";
|
} from "@douyinfe/semi-ui";
|
||||||
import { LayoutContext, TableContext } from "../pages/editor";
|
import { LayoutContext, TabContext, TableContext } from "../pages/editor";
|
||||||
|
|
||||||
export default function Table(props) {
|
export default function Table(props) {
|
||||||
const [isHovered, setIsHovered] = useState(false);
|
const [isHovered, setIsHovered] = useState(false);
|
||||||
@ -32,6 +37,7 @@ export default function Table(props) {
|
|||||||
const [visible, setVisible] = useState(false);
|
const [visible, setVisible] = useState(false);
|
||||||
const { layout } = useContext(LayoutContext);
|
const { layout } = useContext(LayoutContext);
|
||||||
const { setTables } = useContext(TableContext);
|
const { setTables } = useContext(TableContext);
|
||||||
|
const { tab, setTab } = useContext(TabContext);
|
||||||
|
|
||||||
const height = props.tableData.fields.length * 36 + 50 + 3;
|
const height = props.tableData.fields.length * 36 + 50 + 3;
|
||||||
|
|
||||||
@ -112,6 +118,8 @@ export default function Table(props) {
|
|||||||
if (!layout.sidebar) {
|
if (!layout.sidebar) {
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
} else {
|
} else {
|
||||||
|
setTab(Tab.tables);
|
||||||
|
if (tab !== Tab.tables) return;
|
||||||
props.setSelectedTable(`${props.tableData.id}`);
|
props.setSelectedTable(`${props.tableData.id}`);
|
||||||
document
|
document
|
||||||
.getElementById(`scroll_table_${props.tableData.id}`)
|
.getElementById(`scroll_table_${props.tableData.id}`)
|
||||||
|
@ -57,6 +57,14 @@ const Constraint = {
|
|||||||
setDefault: "Set default",
|
setDefault: "Set default",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const Tab = {
|
||||||
|
tables: "1",
|
||||||
|
relationships: "2",
|
||||||
|
subject_areas: "3",
|
||||||
|
shapes: "4",
|
||||||
|
editor: "5",
|
||||||
|
};
|
||||||
|
|
||||||
export {
|
export {
|
||||||
bgBlue,
|
bgBlue,
|
||||||
sqlDataTypes,
|
sqlDataTypes,
|
||||||
@ -64,4 +72,5 @@ export {
|
|||||||
defaultTableTheme,
|
defaultTableTheme,
|
||||||
Cardinality,
|
Cardinality,
|
||||||
Constraint,
|
Constraint,
|
||||||
|
Tab
|
||||||
};
|
};
|
||||||
|
@ -5,10 +5,12 @@ import { DndProvider } from "react-dnd";
|
|||||||
import { HTML5Backend } from "react-dnd-html5-backend";
|
import { HTML5Backend } from "react-dnd-html5-backend";
|
||||||
import Canvas from "../components/canvas";
|
import Canvas from "../components/canvas";
|
||||||
import EditorPanel from "../components/editor_panel";
|
import EditorPanel from "../components/editor_panel";
|
||||||
|
import { Tab } from "../data/data";
|
||||||
|
|
||||||
export const LayoutContext = createContext();
|
export const LayoutContext = createContext();
|
||||||
export const TableContext = createContext();
|
export const TableContext = createContext();
|
||||||
export const AreaContext = createContext();
|
export const AreaContext = createContext();
|
||||||
|
export const TabContext = createContext();
|
||||||
|
|
||||||
export default function Editor(props) {
|
export default function Editor(props) {
|
||||||
const [code, setCode] = useState("");
|
const [code, setCode] = useState("");
|
||||||
@ -18,6 +20,7 @@ export default function Editor(props) {
|
|||||||
const [resize, setResize] = useState(false);
|
const [resize, setResize] = useState(false);
|
||||||
const [width, setWidth] = useState(340);
|
const [width, setWidth] = useState(340);
|
||||||
const [selectedTable, setSelectedTable] = useState("");
|
const [selectedTable, setSelectedTable] = useState("");
|
||||||
|
const [tab, setTab] = useState(Tab.tables);
|
||||||
const [layout, setLayout] = useState({
|
const [layout, setLayout] = useState({
|
||||||
header: true,
|
header: true,
|
||||||
sidebar: true,
|
sidebar: true,
|
||||||
@ -37,9 +40,9 @@ export default function Editor(props) {
|
|||||||
if (w > 340) setWidth(w);
|
if (w > 340) setWidth(w);
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(() => {
|
||||||
document.title = "Editor";
|
document.title = "Editor";
|
||||||
}, [])
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<LayoutContext.Provider value={{ layout, setLayout }}>
|
<LayoutContext.Provider value={{ layout, setLayout }}>
|
||||||
@ -47,39 +50,41 @@ export default function Editor(props) {
|
|||||||
value={{ tables, setTables, relationships, setRelationships }}
|
value={{ tables, setTables, relationships, setRelationships }}
|
||||||
>
|
>
|
||||||
<AreaContext.Provider value={{ areas, setAreas }}>
|
<AreaContext.Provider value={{ areas, setAreas }}>
|
||||||
<div className="h-[100vh] overflow-hidden">
|
<TabContext.Provider value={{ tab, setTab }}>
|
||||||
<ControlPanel />
|
<div className="h-[100vh] overflow-hidden">
|
||||||
<div
|
<ControlPanel />
|
||||||
className={
|
<div
|
||||||
layout.header
|
className={
|
||||||
? `flex h-[calc(100vh-123.93px)]`
|
layout.header
|
||||||
: `flex h-[calc(100vh-51.97px)]`
|
? `flex h-[calc(100vh-123.93px)]`
|
||||||
}
|
: `flex h-[calc(100vh-51.97px)]`
|
||||||
onMouseUp={() => setResize(false)}
|
}
|
||||||
onMouseMove={dragHandler}
|
onMouseUp={() => setResize(false)}
|
||||||
>
|
onMouseMove={dragHandler}
|
||||||
<DndProvider backend={HTML5Backend}>
|
>
|
||||||
{layout.sidebar && (
|
<DndProvider backend={HTML5Backend}>
|
||||||
<EditorPanel
|
{layout.sidebar && (
|
||||||
|
<EditorPanel
|
||||||
|
code={code}
|
||||||
|
setCode={setCode}
|
||||||
|
resize={resize}
|
||||||
|
setResize={setResize}
|
||||||
|
width={width}
|
||||||
|
selectedTable={selectedTable}
|
||||||
|
setSelectedTable={setSelectedTable}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<Canvas
|
||||||
code={code}
|
code={code}
|
||||||
setCode={setCode}
|
setCode={setCode}
|
||||||
resize={resize}
|
|
||||||
setResize={setResize}
|
|
||||||
width={width}
|
|
||||||
selectedTable={selectedTable}
|
selectedTable={selectedTable}
|
||||||
setSelectedTable={setSelectedTable}
|
setSelectedTable={setSelectedTable}
|
||||||
/>
|
/>
|
||||||
)}
|
</DndProvider>
|
||||||
<Canvas
|
{layout.services && <Sidebar />}
|
||||||
code={code}
|
</div>
|
||||||
setCode={setCode}
|
|
||||||
selectedTable={selectedTable}
|
|
||||||
setSelectedTable={setSelectedTable}
|
|
||||||
/>
|
|
||||||
</DndProvider>
|
|
||||||
{layout.services && <Sidebar />}
|
|
||||||
</div>
|
</div>
|
||||||
</div>{" "}
|
</TabContext.Provider>
|
||||||
</AreaContext.Provider>
|
</AreaContext.Provider>
|
||||||
</TableContext.Provider>
|
</TableContext.Provider>
|
||||||
</LayoutContext.Provider>
|
</LayoutContext.Provider>
|
||||||
|
Loading…
Reference in New Issue
Block a user