From 76e1f2d62ed2c5aa77c71e79066be3748785a40c Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 14 Jan 2025 13:47:42 -0500 Subject: [PATCH] include ui mode toggle in navbar (#819) --- ui100/src/ApiConsole.tsx | 23 +++++++++++++++++------ ui100/src/NavBar.tsx | 25 ++++++++++++++++++------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/ui100/src/ApiConsole.tsx b/ui100/src/ApiConsole.tsx index 9637ad31f..fcec2284c 100644 --- a/ui100/src/ApiConsole.tsx +++ b/ui100/src/ApiConsole.tsx @@ -8,7 +8,7 @@ import AccountPanel from "./AccountPanel.tsx"; import EnvironmentPanel from "./EnvironmentPanel.tsx"; import SharePanel from "./SharePanel.tsx"; import AccessPanel from "./AccessPanel.tsx"; -import useStore, {Sparkdata} from "./model/store.ts"; +import useStore from "./model/store.ts"; import TabularView from "./TabularView.tsx"; import {Node} from "@xyflow/react"; @@ -22,7 +22,7 @@ const ApiConsole = ({ logout }: ApiConsoleProps) => { const updateGraph = useStore((state) => state.updateGraph); const oldGraph = useRef(graph); const sparkdata = useStore((state) => state.sparkdata); - const sparkdataRef = useRef>(); + const sparkdataRef = useRef>(); sparkdataRef.current = sparkdata; const updateSparkdata = useStore((state) => state.updateSparkdata); const nodes = useStore((state) => state.nodes); @@ -33,12 +33,14 @@ const ApiConsole = ({ logout }: ApiConsoleProps) => { const selectedNode = useStore((state) => state.selectedNode); const [mainPanel, setMainPanel] = useState(); const [sidePanel, setSidePanel] = useState(null); + const [visualizerEnabled, setVisualizerEnabled] = useState(true); - let showVisualizer = true; + let visualizer = true; const handleKeyPress = useCallback((event) => { if(event.ctrlKey === true && event.key === '`') { - showVisualizer = !showVisualizer; - if(showVisualizer) { + setVisualizerEnabled(!visualizer); + visualizer = !visualizer; + if(visualizer) { setMainPanel(); } else { setMainPanel(); @@ -46,6 +48,15 @@ const ApiConsole = ({ logout }: ApiConsoleProps) => { } }, []); + useEffect(() => { + visualizer = visualizerEnabled; + if(visualizer) { + setMainPanel(); + } else { + setMainPanel(); + } + }, [visualizerEnabled]); + useEffect(() => { document.addEventListener('keydown', handleKeyPress); return () => { @@ -176,7 +187,7 @@ const ApiConsole = ({ logout }: ApiConsoleProps) => { return (
- + {mainPanel} diff --git a/ui100/src/NavBar.tsx b/ui100/src/NavBar.tsx index 4ff997c8c..64b3dc28b 100644 --- a/ui100/src/NavBar.tsx +++ b/ui100/src/NavBar.tsx @@ -1,20 +1,24 @@ -import {AppBar, Box, Button, Grid2, IconButton, Toolbar, Typography} from "@mui/material"; -import MenuIcon from "@mui/icons-material/Menu"; +import {AppBar, Box, Button, Grid2, Toolbar, Tooltip, Typography} from "@mui/material"; import LogoutIcon from "@mui/icons-material/Logout"; +import VisualizerIcon from "@mui/icons-material/Hub"; +import TabularIcon from "@mui/icons-material/TableRows"; import zroket from "./assets/zrok-1.0.0-rocket-green.svg"; interface NavBarProps { logout: () => void; + visualizer: boolean; + toggleMode: (boolean) => void; } -const NavBar = ({ logout }: NavBarProps) => { +const NavBar = ({ logout, visualizer, toggleMode }: NavBarProps) => { + const handleClick = () => { + toggleMode(!visualizer); + } + return ( - - - @@ -27,7 +31,14 @@ const NavBar = ({ logout }: NavBarProps) => { - + + + + + + + +