@@ -9,12 +9,6 @@ import CellPanel from './CellPanel.js'
99import ContentHeader , { ContentSize } from './ContentHeader.js'
1010import SlidePanel , { SlidePanelConfig } from './SlidePanel.js'
1111
12- enum LoadingState {
13- NotLoaded ,
14- Loading ,
15- Loaded
16- }
17-
1812export type ParquetViewConfig = SlidePanelConfig & RoutesConfig
1913
2014interface ViewerProps {
@@ -32,15 +26,16 @@ interface Content extends ContentSize {
3226 * Parquet file viewer
3327 */
3428export default function ParquetView ( { source, setProgress, setError, config } : ViewerProps ) {
35- const [ loading , setLoading ] = useState < LoadingState > ( LoadingState . NotLoaded )
29+ const [ isLoading , setIsLoading ] = useState < boolean > ( true )
3630 const [ content , setContent ] = useState < Content > ( )
3731 const [ cell , setCell ] = useState < { row : number , col : number } | undefined > ( )
3832
39- const { resolveUrl, requestInit, sourceId } = source
4033 useEffect ( ( ) => {
4134 async function loadParquetDataFrame ( ) {
4235 try {
36+ setIsLoading ( true )
4337 setProgress ( 0.33 )
38+ const { resolveUrl, requestInit } = source
4439 const asyncBuffer = await asyncBufferFromUrl ( { url : resolveUrl , requestInit } )
4540 const from = { url : resolveUrl , byteLength : asyncBuffer . byteLength , requestInit }
4641 setProgress ( 0.66 )
@@ -52,20 +47,12 @@ export default function ParquetView({ source, setProgress, setError, config }: V
5247 } catch ( error ) {
5348 setError ( error as Error )
5449 } finally {
55- setLoading ( LoadingState . Loaded )
50+ setIsLoading ( false )
5651 setProgress ( 1 )
5752 }
5853 }
59- if ( loading === LoadingState . NotLoaded ) {
60- setLoading ( LoadingState . Loading )
61- loadParquetDataFrame ( ) . catch ( ( ) => undefined )
62- }
63- } , [ loading , resolveUrl , requestInit , setError , setProgress ] )
64-
65- // Clear loading state on content change
66- useEffect ( ( ) => {
67- setLoading ( LoadingState . NotLoaded )
68- } , [ source ] )
54+ void loadParquetDataFrame ( )
55+ } , [ setError , setProgress , source ] )
6956
7057 // Close cell view on escape key
7158 useEffect ( ( ) => {
@@ -81,6 +68,7 @@ export default function ParquetView({ source, setProgress, setError, config }: V
8168 return ( ) => { window . removeEventListener ( 'keydown' , handleKeyDown ) }
8269 } , [ cell ] )
8370
71+ const { sourceId } = source
8472 const getCellRouteUrl = useCallback ( ( { col, row } : { col : number , row : number } ) => {
8573 const url = config ?. routes ?. getCellRouteUrl ?.( { sourceId, col, row } )
8674 if ( url ) {
@@ -108,13 +96,13 @@ export default function ParquetView({ source, setProgress, setError, config }: V
10896
10997 const mainContent = < ContentHeader content = { content } headers = { headers } >
11098 { content ?. dataframe && < HighTable
111- cacheKey = { resolveUrl }
99+ cacheKey = { source . resolveUrl }
112100 data = { content . dataframe }
113101 onDoubleClickCell = { onDoubleClickCell }
114102 onMouseDownCell = { onMouseDownCell }
115103 onError = { setError } /> }
116104
117- { loading === LoadingState . Loading && < div className = 'center' > < Spinner /> </ div > }
105+ { isLoading && < div className = 'center' > < Spinner /> </ div > }
118106 </ ContentHeader >
119107
120108 let panelContent
0 commit comments