Source code for variables

from dash import Output, Input

[docs] class VariableSelection: def __init__(self, app, ds_getter): self.app = app self.ds_getter = ds_getter # Function that returns xarray.Dataset
[docs] def setup_callbacks(self): @self.app.callback( Output('variable-dropdown', 'options'), Output('variable-dropdown', 'value'), Input('load-status', 'children') ) def update_variable_options(_): ds = self.ds_getter() if ds is None or not hasattr(ds, 'data_vars'): return [], None options = [] for var in ds.data_vars: # Only exclude variables with no dimensions (e.g., scalar metadata) if len(ds[var].dims) == 0: continue # Build a user-friendly label attrs = ds[var].attrs label_parts = [var] if 'long_name' in attrs: label_parts.append(f"[{attrs['long_name']}]") if 'units' in attrs: label_parts.append(f"({attrs['units']})") label = " ".join(label_parts) options.append({'label': label.strip(), 'value': var}) default = options[0]['value'] if options else None return options, default