Skip to content

Commit 9a2d3da

Browse files
committed
fixed the issue
Signed-off-by: antedotee <[email protected]>
1 parent dbfbc96 commit 9a2d3da

File tree

3 files changed

+22
-40
lines changed

3 files changed

+22
-40
lines changed

frontend/src/components/Layout.tsx

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,11 @@
1-
import { Suspense, lazy, useEffect, useState, useCallback, createContext, useContext } from 'react';
1+
import { Suspense, lazy, useEffect, useState } from 'react';
22
import { Outlet, ScrollRestoration, useLocation } from 'react-router-dom';
33
import { Tooltip } from '@mui/material';
44
import Header from './Header';
55
import useTheme from '../stores/themeStore';
66
import { motion, AnimatePresence } from 'framer-motion';
77
import getThemeStyles from '../lib/theme-utils';
88

9-
// Context for tree view sidebar state
10-
interface TreeViewSidebarContextType {
11-
isTreeViewSidebarCollapsed: boolean;
12-
toggleTreeViewSidebar: () => void;
13-
}
14-
15-
const TreeViewSidebarContext = createContext<TreeViewSidebarContextType | undefined>(undefined);
16-
17-
export const useTreeViewSidebar = () => {
18-
const context = useContext(TreeViewSidebarContext);
19-
if (!context) {
20-
throw new Error('useTreeViewSidebar must be used within a TreeViewSidebarProvider');
21-
}
22-
return context;
23-
};
24-
259
// Lazy load less critical components
2610
const Menu = lazy(() => import('./menu/Menu'));
2711
const Footer = lazy(() => import('./Footer'));
@@ -78,7 +62,6 @@ export function Layout() {
7862
const [isLoading, setIsLoading] = useState(true);
7963
const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false);
8064
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
81-
const [isTreeViewSidebarCollapsed, setIsTreeViewSidebarCollapsed] = useState(true);
8265
const location = useLocation();
8366
const { theme } = useTheme();
8467
const isDark = theme === 'dark';
@@ -107,11 +90,6 @@ export function Layout() {
10790
setIsSidebarCollapsed(!isSidebarCollapsed);
10891
};
10992

110-
// Toggle tree view sidebar collapsed state
111-
const toggleTreeViewSidebar = useCallback(() => {
112-
setIsTreeViewSidebarCollapsed(prev => !prev);
113-
}, []);
114-
11593
// Toggle mobile menu state
11694
const toggleMobileMenu = () => {
11795
setIsMobileMenuOpen(!isMobileMenuOpen);
@@ -288,16 +266,9 @@ export function Layout() {
288266
>
289267
<Suspense fallback={<LoadingPlaceholder />}>
290268
<PageTransition>
291-
<TreeViewSidebarContext.Provider
292-
value={{
293-
isTreeViewSidebarCollapsed,
294-
toggleTreeViewSidebar,
295-
}}
296-
>
297-
<div className="mx-auto max-w-full">
298-
<Outlet />
299-
</div>
300-
</TreeViewSidebarContext.Provider>
269+
<div className="mx-auto max-w-full">
270+
<Outlet />
271+
</div>
301272
</PageTransition>
302273
</Suspense>
303274
</motion.main>

frontend/src/components/TreeViewComponent.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { useState, useCallback, useRef, useEffect, memo } from 'react';
22
import { Box, Alert, Snackbar } from '@mui/material';
33
import useTheme from '../stores/themeStore';
4-
import { useTreeViewSidebar } from './Layout';
54
import ContextDropdown from './ContextDropdown';
65
import CreateOptions from './CreateOptions';
76
import TreeViewHeader from './treeView/TreeViewHeader';
@@ -25,7 +24,6 @@ interface TreeViewComponentProps {
2524

2625
const TreeViewComponent = memo<TreeViewComponentProps>(props => {
2726
const theme = useTheme(state => state.theme);
28-
const { isTreeViewSidebarCollapsed, toggleTreeViewSidebar } = useTreeViewSidebar();
2927

3028
// State management
3129
const [showCreateOptions, setShowCreateOptions] = useState(false);
@@ -39,6 +37,7 @@ const TreeViewComponent = memo<TreeViewComponentProps>(props => {
3937
groupItems?: TreeResourceItem[];
4038
initialTab?: number;
4139
} | null>(null);
40+
const [isCollapsed, setIsCollapsed] = useState<boolean>(false);
4241
const [isExpanded, setIsExpanded] = useState<boolean>(true);
4342
const [isFullscreen, setIsFullscreen] = useState<boolean>(false);
4443
const [filteredContext, setFilteredContext] = useState<string>('all');
@@ -83,7 +82,7 @@ const TreeViewComponent = memo<TreeViewComponentProps>(props => {
8382
getDescendantEdges,
8483
} = useTreeViewData({
8584
filteredContext,
86-
isCollapsed: isTreeViewSidebarCollapsed,
85+
isCollapsed,
8786
isExpanded,
8887
onNodeSelect: handleNodeSelect,
8988
onMenuOpen: handleMenuOpen || (() => {}),
@@ -143,6 +142,11 @@ const TreeViewComponent = memo<TreeViewComponentProps>(props => {
143142
setActiveOption('option1');
144143
}, []);
145144

145+
// Collapse/Expand handlers
146+
const handleToggleCollapse = useCallback(() => {
147+
setIsCollapsed(prev => !prev);
148+
}, []);
149+
146150
const handleExpandAll = useCallback(() => {
147151
setIsExpanded(true);
148152
}, []);
@@ -241,10 +245,10 @@ const TreeViewComponent = memo<TreeViewComponentProps>(props => {
241245
filteredContext={filteredContext}
242246
onCreateWorkload={handleCreateWorkloadClick}
243247
onResourceDataChange={handleResourceDataChange}
244-
onToggleCollapse={toggleTreeViewSidebar}
248+
onToggleCollapse={handleToggleCollapse}
245249
onExpandAll={handleExpandAll}
246250
onCollapseAll={handleCollapseAll}
247-
isCollapsed={isTreeViewSidebarCollapsed}
251+
isCollapsed={isCollapsed}
248252
containerRef={containerRef}
249253
resourceFilters={resourceFilters}
250254
onResourceFiltersChange={handleResourceFiltersChange}

frontend/src/components/wds_topology/ZoomControls.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,17 @@ export const ZoomControls = memo<ZoomControlsProps>(
7373
const [zoomLevel, setZoomLevel] = useState<number>(120);
7474
const [presetMenuAnchor, setPresetMenuAnchor] = useState<null | HTMLElement>(null);
7575
const [hoveredButton, setHoveredButton] = useState<string | null>(null);
76-
const [showControls, setShowControls] = useState<boolean>(true);
76+
const [showControls, setShowControls] = useState<boolean>(() => {
77+
const saved = localStorage.getItem('wds-show-controls');
78+
return saved ? JSON.parse(saved) : false; // Default to false (controls hidden)
79+
});
7780

7881
const toggleControls = () => {
79-
setShowControls(prev => !prev);
82+
setShowControls(prev => {
83+
const newValue = !prev;
84+
localStorage.setItem('wds-show-controls', JSON.stringify(newValue));
85+
return newValue;
86+
});
8087
};
8188
const { setZoom } = useZoomStore();
8289
const { edgeType, setEdgeType } = useEdgeTypeStore();

0 commit comments

Comments
 (0)