diff --git a/opensearch_dashboards.json b/opensearch_dashboards.json index e23d1ded..1c6286f2 100644 --- a/opensearch_dashboards.json +++ b/opensearch_dashboards.json @@ -8,7 +8,9 @@ "opensearchDashboardsUtils" ], "optionalPlugins": [ - "share" + "share", + "dataSource", + "dataSourceManagement" ], "server": true, "ui": true, diff --git a/public/plugin.ts b/public/plugin.ts index 553bc082..0839135f 100644 --- a/public/plugin.ts +++ b/public/plugin.ts @@ -10,48 +10,59 @@ import { CoreStart, Plugin, } from '../../../src/core/public'; +import { DataSourcePluginSetup } from '../../../src/plugins/data_source/public'; +import { PLUGIN_ID, PLUGIN_NAME } from '../common'; +import './components/context_menu/context_menu'; +import { applicationService } from './components/utils/application_service'; +import { uiSettingsService } from './components/utils/settings_service'; +import { registerAllPluginNavGroups } from './plugin_nav'; import { + AppPluginStartDependencies, ReportsDashboardsPluginSetup, ReportsDashboardsPluginStart, - AppPluginStartDependencies, } from './types'; -import './components/context_menu/context_menu'; -import { PLUGIN_ID, PLUGIN_NAME } from '../common'; -import { uiSettingsService } from './components/utils/settings_service'; -import { applicationService } from './components/utils/application_service'; -import { registerAllPluginNavGroups } from './plugin_nav'; + +export interface ReportingPluginSetupDependencies { + dataSource: DataSourcePluginSetup; +} export class ReportsDashboardsPlugin - implements Plugin { - public setup(core: CoreSetup): ReportsDashboardsPluginSetup { + implements + Plugin { + public setup( + core: CoreSetup, + { dataSource }: ReportingPluginSetupDependencies + ): ReportsDashboardsPluginSetup { uiSettingsService.init(core.uiSettings, core.http); // Register an application into the side navigation menu - core.application.register({ - id: PLUGIN_ID, - title: i18n.translate('opensearch.reports.pluginName', { - defaultMessage: PLUGIN_NAME, - }), - category: { - id: 'opensearch', - label: i18n.translate('opensearch.reports.categoryName', { - defaultMessage: 'OpenSearch Plugins', + if (!dataSource) { + core.application.register({ + id: PLUGIN_ID, + title: i18n.translate('opensearch.reports.pluginName', { + defaultMessage: PLUGIN_NAME, }), + category: { + id: 'opensearch', + label: i18n.translate('opensearch.reports.categoryName', { + defaultMessage: 'OpenSearch Plugins', + }), + order: 2000, + }, order: 2000, - }, - order: 2000, - async mount(params: AppMountParameters) { - // Load application bundle - const { renderApp } = await import('./application'); - // Get start services as specified in opensearch_dashboards.json - const [coreStart, depsStart] = await core.getStartServices(); - // Render the application - return renderApp( - coreStart, - depsStart as AppPluginStartDependencies, - params - ); - }, - }); + async mount(params: AppMountParameters) { + // Load application bundle + const { renderApp } = await import('./application'); + // Get start services as specified in opensearch_dashboards.json + const [coreStart, depsStart] = await core.getStartServices(); + // Render the application + return renderApp( + coreStart, + depsStart as AppPluginStartDependencies, + params + ); + }, + }); + } registerAllPluginNavGroups(core); // Return methods that should be available to other plugins return {}; @@ -62,5 +73,5 @@ export class ReportsDashboardsPlugin return {}; } - public stop() { } + public stop() {} }