Skip to content

Do not send popups with unresolvable anchors to Scout JS#2032

Merged
fschinkel merged 1 commit intoreleases/24.2from
features/fschinkel/24.2/improve-JsonPopupManager
Mar 4, 2026
Merged

Do not send popups with unresolvable anchors to Scout JS#2032
fschinkel merged 1 commit intoreleases/24.2from
features/fschinkel/24.2/improve-JsonPopupManager

Conversation

@fschinkel
Copy link
Copy Markdown
Member

@fschinkel fschinkel commented Feb 19, 2026

The PopupManager contains a set of popups, which themselves may contain anchors. When a JsonPopup builds its json it may happen that there is no json adapter for the anchor of the popup, because the anchor is e.g. part of an outline that is currently not the active outline. The JsonPopup can not leave its anchor property empty as a popup without anchor will be rendered directly which would be incorrect. In addition, the JsonPopup can not return null when creating its json as this leads to other errors.
Therefore, the JsonPopupManager needs to filter its set of popups and ensure that no popup containing an anchor without a json adapter is sent to Scout JS. To ensure correct updates of its property "popups" the JsonPopupManager needs to observe all current anchors of its popups and perform an update of its property "popups" if json adapters are created for one of these observed anchors. This is relevant e.g. when the JsonPopupManager is processed before the json adapter of one of its popups anchors is processed which may happen e.g. when the browser is reloaded.
As the PopupManager.ts only renders newly added popups and as a formerly rendered popup will be removed when its anchor is removed, it is not necessary to listen on json adapter disposals. The only time the PopupManager.ts will try to rerender these popups with potentially unavailable anchors is when the browser is reloaded and in this case the property "popups" will be sent again and is therefore correctly filtered.
Additionally, close a Popup if its anchor is disposed to prevent memory leaks.
Some popup anchors may be part of tiles. Therefore, reposition those popups after the layout animation of the TileGrid is done.

448950

@fschinkel fschinkel requested a review from cguglielmo February 19, 2026 08:59
@fschinkel fschinkel self-assigned this Feb 19, 2026
@fschinkel fschinkel force-pushed the features/fschinkel/24.2/improve-JsonPopupManager branch from ee9b562 to da4a4f6 Compare February 19, 2026 09:01
@fschinkel fschinkel force-pushed the features/fschinkel/24.2/improve-JsonPopupManager branch 3 times, most recently from 4eafc8e to 78a5f4b Compare February 27, 2026 17:51
The PopupManager contains a set of popups, which themselves may contain
anchors. When a JsonPopup builds its json it may happen that there is no
json adapter for the anchor of the popup, because the anchor is e.g.
part of an outline that is currently not the active outline. The
JsonPopup can not leave its anchor property empty as a popup without
anchor will be rendered directly which would be incorrect. In addition,
the JsonPopup can not return null when creating its json as this leads
to other errors.
Therefore, the JsonPopupManager needs to filter its set of popups and
ensure that no popup containing an anchor without a json adapter is sent
to Scout JS. To ensure correct updates of its property "popups" the
JsonPopupManager needs to observe all current anchors of its popups and
perform an update of its property "popups" if json adapters are created
for one of these observed anchors. This is relevant e.g. when the
JsonPopupManager is processed before the json adapter of one of its
popups anchors is processed which may happen e.g. when the browser is
reloaded.
As the PopupManager.ts only renders newly added popups and as a formerly
rendered popup will be removed when its anchor is removed, it is not
necessary to listen on json adapter disposals. The only time the
PopupManager.ts will try to rerender these popups with potentially
unavailable anchors is when the browser is reloaded and in this case
the property "popups" will be sent again and is therefore correctly
filtered.
Additionally, close a Popup if its anchor is disposed to prevent memory
leaks.
Some popup anchors may be part of tiles. Therefore, reposition those
popups after the layout animation of the TileGrid is done.

448950
@fschinkel fschinkel force-pushed the features/fschinkel/24.2/improve-JsonPopupManager branch from 78a5f4b to 2380624 Compare March 4, 2026 16:40
@fschinkel fschinkel merged commit 50e1c4e into releases/24.2 Mar 4, 2026
4 checks passed
@fschinkel fschinkel deleted the features/fschinkel/24.2/improve-JsonPopupManager branch March 4, 2026 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants