Argo Data Monitor
VS Code extension for visualizing Argo float ocean monitoring data — depth & velocity time-series charts.

Features
- 🗂️ TreeView Navigation — browse devices → dates → profiles in a three-level hierarchy
- 📈 Dual Y-Axis Chart — depth (left) and vertical velocity (right) plotted against time
- ⚡ High Performance — handles 100k+ data points with uPlot's GPU-grade rendering
- 🧵 Worker Thread — CSV parsing & downsampling run off the UI thread, zero lag
- 🔍 Zoom & Pan — interactive time-range exploration with crosshair tooltip
- 💾 Weighted LRU Cache — 5 profiles / 64 MB in-memory, fast profile switching
- 📁 Auto-Discovery — automatically detects Argo data directories in your workspace
Quick Start
- Open a folder containing Argo device data (or set
argoMonitor.dataRoot in settings).
- The Argo Devices view appears in the Explorer sidebar.
- Expand a device → date → click a profile to open the chart.
Data Directory Structure
{dataRoot}/
{deviceId}/ # numeric folder, e.g. 6001
{date}/ # 6-digit YYMMDD, e.g. 260716
CSV/
Argo2_{date}_{profileNum}_level_type2_interval1.csv
DAT/
TXT/
NC/
Settings
| Setting |
Type |
Default |
Description |
argoMonitor.dataRoot |
string |
"" |
Root path to your Argo data directory |
If left empty, the extension auto-detects the data root from your workspace folders.
Chart Controls
| Action |
Gesture |
| Zoom |
Scroll wheel / pinch |
| Pan |
Click + drag |
| Crosshair |
Hover over the chart |
| Toggle series |
Click legend items |
| Reset view |
Double-click the chart |
Technical Details
| Component |
Technology |
| Chart engine |
uPlot v1.6 |
| CSV parser |
PapaParse v5 |
| Encoding |
iconv-lite (GBK → UTF-8) |
| Worker |
Node.js worker_threads |
| Bundler |
esbuild |
| Language |
TypeScript 5.5 |
Downsampling Algorithm
Min/Max pixel-bucket downsampling preserves signal extrema:
- Binary search the visible time range
- Partition into pixel-width buckets
- Capture min & max for both depth and velocity per bucket
- Merge, sort, deduplicate extreme indices
- Preserve boundary points and NaN gap markers
- Output ≈ 2–4× chart width data points
| Scenario |
Target |
| 100k pts cold load → first render |
< 1 sec |
| Cache hit → first render |
< 250 ms |
| Zoom query → chart update |
< 100 ms |
| Extension host blocking |
< 50 ms |
Requirements
Known Limitations (MVP)
- Depth and velocity only — temperature, salinity, and sensor diagnostics planned for future releases
- No multi-profile overlay yet
- No automatic file watching (manual refresh via toolbar button)
- In-memory cache only (disk cache planned)
License
MIT
| |