developmentseed / developmentseed/cng-sandbox
feat: add time series animation for temporal Zarr connections
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 0
- Avg merge
- 2h 21m
- Merged PRs (30d)
- 3
Description
## Summary
For Zarr stores with a time dimension, enable play/pause animation through time steps using the existing temporal animation UI.
## Background
The app already has temporal animation infrastructure (play/pause, timeline slider) for multi-timestep raster datasets. This issue wires Zarr connections with a time dimension into that same system. The key difference from STAC temporal datasets is that instead of `&datetime=`, the tile URL uses `&sel=time=`.
## Acceptance Criteria
- [ ] When a Zarr connection has a `time` dimension, `isTemporal` is set to `true` on the MapItem
- [ ] Time coordinate values are mapped to the existing `Timestep[]` format
- [ ] The existing temporal animation controls (play/pause, timeline) appear for Zarr connections
- [ ] Advancing the time step updates the tile URL's `sel=time=` parameter
- [ ] Animation is smooth with reasonable pre-fetching of adjacent time steps
## Files to Modify
- `frontend/src/hooks/useMapData.ts`
- `frontend/src/hooks/useLayerBuilder.ts`
- `frontend/src/hooks/useTemporalAnimation.ts` (may work as-is)
## Dependencies
- Depends on: `feat: add dimension selection for multidimensional Zarr connections`
Contributor guide
Research direction
Start with frontend/src/hooks/useMapData.ts and frontend/src/hooks/useLayerBuilder.ts, then compare their Zarr connection flow with the existing temporal path. Read frontend/src/hooks/useTemporalAnimation.ts to determine whether it can be reused, and trace how time coordinates become Timestep[] values and tile URL parameters. Done means the acceptance criteria pass, including visible controls, sel=time updates, and adjacent-step pre-fetching.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- data, frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100