feat(map-layers): register the six geothermal collections - #356
Open
jirhiker wants to merge 1 commit into
Open
Conversation
The catalog publishes geothermal_wells_bht, geothermal_wells_temperature_profile, bht_measurements, temp_depth_measurements, heat_flow, and dst, but no layer named any of them, so none reached the map or the collections page. The collections page even carried a Geothermal group described as reserved for these "when they are published" -- they are published. Registers all six in both registries, with the collection id as the first candidate and the display title as the fallback. Exact matching means the id is what binds; the titles carry em dashes, which normalize away, so either form resolves. The map's layer panel had no geothermal group -- getLayerGroupKey would have dropped all six into Reference. Adds the group between Climate and Geoscience, matched on 'geothermal', 'bht', 'temp-depth', 'heat-flow', and an exact 'ogc-dst'. The dst key is compared whole rather than by substring, since three letters collide too easily. The check runs first, before the groundwater branch, so a name like ogc-geothermal-wells-temperature-profile cannot be claimed by another group later. Popup labels are added for all six. No layer-specific popup rows yet -- the property shapes are unverified, so the generic renderer handles them until someone confirms what each collection carries. Layers are off by default, as every layer other than the summary is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Preview DeploymentPreview URL: https://preview-feature-geothermal-map-layers-auejgdbofq-uc.a.run.app |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the six published geothermal collections to the map and the collections page.
Base branch
This targets
chore/bdms-977-978-979-trim-public-ogcapi-catalog(#355), notstaging. It builds on the exact-match resolver and the post-trim registry from that PR — based onstaginginstead, the two would collide hard inuseThingLayers.tsxand the collections registry. Retarget tostagingonce #355 merges (GitHub usually does this automatically; worth confirming).What was wrong
The catalog publishes these, and nothing in the UI named any of them:
geothermal_wells_bhtgeothermal_wells_temperature_profilebht_measurementstemp_depth_measurementsheat_flowdstThe collections page already had a Geothermal group, described as reserved for these collections "when they are published." They are published. The group has always rendered empty.
What changed
All six registered in both registries, collection id as the first candidate and display title as the fallback. Under exact matching the id is what binds; em dashes in the titles normalize away, so either form resolves.
The map's layer panel had no geothermal group at all —
getLayerGroupKeywould have swept all six into Reference. Adds the group between Climate and Geoscience, matching ongeothermal,bht,temp-depth,heat-flow, and an exactogc-dst.dstis compared whole rather than by substring; three letters collide too easily forincludes(). The branch runs before the groundwater check so nothing downstream can claim these keys first.Popup labels added for all six. Layers are off by default, like every layer except the summary.
Deliberately not done
No layer-specific popup rows. Those need the property names each collection actually carries, and I have the collection ids and titles but not their schemas. The generic property renderer handles them until someone confirms the shapes — worth a look in the preview deploy, especially for
bht_measurementsandtemp_depth_measurements, which may be measurement-per-row rather than one feature per well.Geometry and volume unverified for the same reason. All six render as default point layers. If
temp_depth_measurementsis one feature per reading, it could be large, and it may want a different rendering than a plain circle.waterlevelsandwater_chemistryare still unregistered — the other two collections with no layer. Left out per instruction; they aren't geothermal.Verification
Replayed both registries against the catalog: 24/24 layers resolve exactly, the six new ones included. The only unregistered collections left are
waterlevelsandwater_chemistry.npm run typecheck— cleannpm run test:runwith the Prism mock up — 359 passed, 16 failed. The 16 are the sameintegration/api/*.contract.test.tsmock-vs-interface failures present on the base branch and onstaging; passing count is up 2 from the two resolver tests added here (em-dash titles, anddstnot binding to a collection that merely contains it)One note on that last point:
biome format --writeinitially reformatted ~100 unrelated lines inMapPopupComponent.tsx, since these files carry pre-existing format drift (npm run lintonly runs the linter, so CI never flagged it). I backed that out with a three-way merge so the diff is only the geothermal change. The pre-existing drift is still there, untouched — worth its own cleanup pass sometime, separately.🤖 Generated with Claude Code