Skip to content

Dynamic Filter Widget: "APPLY DIMENSION" to update Time and Elevation #12267#12347

Merged
offtherailz merged 31 commits into
geosolutions-it:masterfrom
rowheat02:applyDimension
May 15, 2026
Merged

Dynamic Filter Widget: "APPLY DIMENSION" to update Time and Elevation #12267#12347
offtherailz merged 31 commits into
geosolutions-it:masterfrom
rowheat02:applyDimension

Conversation

@rowheat02

@rowheat02 rowheat02 commented May 7, 2026

Copy link
Copy Markdown
Contributor

Description

This PR adds Apply Dimension as an optional target for interactions. Can connect to update the layer time and elevation. If a timeline exists, a different global node "MapTime" to control currentTime of timeline

Here are the conditions applied for Apply Dimension

  • Maptime(target) can only be connected alone; other targets can not be connected on the same filter. This is done to make consistent reerse sync.
  • When range is enabled in timeline, mapTime connected widget will be disabled
  • An apply dimension node can only be connected when selection mode is "Single"
  • For elevation, the value field must be numeric, and for time, it must be datetime/date

Demo for Map:

Screen.Recording.2026-05-07.at.20.42.18.compressed.mp4

Demo for Dashboard

Screen.Recording.2026-05-07.at.20.57.23.compressed.mp4

Please check if the PR fulfills these requirements

What kind of change does this PR introduce? (check one with "x", remove the others)

  • Enhancement

Issue

What is the current behavior?

#12267

What is the new behavior?

The user can connect the dimension update node of the layer(time and elevation)

Breaking change

Does this PR introduce a breaking change? (check one with "x", remove the other)

  • Yes, and I documented them in migration notes
  • No

Other useful information

@cla-bot cla-bot Bot added the CLA Ready label May 7, 2026
@rowheat02 rowheat02 added this to the 2026.01.02 milestone May 7, 2026
@rowheat02 rowheat02 requested a review from offtherailz May 7, 2026 15:19
@rowheat02 rowheat02 linked an issue May 7, 2026 that may be closed by this pull request
1 task
@rowheat02 rowheat02 marked this pull request as ready for review May 7, 2026 15:21

@offtherailz offtherailz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still need to check the code. Make sure to design the application with best practices. I see a lot of code and ifs that looks to be hard to maintain

  • Conditional Visibility for "+" Button: it should show when at least one additional event can be added. In the stile case, when userDefined style is selected. In case of apply dimension it only appears when a dimension can actually be applied. This prevents users from clicking an action that has no effect.
  • Option vetical/horizonal makes no sense on slider (or still not supported) disable it.
  • Implement backward compatibility for missing attribute types.
  • See comments inline

@offtherailz offtherailz assigned rowheat02 and unassigned offtherailz May 12, 2026
@rowheat02

Copy link
Copy Markdown
Contributor Author

Fixed points mentioned here and tick issue to support empty space(which helps in labelling empty string) and alway show tick even label is hidden.
image

@rowheat02 rowheat02 requested a review from offtherailz May 13, 2026 13:48

@offtherailz offtherailz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are near, but there are still some things that are not in line with specification.

  • in dashboard I see the items, but i can not connect to the a layer of the map. Same for generic map, I can connect it only to generic time. Not for single layer. Did we removed this specification?
Screencast.from.2026-05-13.18-05-09.webm
Image
  • As far as I remember filter should be allowed anyway. The only thing that should be denied is to mutually exclude map time or layer specific time. Is there a specific reason for denying it?
Screencast.from.2026-05-13.18-05-09.webm
  • Elevation do not seems to be in sync
Screencast.from.2026-05-13.18-17-20.webm
  • "apply regardless the data source" is shown here ? It doesn't make sense to me.
Image

@rowheat02

Copy link
Copy Markdown
Contributor Author

@offtherailz

1. in dashboard I see the items, but i can not connect to the a layer of the map. Same for generic map, I can connect it only to generic time. Not for single layer. Did we removed this specification?

=> For the first point of the dashboard, there can be two reasons:
- Selection mode is multiple
- That node is already connected to another filter source. For consistency, for one layer dimension, only one filter can be connected like done in Apply Style

=> For the second point
- From one filter instance, we can not connect other nodes if mapTime is connected. This is because global time(currenTime) should be synced to the maptime node only. It does not make sense if it is connected to other nodes also. Example, if we connect to mapTime from applyDimension, layer 1 apply filter. or any other type of future target that can be changed from outside also(like dimension, style now are changing). Should sync from all sources?. For this complexity, restriction have been applied to mapTime to be connected alone for reverse sync.
- we need discussion if we need to sync from all the targets like target(1) updateds value -> widget sync -> update other targets (2, 3). Currently, we are just syncing the selection of the widget selection only if filter is connected to Maptime

  1. As far as I remember filter should be allowed anyway. The only thing that should be denied is to mutually exclude map time or layer specific time. Is there a specific reason for denying it?

