From 2918bca74be474c67815c0bd1746203ab18015a3 Mon Sep 17 00:00:00 2001 From: 2427021 <s.a.vink@students.uu.nl> Date: Fri, 29 Mar 2024 17:47:39 +0100 Subject: [PATCH] feat(visManager): full screen for vis --- apps/web/src/app/app.tsx | 32 +++++++++++++++++++----- libs/shared/lib/vis/components/bar.tsx | 5 ++-- libs/shared/lib/vis/components/panel.tsx | 4 +-- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/apps/web/src/app/app.tsx b/apps/web/src/app/app.tsx index 867825d78..477a0f18c 100644 --- a/apps/web/src/app/app.tsx +++ b/apps/web/src/app/app.tsx @@ -59,6 +59,7 @@ export function App(props: App) { const [authCheck, setAuthCheck] = useState(false); const [tab, setTab] = useState<SideNavTab>('Schema'); + const [visFullSize, setVisFullSize] = useState<boolean>(true); return ( <div className="h-screen w-screen overflow-clip"> @@ -114,14 +115,33 @@ export function App(props: App) { </div> ) : null} <div className="h-full w-full flex-grow"> - <Resizable divisorSize={3} horizontal={false}> + {visFullSize ? ( <div className="w-full h-full border"> - <VisualizationPanel manager={manager} /> + <VisualizationPanel + manager={manager} + fullSize={() => { + setVisFullSize(!visFullSize); + tab === undefined && setTab('Schema'); + tab !== undefined && setTab(undefined); + }} + /> </div> - <div className="w-full h-full border"> - <QueryBuilder onRunQuery={runQuery} /> - </div> - </Resizable> + ) : ( + <Resizable divisorSize={3} horizontal={false}> + <div className="w-full h-full border"> + <VisualizationPanel + manager={manager} + fullSize={() => { + setVisFullSize(!visFullSize); + setTab(undefined); + }} + /> + </div> + <div className="w-full h-full border"> + <QueryBuilder onRunQuery={runQuery} /> + </div> + </Resizable> + )} </div> </Resizable> <div className="h-full w-60 ml-1"> diff --git a/libs/shared/lib/vis/components/bar.tsx b/libs/shared/lib/vis/components/bar.tsx index a2c1df163..42abaaeb3 100644 --- a/libs/shared/lib/vis/components/bar.tsx +++ b/libs/shared/lib/vis/components/bar.tsx @@ -9,9 +9,10 @@ import { VisualizationManagerType } from '../hooks'; type Props = { manager: VisualizationManagerType; + fullSize: () => void; }; -export default function VisualizationBar({ manager }: Props) { +export default function VisualizationBar({ manager, fullSize }: Props) { const handleDragStart = (e: React.DragEvent<HTMLDivElement>, visId: string) => { e.dataTransfer.setData('text/plain', visId); }; @@ -97,7 +98,7 @@ export default function VisualizationBar({ manager }: Props) { <TooltipProvider delayDuration={0}> <Tooltip> <TooltipTrigger> - <Button type="secondary" variant="ghost" size="xs" iconComponent={<Fullscreen />} onClick={() => {}} /> + <Button type="secondary" variant="ghost" size="xs" iconComponent={<Fullscreen />} onClick={fullSize} /> </TooltipTrigger> <TooltipContent side={'bottom'}> <p>Full screen</p> diff --git a/libs/shared/lib/vis/components/panel.tsx b/libs/shared/lib/vis/components/panel.tsx index 1866be585..fdcb3c782 100644 --- a/libs/shared/lib/vis/components/panel.tsx +++ b/libs/shared/lib/vis/components/panel.tsx @@ -4,7 +4,7 @@ import VisualizationBar from './bar'; import { VisualizationManagerType } from '../hooks'; import { Recommender, NoData, Querying } from '../views'; -export const VisualizationPanel = ({ manager }: { manager: VisualizationManagerType }) => { +export const VisualizationPanel = ({ manager, fullSize }: { manager: VisualizationManagerType; fullSize: () => void }) => { const query = useQuerybuilderGraph(); const graphQueryResult = useGraphQueryResult(); @@ -21,7 +21,7 @@ export const VisualizationPanel = ({ manager }: { manager: VisualizationManagerT return ( <div className="vis-panel h-full w-full"> - <VisualizationBar manager={manager} /> + <VisualizationBar manager={manager} fullSize={fullSize} /> <div className="h-full w-full overflow-y-auto" style={graphQueryResult.nodes.length === 0 ? { overflow: 'hidden' } : {}}> {renderContent()} </div> -- GitLab