timeseries: fix visibility bug on filtered scalar cards #5235
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.
ScalarCardContainer provides boolean observables
isCardVisibleandisEverVisibleto inform whether the line chart should be shown:<ng-container *ngIf="isEverVisible"><line-chart>...The
isCardVisibleuses the misleading ngrx selectorgetVisibleCardIds,giving the impression that a "visible cardId" is equivalent to "this card's
DOM element is visible". That assumption is false when there are 2
different DOM elements (filtered and unfiltered) for the same cardId and
the filtered DOM element happens to be shown first before the unfiltered
one is ever visible (in the sense that it is in the DOM without 'display: none'.
When a user enters a tag filter that shows a card that was previously not in
the visible viewport, it actually causes the 'display: none'd unfiltered card's
ngIf to insert its line chart into the DOM. Since it is 'display: none'd, the
line chart thinks its width: 0, height: 0, so after clearing the tag filter, we see
a blank card.
This change provides a more accurate computation of
isCardVisible,using the same
intersectionObserverdirective used by the Histogramcomponent for this same purpose.
Manually tested a consistent repro and saw that charts were no longer blank.
Googlers, see b/186682025, which includes a concrete repro.