Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions content/quiet-corners-maps.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Both buttons say what they did on the status line below the map, the same line e
**What these sets are held to.** Two of the three things worth measuring here are enforced by a test rather than by good intentions, and a set that exceeded either could not be built at all. The third, task completion, is not mechanical: it is watched rather than asserted, and what the code holds each set to is that it states the question it claims to answer.

- **Load size.** Each layer switched on is one query of its own against its service, and a query pages up to twenty requests. The public-land set is six layers, a worst case of 120 requests for one settled view; the night set asks the vector services for nothing at all, because its surface is a picture handed straight to the map. Six is the ceiling until a wider set has been measured.
- **Clutter.** At most one continuous-colour surface at a time, and that is now enforced rather than promised: **Land, sky & light context** is a choice of one — the steepness of the ground, night lights, radar, aurora, air quality, wildlife records, the [Quiet Corners county ranking](/quiet-corners/), or **No context surface** — exactly like the base map above it. It used to be four independent checkboxes, so a reader could stack four filled surfaces over each other and nothing stopped them; the light-emissions surface is drawn at 80% and the radar at 55%, and those two alone leave under a tenth of whatever is beneath them showing. **No context surface** is where the panel starts, and it stays a row of its own so turning them all off again is always one click. On the map key, the public-land set draws nineteen distinct marks and the night set draws one. The county ranking is the one surface here with no service behind it at all — it is the dashboard's own local data, drawn on screen only, and it is never in the printable-vector fetch loop and never on the printed key: a screen-only layer switched on for the screen used to still be listed as a source on the sheet that never carried it, and the credit list is now built from what actually reaches paper rather than from what the reader had switched on.
- **Clutter.** At most one continuous-colour surface at a time, and that is enforced rather than promised: in **Land, sky & light context** the surfaces that fill the whole view as a picture — the steepness of the ground, night lights, radar, land cover, tree canopy, the [Quiet Corners county ranking](/quiet-corners/) — are a choice of one, or **No context surface**, exactly like the base map above them. It used to be four independent checkboxes, so a reader could stack four filled surfaces over each other and nothing stopped them; the light-emissions surface is drawn at 80% and the radar at 55%, and those two alone leave under a tenth of whatever is beneath them showing. What is drawn as outlines or shading on top and hides nothing beneath it — wildfire perimeters, air quality, smoke, flood zones, the aurora and wildlife records — is not part of that choice: each is its own checkbox under the surfaces and stays on whichever surface you pick, so fire perimeters and air quality can be on together, and with night lights as well. A saved view or shared link from before the split that names one of them as its surface still turns it on. **No context surface** is where the panel starts, and it stays a row of its own so turning them all off again is always one click. On the map key, the public-land set draws nineteen distinct marks and the night set draws one. The county ranking is the one surface here with no service behind it at all — it is the dashboard's own local data, drawn on screen only, and it is never in the printable-vector fetch loop and never on the printed key: a screen-only layer switched on for the screen used to still be listed as a source on the sheet that never carried it, and the credit list is now built from what actually reaches paper rather than from what the reader had switched on.

## Finding and checking a layer

Expand Down Expand Up @@ -273,7 +273,7 @@ Keyboard and large text: Tab reaches the dock panels, the map controls and the p

**Layers do not appear when I switch them on.** Switch the layer on and stop moving the map: once the view settles the page asks for what is on screen and draws it. Two views ask for nothing, on purpose — zoomed out past the level the topo base appears at, and a view covering more ground than one query can honestly answer. Both say so on the page. Building the PDF always re-asks for the printed box itself, so a sheet never draws features fetched for somewhere else.

**Which context surface am I looking at, and when is it from?** Whichever one is chosen under **Land, sky & light context** — only one can be on at a time — and the map itself carries a line naming it and the time its data refers to. That time is the source's own and never the moment it was fetched: the aurora surface shows the time it is a **forecast for**, radar and air quality show the time they were **observed**, and the night lights show their **vintage** (a 2016 composite, not tonight). The wildlife records are an aggregate over a span of years rather than a moment — a cell holds records from many different days — so that line says the time is unknown and the row beneath it names the year range the count covers. The steepness surface is arithmetic rather than a reading, and the national elevation model states no date for a given piece of ground, so its line says the time is unknown instead of borrowing the clock. The county ranking names no service and so states its own dashboard vintage rather than a fetch time, the same wording an inventory carries. A source that will not state its time says so on that line rather than being shown as current.
**Which context surface am I looking at, and when is it from?** Whichever surface is chosen under **Land, sky & light context** — only one can be on at a time — plus any overlay ticked beneath it (fire perimeters, air quality and so on, which can be on together). The map itself carries one line for each, naming it and the time its data refers to; with everything on, that box stops growing at a few lines and scrolls. That time is the source's own and never the moment it was fetched: the aurora surface shows the time it is a **forecast for**, radar and air quality show the time they were **observed**, and the night lights show their **vintage** (a 2016 composite, not tonight). The wildlife records are an aggregate over a span of years rather than a moment — a cell holds records from many different days — so that line says the time is unknown and the row beneath it names the year range the count covers. The steepness surface is arithmetic rather than a reading, and the national elevation model states no date for a given piece of ground, so its line says the time is unknown instead of borrowing the clock. The county ranking names no service and so states its own dashboard vintage rather than a fetch time, the same wording an inventory carries. A source that will not state its time says so on that line rather than being shown as current.

**Can I turn the base map off, or see the aerial or relief on screen?** Yes — under **Base map** in the Layers panel, choose USGS Topo, aerial imagery, shaded relief or no base map at all; the choice is for the screen only, and the tiles are drawn at full strength rather than dimmed. The PDF still prints the topo base on every sheet, with aerial imagery and shaded relief available as companion sheets under **Extra sheets**.

Expand Down
24 changes: 24 additions & 0 deletions scripts/qcm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,30 @@ scripts. `QCM_SMOKE_NO_BROWSER=1` makes the CLI behave as if there were no Chrom

**Not wired into deploy yet.** Running this after `deploy-production.yml` is a separate change to the workflow, made and merged by a person. Firefox and WebKit lanes are not in this slice: the checks drive Chromium over the Chrome DevTools protocol, which those browsers do not speak, so a later slice needs them installed plus a driver.

## The context group: surfaces and overlays

**Land, sky & light context** holds two kinds of row, and which kind a row is follows how it
renders, not what it is about. A row that fills the view as a raster (`rasterSurface` in
`layer-registry.js`: night lights, radar, slope, land cover, tree canopy, the county wash,
the hillshade) hides what is under it, so those stay one radio group (`qcm-context`) with an
explicit **No context surface**. A row that draws vector ink on top (NIFC fire perimeters,
air quality, smoke, flood zones, aurora, wildlife) is an ordinary checkbox
(`qcm-layer-<id>`) and coexists with whichever surface is chosen. Ids never change, so an old
share link or saved state that names fire or air quality as its surface (`s=`) still turns
that overlay on.

The map caption (`#qcm-surface-caption`) carries one `.qcm-surface-caption-line` block per
thing on, keyed by layer id so a toggle adds or removes only its own line, inside a box with
a height ceiling (7.5rem) that scrolls. With a surface and every overlay on it stays within
160px at 390px and 1280px wide.

| Proof | What it holds |
| --- | --- |
| `layer-registry.test.mjs` | The surface/overlay split is derived from `rasterSurface`; every context id is exactly one of the two. |
| `layer-presets.test.mjs` | A preset may name one raster surface plus overlays, never two surfaces. |
| `surface-choice.test.mjs` | The radio group in a browser: None at rest, one surface at a time. |
| `context-overlays-browser.test.mjs` | Fire and air quality are drawn together, with or without a surface; old links restore by id; the caption is one line per entry within its height budget. |

## Physical print proof

Layout is proven here without paper. Whether a printer honours it is a separate check:
Expand Down
Loading
Loading