@@ -320,13 +320,37 @@ async function getDimensionValues(
320320 return dimValues ;
321321}
322322
323+ async function prepareDimensionData(
324+ datavar : zarr .Array <zarr .DataType , zarr .FetchStore >,
325+ updateMode : TUpdateMode
326+ ) {
327+ const dimensionNames = await ZarrDataManager .getDimensionNames (
328+ props .datasources ! ,
329+ varnameSelector .value
330+ );
331+ const { dimensionRanges, indices } = buildDimensionRangesAndIndices (
332+ datavar ,
333+ dimensionNames ,
334+ paramDimIndices .value ,
335+ paramDimMinBounds .value ,
336+ paramDimMaxBounds .value ,
337+ dimSlidersValues .value .length > 0 ? dimSlidersValues .value : null ,
338+ [datavar .shape .length - 1 ],
339+ varinfo .value ?.dimRanges ,
340+ updateMode === UPDATE_MODE .SLIDER_TOGGLE
341+ );
342+
343+ return { dimensionRanges , indices };
344+ }
345+
323346async function fetchAndRenderData(
324347 datavar : zarr .Array <zarr .DataType , zarr .FetchStore >,
325348 updateMode : TUpdateMode
326349) {
327350 // Load latitudes and longitudes arrays (1D)
328351 const { latitudes, longitudes, latitudesAttrs, longitudesAttrs } =
329352 await getLatLonData (datavar , props .datasources );
353+ // FIXME: Needs to be changed for Zarr V3
330354 const dimensions = datavar .attrs ._ARRAY_DIMENSIONS as string [];
331355 const geoDims: number [] = [];
332356 for (let i = 0 ; i < dimensions .length ; i ++ ) {
@@ -338,15 +362,10 @@ async function fetchAndRenderData(
338362 geoDims .push (i );
339363 }
340364 }
341- const { dimensionRanges, indices } = buildDimensionRangesAndIndices (
365+
366+ const { dimensionRanges, indices } = await prepareDimensionData (
342367 datavar ,
343- paramDimIndices .value ,
344- paramDimMinBounds .value ,
345- paramDimMaxBounds .value ,
346- dimSlidersValues .value .length > 0 ? dimSlidersValues .value : null ,
347- geoDims ,
348- varinfo .value ?.dimRanges ,
349- updateMode === UPDATE_MODE .SLIDER_TOGGLE
368+ updateMode
350369 );
351370
352371 let rawData = castDataVarToFloat32 (
0 commit comments