Three changes that shrink first-paint and make layer toggles instant: 1. Server: /weather/cells now supports ?format=bin and ?layers=a,b,c. The binary "WCEL" pack is ~3× smaller than JSON (Float32 columns, no key overhead) and parses with DataView + typed-array views — essentially memcpy on the client. 2. Client: replaced JSON parse + per-cell SVG <rect> with a custom Leaflet canvas layer. The pack is columnar (lats/lons + Float32Array per layer) and each draw is one fillRect per cell against a precomputed 256-step color LUT. At low zoom (CONUS, ~80k cells) SVG paint cost dominated; canvas keeps it under one frame. 3. Lazy prefetch: the initial fetch only requests the *current* layer (~1/19 the bytes). Right after paint, a single background fetch pulls every other layer into the same pack. Layer switches that land after the prefetch finishes are pure recolor — no network, no server CPU. The /weather/tiles endpoint stays for backward compat. The JSON path of /weather/cells stays too — the binary path is opt-in via ?format=bin. |
||
|---|---|---|
| .. | ||
| agent_skills_controller_test.exs | ||
| api_catalog_controller_test.exs | ||
| beacon_monitor_controller_test.exs | ||
| contact_map_controller_test.exs | ||
| error_html_test.exs | ||
| error_json_test.exs | ||
| health_controller_test.exs | ||
| page_controller_test.exs | ||
| user_registration_controller_test.exs | ||
| user_reset_password_controller_test.exs | ||
| user_session_controller_test.exs | ||
| user_settings_controller_test.exs | ||
| weather_tile_controller_test.exs | ||