mockup: heatmap for event layers [DHIS2-240] [DHIS2-21461] - #3770
Draft
BRaimbault wants to merge 2 commits into
Draft
BRaimbault wants to merge 2 commits into
BRaimbault wants to merge 2 commits into
Conversation
Mockup for DHIS2-21461. Adds a third event point-style option — heatmap, alongside grouped/individual events — using maplibre-gl's native heatmap paint layer (config.type = 'heat'), with intensity/radius sliders and a continuous color-scale picker for the legend. Rebased onto current master by replaying the branch's net feature diff rather than its original 73-commit history (which mixed the heatmap work with unrelated cypress/CI churn and a merged-in bugfix branch). Several files had since been independently refactored on master (EventDialog.jsx from a class to a function component, EventLayer.jsx's clustering logic consolidated into applyClusteringConfig(), favorites.js's per-layer-type config builders unified into shared helpers) — the heatmap additions are ported onto those current shapes rather than reintroducing the old ones. Requires a maps-gl heatmap layer type, restored via the same commit pinned by the original PR (git+https://github.com/d2-ci/maps-gl.git, still fetchable) rather than a from-scratch reimplementation, per explicit choice over a native-maplibre-in-maps-app rewrite. Known risk: that fork is maps-gl 4.2.8 against master's current 4.4.3 — build/lint/tests pass and the dev server boots clean, but other layer types haven't been manually verified against the older maps-gl. Settings (eventHeatmap, heatIntensity, heatRadius) persist through the layer's config JSON blob, so a saved map round-trips the heatmap setup — verified the actual save payload via cleanMapConfig(). DO NOT MERGE Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
|
🚀 Deployed on https://pr-3770.maps.netlify.dhis2.org |
The rebase's patch application produced two separate parseJsonConfig(
config.config) blocks instead of merging into master's existing one —
the first (pre-existing labelDataItem/legendDecimalPlaces/etc. block)
deleted config.config at its end, and the second (added for eventHeatmap
/heatIntensity/heatRadius) then read from that already-deleted field,
so eventHeatmap silently never restored on load: a saved heatmap layer
rendered as plain events instead of a heatmap, though the save payload
itself (layer.config JSON) was always correct.
Merged into the single existing parseJsonConfig destructure. Verified
against the exact config string from a live saved map
({"eventHeatmap":true,"heatIntensity":0.08,"heatRadius":0.53}).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
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.




Test map:
https://pr-3770.maps.netlify.dhis2.org/#/Ati27BfAzYU
→ https://dev.im.dhis2.org/maps-app-42-3
Mockup for DHIS2-21461
DO NOT MERGE
Description
Adds a third event point-style option — heatmap, alongside grouped/individual events — using maplibre-gl's native heatmap paint layer (config.type = 'heat'), with intensity/radius sliders and a continuous color-scale picker for the legend.
Rebased onto current master by replaying the branch's net feature diff rather than its original 73-commit history (which mixed the heatmap work with unrelated cypress/CI churn and a merged-in bugfix branch). Several files had since been independently refactored on master (EventDialog.jsx from a class to a function component, EventLayer.jsx's clustering logic consolidated into applyClusteringConfig(), favorites.js's per-layer-type config builders unified into shared helpers) — the heatmap additions are ported onto those current shapes rather than reintroducing the old ones.
Requires a maps-gl heatmap layer type, restored via the same commit pinned by the original PR (git+https://github.com/d2-ci/maps-gl.git, still fetchable) rather than a from-scratch reimplementation, per explicit choice over a native-maplibre-in-maps-app rewrite. Known risk: that fork is maps-gl 4.2.8 against master's current 4.4.3 — build/lint/tests pass and the dev server boots clean, but other layer types haven't been manually verified against the older maps-gl.
Settings (eventHeatmap, heatIntensity, heatRadius) persist through the layer's config JSON blob, so a saved map round-trips the heatmap setup — verified the actual save payload via cleanMapConfig().
ToDos
Known issues
Screenshots