@@ -249,6 +249,7 @@ export function PanoramaChart({ isExpanded, onToggleExpanded, showExpandToggle =
249249 const [ basePanorama , setBasePanorama ] = useState < PanoramaResult | null > ( null ) ;
250250 const [ detailPanoramas , setDetailPanoramas ] = useState < PanoramaResult [ ] > ( [ ] ) ;
251251 const [ panoramasReadyEpoch , setPanoramasReadyEpoch ] = useState ( 0 ) ;
252+ const [ panoramaLoading , setPanoramaLoading ] = useState ( false ) ;
252253
253254 const selectedSiteEffective = useMemo ( ( ) => {
254255 if ( ! selectedSite ) return null ;
@@ -353,9 +354,12 @@ export function PanoramaChart({ isExpanded, onToggleExpanded, showExpandToggle =
353354 if ( ! selectedSiteEffective || ! selectedNetwork ) {
354355 setBasePanorama ( null ) ;
355356 setDetailPanoramas ( [ ] ) ;
357+ setPanoramaLoading ( false ) ;
356358 return ;
357359 }
358360
361+ setPanoramaLoading ( true ) ;
362+
359363 const effectiveLink = links [ 0 ]
360364 ? {
361365 ...links [ 0 ] ,
@@ -483,6 +487,7 @@ export function PanoramaChart({ isExpanded, onToggleExpanded, showExpandToggle =
483487 }
484488 setBasePanorama ( result ) ;
485489 setPanoramasReadyEpoch ( Date . now ( ) ) ;
490+ setPanoramaLoading ( false ) ;
486491 } ,
487492 } satisfies LatestOnlyTask ) ;
488493 }
@@ -525,6 +530,7 @@ export function PanoramaChart({ isExpanded, onToggleExpanded, showExpandToggle =
525530 return next . slice ( - 12 ) ;
526531 } ) ;
527532 setPanoramasReadyEpoch ( Date . now ( ) ) ;
533+ setPanoramaLoading ( false ) ;
528534 } ,
529535 } satisfies LatestOnlyTask ) ;
530536 }
@@ -1470,7 +1476,18 @@ export function PanoramaChart({ isExpanded, onToggleExpanded, showExpandToggle =
14701476 ref = { chartHostRef }
14711477 >
14721478 { ! geometry || ! panorama ? (
1473- < div className = "chart-empty" aria-hidden = "true" />
1479+ panoramaLoading ? (
1480+ < div className = "chart-empty chart-loading" >
1481+ < div className = "panorama-loading-indicator" >
1482+ < div className = "map-progress-track panorama-loading-track" >
1483+ < div className = "map-progress-fill-indeterminate" />
1484+ </ div >
1485+ < span className = "panorama-loading-text" > Loading panorama...</ span >
1486+ </ div >
1487+ </ div >
1488+ ) : (
1489+ < div className = "chart-empty" aria-hidden = "true" />
1490+ )
14741491 ) : (
14751492 < >
14761493 < canvas aria-hidden className = "panorama-terrain-canvas" ref = { terrainCanvasRef } />
0 commit comments