Skip to content

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

Open
rowheat02 wants to merge 31 commits into
geosolutions-it:masterfrom
rowheat02:applyDimension
Open

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

Conversation

@rowheat02
Copy link
Copy Markdown
Contributor

@rowheat02 rowheat02 commented May 7, 2026

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
Copy link
Copy Markdown
Member

@offtherailz offtherailz left a comment

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
Copy link
Copy Markdown
Member

@offtherailz offtherailz left a comment

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.

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