Skip to content

feat(qcm): one Cameras list for the view or near a chosen place (QQA-16a) - #42

Merged
joepetjr merged 6 commits into
masterfrom
qqa-16a-camera-list
Oct 25, 2026
Merged

joepetjr merged 6 commits into
masterfrom
qqa-16a-camera-list

Conversation

@joepetjr

Copy link
Copy Markdown
Contributor

Ported from headlessmode-archive #798 (commit 212364d9), QC U13 camera chain (QC-04), plan row U13. Base qqa-18-groups (PR for #794), stacked. Closed in the archive, not merged there; this is the port.

What changes: one Cameras list for the current view or for a chosen place, with a purpose filter, in the Layers panel.

Adapted to the shipped catalogue: master's place finder is "Search places" (not "Search names"), so the no-place message and the radius text in main.js and camera-layer.js, and one md phrase, use that name. control-register.json gains camera-scope and camera-purpose; site-coupling.json is regenerated.

Tests (through bin/pytest-slot.sh, logs unpiped):

  • Red on the base with this PR's tests only: 2 tests, 0 pass, 2 fail (import failure: the module does not exist yet).
  • Green: targeted set 191 of 191 pass.
  • CI's node step, full (built site, browser tests ran), on this branch before opening: 3103 tests, 3103 pass, 0 fail, 0 skipped, exit 0. Python subset (front matter, content validation, privacy accuracy, headers wiring, a11y config, data contract, public tree): py_rc=0. The full run was with master at fdfc050; master then took fix(qcm): put the last seven map reads on fetchWithDeadline #38 (adapter reads on fetchWithDeadline), so this branch was rebased onto 530a556 (clean) and the boundary, no-raw-fetch, adapter-deadlines, control-register, acceptance-manifest and docs-promises checks re-run on the final head: all pass (log quick2.log).

Ported from headlessmode-archive #790 (commit 3e807b4f) onto master; conflicts in main.js and layer-registry.test.mjs resolved against master's groupHint and screen/names render maps.
… (QQA-18)

The Layers panel was headed by provider and rendering role. It now has ten
task headings (Map style, Places & routes, Land & access, Terrain &
landscape, Weather & conditions, Night sky, Cameras, Place facts, Explore
counties, Print options); every layer id has exactly one home. Search also
matches group purpose words and opens matching groups, restoring them when
cleared. An Active on map list shows each layer that is on with Remove and
Retry. Print-only pages are not counted as on the map.

Presentation only: ids, input ids, radio/checkbox roles, URL state and what
each layer draws are unchanged.

Ported from headlessmode-archive #794 (commit 7f665250). Adapted to the shipped catalogue: the
eleven layers added since get a task home, and the browser tests account for the default-on names
and roads layers in the Active list.
…16a)

Under the Cameras group, a list built from loaded camera records, not
pins: "In this view" (from zoom 7) or "Near selected place" (25 km, any
zoom), with purpose filters over the five camera layer ids.

- camera-layer.js: cameraList, cameraListStatus, cameraRowText,
  listLoadState, listPlace, PURPOSE_OF_LAYER, kmBetween, reachBox.
- main.js: builds and redraws the list (150 ms debounce, rows rebuilt
  only on change); the near scope loads the camera files around the
  place on demand. The latest place pick wins: finder, pin or places
  list, else the drawn area's centre.
- Counts are honest: "Listing the nearest 50 of 350" and the 300-pin
  cap is stated, never silent. Loading, zoom-in, nothing near,
  unavailable and partly-unavailable states are distinct, and a
  near-scope failure is judged on the near files alone.
- The Active on map list counts only layer rows, not the list controls.
- Tests: camera-list (11) and camera-list-browser J10, J10b-e (6).

Ported from headlessmode-archive #798 (commit 212364d9), stacked on the QQA-18 grouping PR.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Deploying headlessmode-current with  Cloudflare Pages  Cloudflare Pages

Latest commit: b40fd6d
Status: ✅  Deploy successful!
Preview URL: https://21b84b9d.headlessmode-current.pages.dev
Branch Preview URL: https://qqa-16a-camera-list.headlessmode-current.pages.dev

View logs

# Conflicts:
#	content/quiet-corners-maps.md
#	scripts/qcm/README.md
#	scripts/qcm/context-overlays-browser.test.mjs
#	scripts/qcm/layer-count-browser.test.mjs
#	themes/headlessmode/static/js/quiet-corners-maps/main.js
@joepetjr
joepetjr changed the base branch from qqa-18-groups to master October 25, 2026 13:58
# Conflicts:
#	scripts/qcm/site-coupling.json
#	themes/headlessmode/static/js/quiet-corners-maps/main.js
# Conflicts:
#	scripts/qcm/README.md
#	themes/headlessmode/static/js/quiet-corners-maps/main.js
@joepetjr
joepetjr merged commit b776bae into master Oct 25, 2026
5 checks passed
@joepetjr
joepetjr deleted the qqa-16a-camera-list branch October 25, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant