towerops/lib/towerops_web/live/coverage_live
Graham McIntire 5d1adcaacc feat(coverage): client-side signal-strength filter slider
Adds the cnHeat-style horizontal 'Min RSSI' slider beside the opacity
control. Pixels weaker than the threshold turn fully transparent,
client-side, with no server round-trip — same compute output now
powers an interactive 'where can I get -75 dBm or better' exploration.

- Slider range -100..-40 dBm step 1; -100 disables filtering.
- addCoverageLayer fetches each PNG into a hidden canvas and caches
  its ImageData. crossOrigin=anonymous keeps reads tainted-free.
- Each pixel is classified by nearest palette colour (-50/-65/-75/
  -85/-95 dBm centres matching Raster.write/3) and dropped if its
  dBm is below the threshold. Result re-encoded via toDataURL and
  swapped onto the L.imageOverlay via setUrl.
- destroyed() revokes blob URLs and clears the filter cache to
  avoid leaks during LiveView nav. Bundle: coverage_hooks chunk
  16 KB → 20 KB; main bundle unchanged at 1.2 MB.
2026-05-06 16:29:24 -05:00
..
form.ex fix(coverage): queue compute job after creating a coverage 2026-05-06 15:49:18 -05:00
form.html.heex feat: draggable Leaflet marker for radio location on coverage form 2026-05-06 14:57:55 -05:00
index.ex feat: add /coverage RF prediction feature scaffold 2026-05-06 13:44:14 -05:00
index.html.heex refactor: imperial coverage form + Deygout/curvature propagation 2026-05-06 14:44:23 -05:00
map.ex feat(coverage): cnHeat-style unified multi-tower map at /coverage 2026-05-06 16:00:43 -05:00
map.html.heex feat(coverage): client-side signal-strength filter slider 2026-05-06 16:29:24 -05:00
show.ex fix(coverage): production show-page crash and stale device on PubSub refresh 2026-05-06 15:19:32 -05:00
show.html.heex fix(coverage): production show-page crash and stale device on PubSub refresh 2026-05-06 15:19:32 -05:00