@@ -11,7 +11,7 @@ import {
1111} from "@chakra-ui/react" ;
1212import { useDuckDb } from "duckdb-wasm-kit" ;
1313import { useEffect , useState } from "react" ;
14- import { LuInfo , LuUpload } from "react-icons/lu" ;
14+ import { LuFilter , LuInfo , LuSearch , LuUpload } from "react-icons/lu" ;
1515import { useStac , useStacDispatch } from "./stac/hooks" ;
1616import type { StacValue } from "./stac/types" ;
1717
@@ -49,14 +49,21 @@ export default function Panel() {
4949 // This should always be true since we set maxFiles to 1
5050 if ( fileUpload . acceptedFiles . length == 1 ) {
5151 const file = fileUpload . acceptedFiles [ 0 ] ;
52- if ( db ) {
53- ( async ( ) => {
54- const buffer = await file . arrayBuffer ( ) ;
55- // TODO do we need to clean up, eventually?
56- db . registerFileBuffer ( file . name , new Uint8Array ( buffer ) ) ;
57- dispatch ( { type : "set-href" , href : file . name } ) ;
58- } ) ( ) ;
59- }
52+ ( async ( ) => {
53+ if ( file . name . endsWith ( ".parquet" ) ) {
54+ if ( db ) {
55+ const buffer = await file . arrayBuffer ( ) ;
56+ // TODO do we need to clean up, eventually?
57+ db . registerFileBuffer ( file . name , new Uint8Array ( buffer ) ) ;
58+ dispatch ( { type : "set-href" , href : file . name } ) ;
59+ }
60+ } else {
61+ const text = await file . text ( ) ;
62+ const value = JSON . parse ( text ) ;
63+ dispatch ( { type : "set-href" } ) ;
64+ dispatch ( { type : "set-value" , value } ) ;
65+ }
66+ } ) ( ) ;
6067 }
6168 } , [ fileUpload . acceptedFiles , db , dispatch ] ) ;
6269
@@ -83,6 +90,12 @@ export default function Panel() {
8390 < Tabs . Trigger value = "value" >
8491 < LuInfo > </ LuInfo >
8592 </ Tabs . Trigger >
93+ < Tabs . Trigger value = "search" disabled = { true } >
94+ < LuSearch > </ LuSearch >
95+ </ Tabs . Trigger >
96+ < Tabs . Trigger value = "filter" disabled = { true } >
97+ < LuFilter > </ LuFilter >
98+ </ Tabs . Trigger >
8699 < Tabs . Trigger value = "upload" >
87100 < LuUpload > </ LuUpload >
88101 </ Tabs . Trigger >
0 commit comments