=> the same explanation from number 1 (second point)

  1. Elevation do not seems to be in sync

=> This comes around similar reason: Sync was done only for maptime( single connected ), for other they can be connected from multiple targets. So from all targets should we sync? like elevation is connected to multiple layers. from all targets we should sync? Then a bit complex syncing system should be introduced. As enhancement, we can show warning we some target is not synced like for applyStyle.
image

4 "apply regardless the data source" is shown here ? It doesn't make sense to me.

=> this is fixed

@offtherailz

Copy link
Copy Markdown
Member

I updated but "apply regardless data source" appears on map time, at least on map, and in this case also blocks be to disable the time dimension on map

image

Please remove this apply regardless data source for dimensions, even with tooltip.

image

Regarding your point, there is no reason to block the interactions for filters that do not receive any value back. I can agree on style. For this mechanism, I agree with you that 2 way sync complicates a lot the interactions, if multiple targets are present. We can think about to relax this binding in the future.

So please remove the constraint on filters, but I agree with you to keep it on style.

@offtherailz offtherailz merged commit 67a7150 into geosolutions-it:master May 15, 2026
12 checks passed
@offtherailz

Copy link
Copy Markdown
Member

@ElenaGallo, could you please test this on DEV ? Thank you

@offtherailz

Copy link
Copy Markdown
Member

Request failed due to following response errors:

  • Pull request Pull request is a draft

tdipisa added a commit that referenced this pull request Jun 1, 2026
* Add Portuguese (pt-PT) translation

Complete European Portuguese translation covering ~97% of UI strings.
Translated using MapStore2 translation format with proper pt-PT locale.

* #12207: Fix - ScaleBox plugin - Custom scales not reported on map load (#12212)

* #12207: Fix - ScaleBox plugin - Custom scales not reported on map load

* update test

* code cleanup

* #12094: Fix dropdown menu overflow when adding links to text widget in TextEditor (#12260)

Description:
- Add linkModalDirection prop to CompactRichTextEditor to control dropdown positioning and prevent
off-screen overflow when adding links in the dashboard editor and edit annotation screen
- add unit test

* Fix #12146: ArcGIS support for FeatureService (#12235)

* #12146: ArcGIS support for FeatureService

