11"use client" ;
22
33import React , { SetStateAction , useEffect , useState , ReactNode } from 'react' ;
4- import { useGlobalStore } from '@/utils/GlobalStates' ;
4+ import { useGlobalStore , useZarrStore } from '@/utils/GlobalStates' ;
55import { useShallow } from 'zustand/shallow' ;
66import { Input } from '../input' ;
77import { Button } from '../button' ;
88import { TbDatabasePlus } from "react-icons/tb" ;
99import { TbVariable } from "react-icons/tb" ;
1010import LocalZarr from './LocalZarr' ;
11+ import LocalNetCDF from './LocalNetCDF' ;
1112import { Popover , PopoverTrigger , PopoverContent } from "@/components/ui/popover" ;
1213import {
1314 Tooltip ,
@@ -19,6 +20,8 @@ import {
1920 DialogContent ,
2021 DialogTitle ,
2122} from "@/components/ui/dialog" ;
23+ import { Switcher } from '../Switcher' ;
24+
2225
2326const ZARR_STORES = {
2427 ESDC : 'https://s3.bgc-jena.mpg.de:9000/esdl-esdc-v3.0.2/esdc-16d-2.5deg-46x72x1440-3.0.2.zarr' ,
@@ -94,6 +97,9 @@ const Dataset = ({setOpenVariables} : {setOpenVariables: React.Dispatch<React.Se
9497 const [ showDescriptionDialog , setShowDescriptionDialog ] = useState < boolean > ( false )
9598 const [ openDescriptionPopover , setOpenDescriptionPopover ] = useState < boolean > ( false )
9699 const [ isSafari , setIsSafari ] = useState < boolean > ( false )
100+ const { useNC} = useZarrStore ( useShallow ( state => ( {
101+ useNC :state . useNC
102+ } ) ) )
97103
98104 const { initStore, setInitStore } = useGlobalStore (
99105 useShallow ( ( state ) => ( {
@@ -248,17 +254,25 @@ const Dataset = ({setOpenVariables} : {setOpenVariables: React.Dispatch<React.Se
248254 >
249255 Local
250256 </ DatasetOption >
251- { showLocalInput && (
257+ { showLocalInput &&
252258 < div className = "mt-2" >
253- { isSafari ? (
259+ { isSafari ?
254260 < div className = "p-3 rounded-md border border-yellow-600 text-tiny max-w-[300px]" >
255261 < strong > Local folder upload is not supported in Safari.</ strong > Please use Chrome, Firefox, or Edge instead.
256262 </ div >
257- ) : (
258- < LocalZarr setShowLocal = { setShowLocalInput } setOpenVariables = { popoverSide === 'top' ? setShowDescriptionDialog : setOpenDescriptionPopover } setInitStore = { setInitStore } />
259- ) }
263+ :
264+ < >
265+ < Switcher leftText = 'Zarr' rightText = 'NetCDF' state = { ! useNC } onClick = { ( ) => useZarrStore . setState ( { useNC :! useNC } ) } />
266+ {
267+ useNC ?
268+ < LocalNetCDF setShowLocal = { setShowLocalInput } setOpenVariables = { popoverSide === 'top' ? setShowDescriptionDialog : setOpenDescriptionPopover } />
269+ :
270+ < LocalZarr setShowLocal = { setShowLocalInput } setOpenVariables = { popoverSide === 'top' ? setShowDescriptionDialog : setOpenDescriptionPopover } setInitStore = { setInitStore } />
271+ }
272+ </ >
273+ }
260274 </ div >
261- ) }
275+ }
262276 </ div >
263277 </ div >
264278 </ PopoverContent >
0 commit comments