diff --git a/lightrag_webui/src/components/graph/GraphControl.tsx b/lightrag_webui/src/components/graph/GraphControl.tsx index 5e346e0c..74b1168f 100644 --- a/lightrag_webui/src/components/graph/GraphControl.tsx +++ b/lightrag_webui/src/components/graph/GraphControl.tsx @@ -48,24 +48,21 @@ const GraphControl = ({ disableHoverEffect }: { disableHoverEffect?: boolean }) */ useEffect(() => { if (sigmaGraph && sigma) { - // 确保 sigma 实例内部的 graph 引用被更新 + // Ensure sigma binding to sigmaGraph try { - // 尝试直接设置 sigma 实例的 graph 引用 if (typeof sigma.setGraph === 'function') { sigma.setGraph(sigmaGraph as unknown as AbstractGraph); - console.log('Directly set graph on sigma instance'); + console.log('Binding graph to sigma instance'); } else { - // 如果 setGraph 方法不存在,尝试直接设置 graph 属性 (sigma as any).graph = sigmaGraph; - console.log('Set graph property on sigma instance'); + console.warn('Simgma missing setGraph function, set graph property directly'); } } catch (error) { console.error('Error setting graph on sigma instance:', error); } - // 应用布局 assignLayout(); - console.log('Layout applied to graph'); + console.log('Initial layout applied to graph'); } }, [sigma, sigmaGraph, assignLayout, maxIterations]) diff --git a/lightrag_webui/src/components/graph/GraphSearch.tsx b/lightrag_webui/src/components/graph/GraphSearch.tsx index 0570acf3..c03a2467 100644 --- a/lightrag_webui/src/components/graph/GraphSearch.tsx +++ b/lightrag_webui/src/components/graph/GraphSearch.tsx @@ -93,7 +93,7 @@ export const GraphSearchInput = ({ const loadOptions = useCallback( async (query?: string): Promise => { if (onFocus) onFocus(null) - + // Safety checks to prevent crashes if (!graph || !searchEngine) { // Reset cache to ensure fresh search engine initialization on next render diff --git a/lightrag_webui/src/components/graph/ZoomControl.tsx b/lightrag_webui/src/components/graph/ZoomControl.tsx index 67ca53ba..5739ea67 100644 --- a/lightrag_webui/src/components/graph/ZoomControl.tsx +++ b/lightrag_webui/src/components/graph/ZoomControl.tsx @@ -22,10 +22,10 @@ const ZoomControl = () => { // First clear any custom bounding box and refresh sigma.setCustomBBox(null) sigma.refresh() - + // Get graph after refresh const graph = sigma.getGraph() - + // Check if graph has nodes before accessing them if (!graph || graph.nodes().length === 0) { reset() @@ -35,7 +35,7 @@ const ZoomControl = () => { // Get container dimensions for aspect ratio const container = sigma.getContainer() const containerWidth = container.offsetWidth - const containerHeight = container.offsetHeight + const containerHeight = container.offsetHeight console.log('Container W:', containerWidth, 'H:', containerHeight) // Get all node positions @@ -43,24 +43,24 @@ const ZoomControl = () => { x: graph.getNodeAttribute(node, 'x'), y: graph.getNodeAttribute(node, 'y') })) - + // Calculate bounding box const minX = Math.min(...nodePositions.map(pos => pos.x)) const maxX = Math.max(...nodePositions.map(pos => pos.x)) const minY = Math.min(...nodePositions.map(pos => pos.y)) const maxY = Math.max(...nodePositions.map(pos => pos.y)) - + // Calculate graph dimensions with minimal padding const width = maxX - minX const height = maxY - minY const padding = Math.max(width, height) * 0.05 console.log('Graph W:', Math.round(width*100)/100, 'H:', Math.round(height*100)/100) - + // Calculate base scale const scale = Math.min( containerWidth / (width + padding * 2), containerHeight / (height + padding * 2) - ) + ) // Apply scaling factor (just don't know why) const ratio = (1 / scale) * 10 diff --git a/lightrag_webui/src/hooks/useLightragGraph.tsx b/lightrag_webui/src/hooks/useLightragGraph.tsx index bf727138..73ac363f 100644 --- a/lightrag_webui/src/hooks/useLightragGraph.tsx +++ b/lightrag_webui/src/hooks/useLightragGraph.tsx @@ -577,7 +577,7 @@ const useLightrangeGraph = () => { // Update the dynamic edge map and invalidate search cache rawGraph.buildDynamicMap(); - + // Force search engine rebuild by invalidating cache searchCache.graph = null; searchCache.searchEngine = null; @@ -724,7 +724,7 @@ const useLightrangeGraph = () => { // Rebuild the dynamic edge map and invalidate search cache rawGraph.buildDynamicMap(); - + // Force search engine rebuild by invalidating cache searchCache.graph = null; searchCache.searchEngine = null;