* fix DynamicPanel layout, improve tests (#12135)

Fix #12114 DynamicPanel layout

* Fix #12240 TOC Layer item won't move when drag and drop (#12241)

* Custom Tick Labels Support in Chart Axis #12266 (#12280)

* Add custom axis tick values and labels to charts

* fix tooltips

---------

Co-authored-by: Lorenzo Natali <lorenzo.natali@geosolutionsgroup.com>

* #12271: Rules manager - clear cache on standalone geofence and multiple gs instances does not work fully (#12279)

* #12271: Rules manager - clear cache on standalone geofence and multiple gs instances does not work fully
Description:
- handle clear cache functionality for multi gs instances for stand-alone geofence
- create menu gs instances called CSCleanCacheMenu
- add translations
- add unit tests

* - fix renaming issue of comp name

* - update some unit tests for RuleService
- remove api function 'cleanCacheGSInstance' in favor ofof expanding 'cleanCache' function
- resolvve review comments

* #12232: Validate catalog service credentials before saving to prevent silent failures & misleading errors (#12233)

* #12232: Validate catalog service credentials before saving to prevent silent failures & misleading errors
Description:
- for authenticated services, add async credential check via WMS GetCapabilities request
- Show clear, localized error messages instead of silent failures in SecurityPopup
- Prevent invalid credentials from being stored or saved to maps
- Add unit tests and i18n translations (EN, IT, FR, ES, DE)

* - fix typo in unit test in SecurityPopupDialog-test file

* - revert edits in localConfig

* #11589: correct urls in config.yaml to fix issue of print profiles not compatible with windows (#12269)

* #11589: correct urls in config.yaml to fix issue of print profiles not compatible with windows
- update the urls that has missing file:// part in config.yaml

* - add migration guide for the edits in config.yaml file

* Update .clabot

* Fix #12291 Switching CRS causes jumps between zoom levels. (#12292)

* fix #12160: correct theme variables to filter widget and wizard components (#12295)

- Replace hardcoded colors with theme variables in wizard.less
- remove the hardcoded text color in widgetbuilder/util/filterBuilder file

* #12237: fix the background selector show an error in console (#12242)

* #12237: fix the background selector show an error in console
Description:
- Refactored BackgroundSelector.jsx
- Moved the logic for detecting and adding the missing Ellipsoid terrain from the main function body into a React.useEffect hook

* - resolve review comment of import useEffect instead of using React.useEffect in web/client/components/background/BackgroundSelector.jsx file

* fix #12094: fix link popup widget in map layer TOC widget (#12294)

* fix #12094: fix link popup widget in map layer TOC widgets

* - undo unnecessary edits

* #12166: Allow configurable defaults for Printing (#12263)

* #12166: Allow configurable defaults for Printing
Description:
- introduce 'initialSpecSettings' to print plugin cfg to allow custom default print values
- Create 'INIT_PRINT_SPEC_FROM_CONFIG' action to dispatch config values on plugin mount
- add unit tests

* - add reset print spec logic and epic for print state management
- introduce `RESET_PRINT_SPEC` action to revert print settings to initial defaults
- add `resetMountPrintEpic` to listen for `MAP_PLUGIN_LOAD` dispatches reset if print was previously mounted to ensure a clean state

* - enhance reset print spec reducer

* - resolve review comment by adding guard to ensure initialSpecSettings exists and has keys before calling initPrintSpec in componentDidMount in plugins/Print file

* Fix #12262 - Improve documentation with clear db update policy (#12293)

* Fix #12262 - Improve documentation with clear db update policy

* minor fix

---------

Co-authored-by: Tobia Di Pisa <tobia.dipisa@geosolutionsgroup.com>

* Update User Guide - extrusionOutline option for extruded features #12275 (#12278)

* add_12275

* add2_12275

* add3_12275

* Update docs/user-guide/annotations.md

* Update docs/user-guide/layer-settings.md

---------

Co-authored-by: Tobia Di Pisa <tobia.dipisa@geosolutionsgroup.com>

* Update User Guide - Improve CRS selector component (#12290)

* add-12284

* review_12284

---------

Co-authored-by: Tobia Di Pisa <tobia.dipisa@geosolutionsgroup.com>

* Update User Guide - Map editor on Geostories #12274

Co-authored-by: Tobia Di Pisa <tobia.dipisa@geosolutionsgroup.com>

* Groupe open/panoramax streetview support (#11822)

* Adapt Mapstore2 for Panoramax support

map.forEachFeatureAtPixel in openlayers/Map.jsx adapted for detection of features of type RenderFeature used for MVT layers. By doing that, MVT layers are clickable and the intersected features are return on clic
TileProviderLayer for being able to create MVT layer and display it.

* Add and configure Panoramax plugin in StreetView component

- Create a viewer using pnx-photo-viewer to display pictures.
- Add a Panoramax VectorTileLayer using OpenLayers styling to match other providers.
- Handle click events: retrieve picture data directly from the layer datas, or call the API if the data is not found.

* Translate panoramax emptySelection message in French, English, Spanish, Italian and German

* Remove unused DEFAULT_SRS constant

Removed unused DEFAULT_SRS constant from panoramax.js to match the eslint configuration

* minor fixes

* Fix style support for RenderFeature

* fixed more french issues

* fixed json style

* Fix typo and french issues

* return pre computed geom instead of getting it from the original feature in startpoint/endpoint geom function

---------

Co-authored-by: Lorenzo Natali <lorenzo.natali@geosolutionsgroup.com>

* Update .clabot

* Update .clabot

* Fix #12318 - add translations for userSession (#12319)

* Fix #12301 Dynamic projection definitions (#12313)


---------

Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>

* Fix #11762 :Added support for downloading vector layers as Geojson (#12322)

* Fix #12302: Disable cropping WMS layers to map projection extent. (#12303)

* Fix #12301 zoom to extent with padding null throw an error (#12325)

* Update mip.md (#12326)

* #12330: RULES MANAGER - Add possibility to have an extra list of geoserver urls where cache can be invalidated (#12334)

* #12330: RULES MANAGER - Add possibility to have an extra list of geoserver urls where cache can be invalidated
- introduce root level cfg called 'additionalGsInstancesUrls'
- handle clear cache of gs instance and its slaves if existing for single clear cache and clear all
- create rulemanager-test epic file
- add unit tests

* - fix renaming func hasConfiguredGSSlaves

* - add JSDoc and config examples for GS slave expansion
- Add comprehensive JSDoc to `hasConfiguredGSSlaves` and `expandInstancesWithSlaves`

* Introduce slider varient for Dynamic filter #12268 (#12311)

* Update Changelog for version 2026.01.01 (#12339)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix #11749 Improve flatgeobuf implementation (#12329)


---------

Co-authored-by: stefanocudini <stefano.cudini@gmail.com>

* Fix #12301 projection export workflow and unregistered projection warning (#12342)

* Fix #12349 Crs compability check fails when terrain laer is a part of background group (#12350)

* #12346: Add requestRuleRefreshHash handling to Cesium layer plugins (#12352)

* Fix #12353 Click events not working outside the projection extent (#12356)

* Fix #12301 restore fallback to empty map in mapsave selector (#12358)

* Update .clabot (#12362)

* #12354: fix Issue with mouse coordinates for certain CRS not showing lat, lng for custom geographic CRSs (#12357)

- fix the regression issue in editing 'getPosition' function in 'mouseposition/MousePosition.jsx'
- add unit test for edits

* Fix #12302 Set cropToProjectionExtent to false by default behavior (#12361)

* Fix #12301 Improve parsing of axis orientation (#12359)

* Fix #12309 - Add usergroups to default monitoredState (#12310)

* Fix 12309 - Add usergroups to default monitoredState

* Fixed old test

* Fixed old test

* Moved monitored state. add doc

* Revise migration guide for version update

Updated migration guide version from 2026.01.00 to 2026.01.02.

* Update .clabot (#12366)

* Fix .clabot formatting (#12369)

* Fix #11930 Catalog Refactor  and integration of Geonode api in the Catalog. (#12107)


---------

Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>
Co-authored-by: Suren <dsuren1@gmail.com>

* Update data.pt-PT.json

* Fix #11930 Add title translations and tests (#12370)

* Fix #11926 layout and location of timeline plugin (#12332)


---------

Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>

* Fix #11749 flatgeobuf styleditor cors (#12374)

* Fix #12371 WMS GetMap unhandled error for custom requestsConfigurationRules (#12372)

* Fix #12381 Review configuration related to Catalog (#12382)

* Fix #12375 New Catalog issue with WFS service (#12378)

* Fix #12377 New Catalog UI issue on Dashboard (#12379)

* Fix #12376 New Catalog: Advanced settings issue on Dashboard (#12380)

* Fix #12383 Remove duplicated catalog components (#12384)

* Fix #12383 Remove duplicated catalog components

* restore clickable item in resource card

* Fix #12375 Review catalog identifier (#12385)

* Fix #12375 Review catalog identifier

* revert test

* change how hash are created

* change export of hashCode

* Fix #12323 - Add milestone check action (#12324)

* Rename job for clarity in workflow

* Add City of Rome Geoportal link to README

* Fix #12377 Update position of InfoPopover for table and counter widgets (#12388)

* Dynamic Filter Widget: "APPLY DIMENSION" to update Time and Elevation #12267 (#12347)

* Fix #12390 Advanced Settings are not visible on the TMS (#12393)

* Fix #12371 additional condition to prevent tile exception reloding (#12397)

* docs: add recommendation to use externalized configuration for database setup (#12396)

* Update .gitignore (#12398)

* Add User Guide - Export button resulting layer from a geoprocessing operation (#12364)

* Fix ESLint/Prettier: remove embedded newline in pageInfoInfinite string (line 2089)

* Fix #12411 New Catalog UI - Minor style issues (#12414)

* Extend Apply dimension to connect with Chart Axis current Time. #12408 (#12413)

* Slider cache issue fixes

* Apply dimension for axis

* fix: show tick label instead of value

* configure hover only for custom Ticks

* update elevation chart after when it's value from params changes

* fix: avoid negative max height

* fix: translations

* fix: labels

* fix: local env crash due to invalid cleanup

* fix: apply clean up fordeleted filter interaction

---------

Co-authored-by: Suren <dsuren1@gmail.com>
Co-authored-by: mahmoud adel <58145645+mahmoudadel54@users.noreply.github.com>
Co-authored-by: Stefano Cudini <stefano.cudini@gmail.com>
Co-authored-by: RowHeat <40065760+rowheat02@users.noreply.github.com>
Co-authored-by: Lorenzo Natali <lorenzo.natali@geosolutionsgroup.com>
Co-authored-by: Tobia Di Pisa <tobia.dipisa@geosolutionsgroup.com>
Co-authored-by: Anup Dahal <adahal39@gmail.com>
Co-authored-by: ElenaGallo <56537133+ElenaGallo@users.noreply.github.com>
Co-authored-by: Nakouban Camara <nakouban.rc@gmail.com>
Co-authored-by: allyoucanmap <stefano.bovio@geosolutionsgroup.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Simone Giannecchini <simboss1@gmail.com>
Co-authored-by: Brice Lecomte <86045852+Brice150@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dynamic Filter Widget: "APPLY DIMENSION" to update Time and Elevation

2 participants