diff --git a/src/App.jsx b/src/App.jsx index d654d85..6f71a25 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1499,7 +1499,15 @@ function ProgramComparePopup({ programs, comparisons, onComparisonChange, onClos ); } -function RelationTreePanel({ programs, onProgramClick, onOpenRelationPopup, sidebarWidth, onSidebarWidthChange }) { +function RelationTreePanel({ + programs, + onProgramClick, + onOpenRelationPopup, + onOpenMapWindow, + sidebarWidth, + onSidebarWidthChange, + fullPage = false +}) { const [expandedProgramIds, setExpandedProgramIds] = useState(() => new Set(programs.map((program) => program.id))); const programMap = Object.fromEntries(programs.map((program) => [program.id, program])); const relations = programs.flatMap((program) => @@ -1536,14 +1544,14 @@ function RelationTreePanel({ programs, onProgramClick, onOpenRelationPopup, side const miniSideLaneWidth = 96; const sidebarSizes = [280, 420, 560]; const resolvedSidebarWidth = sidebarWidth ?? sidebarSizes[0]; - const miniViewportWidth = Math.max(230, resolvedSidebarWidth - 32); + const miniViewportWidth = Math.max(230, fullPage ? 0 : resolvedSidebarWidth - 32); const miniMaxLevelCount = Math.max(1, ...graphLevels.map((level) => level?.length ?? 0)); const miniGraphWidth = Math.max( - 560, + fullPage ? 1120 : 560, miniPadding * 2 + miniSideLaneWidth + miniMaxLevelCount * miniNodeWidth + Math.max(0, miniMaxLevelCount - 1) * miniColumnGap ); const miniGraphHeight = Math.max( - 660, + fullPage ? 720 : 660, miniPadding * 2 + graphLevels.length * miniNodeHeight + Math.max(0, graphLevels.length - 1) * miniRowGap ); const miniNodePositions = Object.fromEntries( @@ -1560,9 +1568,8 @@ function RelationTreePanel({ programs, onProgramClick, onOpenRelationPopup, side ]); }) ); - const mapOffset = Math.max(0, Math.round((miniGraphWidth - miniViewportWidth) / 2)); + const mapOffset = fullPage ? 0 : Math.max(0, Math.round((miniGraphWidth - miniViewportWidth) / 2)); const canShrinkSidebar = resolvedSidebarWidth > sidebarSizes[0]; - const canGrowSidebar = resolvedSidebarWidth < sidebarSizes[sidebarSizes.length - 1]; const setSidebarSize = (size) => { onSidebarWidthChange?.(size); }; @@ -1651,24 +1658,26 @@ function RelationTreePanel({ programs, onProgramClick, onOpenRelationPopup, side }; return ( -