Skip to content

Commit 491006b

Browse files
berkgevecijourdain
authored andcommitted
feat: support dimensions without coordinate variables
Dimensions that lack coordinate variables (e.g., ext_cnt, num_gas_aerosol_constituents) now appear in the slice selection UI with index-based sliders. Labels show the actual units when a coordinate variable exists, or "Index value:" otherwise.
1 parent 701f2b9 commit 491006b

2 files changed

Lines changed: 16 additions & 10 deletions

File tree

src/e3sm_quickview/app.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -442,20 +442,26 @@ async def data_loading_open(self, simulation, connectivity):
442442
# Update Layer/Time values and ui layout
443443
n_cols = 0
444444
available_tracks = []
445+
dim_units = {}
445446
for name, dim in self.source.dimensions.items():
446447
values = dim.data
447448
# Convert to list for JSON serialization
448-
self.state[name] = (
449-
values.tolist()
450-
if hasattr(values, "tolist")
451-
else list(values)
452-
if values is not None
453-
else []
454-
)
449+
if values is not None:
450+
self.state[name] = (
451+
values.tolist()
452+
if hasattr(values, "tolist")
453+
else list(values)
454+
)
455+
else:
456+
self.state[name] = list(range(dim.size))
455457

456-
if values is not None and len(values) > 1:
458+
if dim.size > 1:
457459
n_cols += 1
458460
available_tracks.append(name)
461+
if dim.units:
462+
dim_units[name] = dim.units
463+
464+
self.state.dim_units = dim_units
459465
self.state.toolbar_slider_cols = 12 / n_cols if n_cols else 12
460466
self.state.animation_tracks = available_tracks
461467
self.state.animation_track = (

src/e3sm_quickview/components/toolbars.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ def __init__(self):
366366
)
367367
v3.VSpacer()
368368
v3.VLabel(
369-
"{{ t_values ? parseFloat(t_values[t_idx]).toFixed(2) : '' }} hPa (k={{ t_idx }})",
369+
"{{ dim_units[track] ? parseFloat(t_values[t_idx]).toFixed(2) + ' ' + dim_units[track] : 'Index value: ' + t_idx }} (k={{ t_idx }})",
370370
classes="text-body-2",
371371
)
372372
v3.VSlider(
@@ -418,7 +418,7 @@ def __init__(self):
418418
classes="text-subtitle-2 ml-2 mt-1",
419419
)
420420
v3.VLabel(
421-
"{{ t_values ? parseFloat(t_values[Number(t_idx)]).toFixed(2) : '' }} hPa",
421+
"{{ dim_units[track] ? parseFloat(t_values[Number(t_idx)]).toFixed(2) + ' ' + dim_units[track] : 'Index value: ' + t_idx }}",
422422
classes="text-body-2 text-no-wrap ml-2 mt-1",
423423
)
424424

0 commit comments

Comments
 (0)