diff --git a/src/platform/packages/shared/presentation/presentation_publishing/interfaces/publishes_data_views.ts b/src/platform/packages/shared/presentation/presentation_publishing/interfaces/publishes_data_views.ts index b3a9da716d6be..0518e1d6c2892 100644 --- a/src/platform/packages/shared/presentation/presentation_publishing/interfaces/publishes_data_views.ts +++ b/src/platform/packages/shared/presentation/presentation_publishing/interfaces/publishes_data_views.ts @@ -10,6 +10,10 @@ import { DataView } from '@kbn/data-views-plugin/common'; import { PublishingSubject } from '../publishing_subject'; +/** + * This API publishes a list of data views that it uses. Note that this should not contain any + * ad-hoc data views. + */ export interface PublishesDataViews { dataViews$: PublishingSubject; } diff --git a/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/get_options_list_control_factory.tsx b/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/get_options_list_control_factory.tsx index f5e7ac2d5da80..8a6326203c3b3 100644 --- a/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/get_options_list_control_factory.tsx +++ b/src/platform/plugins/shared/controls/public/controls/data_controls/options_list_control/get_options_list_control_factory.tsx @@ -189,7 +189,7 @@ export const getOptionsListControlFactory = (): DataControlFactory< stateManager, controlFetch$: (onReload: () => void) => controlGroupApi.controlFetch$(uuid, onReload), }).subscribe((result) => { - // if there was an error during fetch, set blocking error and return early + // if there was an error during fetch, set suggestion load error and return early if (Object.hasOwn(result, 'error')) { dataControl.api.setBlockingError((result as { error: Error }).error); return; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/data_views_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/data_views_manager.ts index ba3032c656c0d..bf09042708bd6 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/data_views_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/data_views_manager.ts @@ -43,7 +43,10 @@ export function initializeDataViewsManager( const dataViewsSubscription = combineLatest([controlGroupDataViewsPipe, childDataViewsPipe]) .pipe( switchMap(async ([controlGroupDataViews, childDataViews]) => { - const allDataViews = [...(controlGroupDataViews ?? []), ...childDataViews]; + const allDataViews = [...(controlGroupDataViews ?? []), ...childDataViews].filter( + (dataView) => dataView.isPersisted() + ); + if (allDataViews.length === 0) { try { const defaultDataView = await dataService.dataViews.getDefaultDataView(); diff --git a/src/platform/plugins/shared/data_views/common/data_views/abstract_data_views.ts b/src/platform/plugins/shared/data_views/common/data_views/abstract_data_views.ts index 6da94426c960d..ffb7c86f63c23 100644 --- a/src/platform/plugins/shared/data_views/common/data_views/abstract_data_views.ts +++ b/src/platform/plugins/shared/data_views/common/data_views/abstract_data_views.ts @@ -235,6 +235,9 @@ export abstract class AbstractDataView { this.originalSavedObjectBody = this.getAsSavedObjectBody(); }; + /** + * Returns true if the data view is persisted, and false if the dataview is adhoc. + */ isPersisted() { return typeof this.version === 'string'; }