[Dashboard] [Controls] Skip First Reload (#142868)

* Skip first reload of dashboard controls to ensure only the filters from control group initialization are applied
This commit is contained in:
Devon Thomson 2022-10-06 15:57:00 -03:00 committed by GitHub
parent e794156efb
commit 5a17c640fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 9 deletions

View file

@ -153,13 +153,17 @@ export class DashboardContainer extends Container<InheritedChildInput, Dashboard
isProjectEnabledInLabs('labs:dashboard:dashboardControls')
) {
this.controlGroup = controlGroup;
syncDashboardControlGroup({ dashboardContainer: this, controlGroup: this.controlGroup }).then(
(result) => {
this.controlGroup.untilReady().then(() => {
if (!this.controlGroup || isErrorEmbeddable(this.controlGroup)) return;
syncDashboardControlGroup({
dashboardContainer: this,
controlGroup: this.controlGroup,
}).then((result) => {
if (!result) return;
const { onDestroyControlGroup } = result;
this.onDestroyControlGroup = onDestroyControlGroup;
}
);
});
});
}
this.subscriptions.add(

View file

@ -10,7 +10,7 @@ import _ from 'lodash';
import { Subscription } from 'rxjs';
import deepEqual from 'fast-deep-equal';
import { compareFilters, COMPARE_ALL_OPTIONS, type Filter } from '@kbn/es-query';
import { debounceTime, distinctUntilChanged, distinctUntilKeyChanged } from 'rxjs/operators';
import { debounceTime, distinctUntilChanged, distinctUntilKeyChanged, skip } from 'rxjs/operators';
import {
ControlGroupInput,
@ -140,11 +140,10 @@ export const syncDashboardControlGroup = async ({
.pipe(
distinctUntilChanged(({ filters: filtersA }, { filters: filtersB }) =>
compareAllFilters(filtersA, filtersB)
)
),
skip(1) // skip first filter output because it will have been applied in initialize
)
.subscribe(() => {
dashboardContainer.updateInput({ lastReloadRequestTime: Date.now() });
})
.subscribe(() => dashboardContainer.updateInput({ lastReloadRequestTime: Date.now() }))
);
subscriptions.add(