diff --git a/.github/workflows/cypress_workflow.yml b/.github/workflows/cypress_workflow.yml
index cd2d5ef48786..3e8ba3275999 100644
--- a/.github/workflows/cypress_workflow.yml
+++ b/.github/workflows/cypress_workflow.yml
@@ -3,7 +3,7 @@ name: Run cypress tests
# trigger on every PR for all branches
on:
pull_request:
- branches: [ '**' ]
+ branches: ['**']
paths-ignore:
- '**/*.md'
workflow_dispatch:
@@ -47,7 +47,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- group: [1, 2, 3, 4, 5, 6, 7, 8, 9]
+ group: [1, 2, 3, 4, 5, 6, 7, 8, 9]
container:
image: docker://opensearchstaging/ci-runner:ci-runner-rockylinux8-opensearch-dashboards-integtest-v2
options: --user 1001
@@ -184,7 +184,7 @@ jobs:
with:
issue-number: ${{ inputs.pr_number }}
comment-author: 'github-actions[bot]'
- body-includes: "${{ env.COMMENT_TAG }}"
+ body-includes: '${{ env.COMMENT_TAG }}'
- name: Add comment on the PR
uses: peter-evans/create-or-update-comment@v3
@@ -205,6 +205,6 @@ jobs:
'${{ env.SPEC }}'
```
- #### Link to results:
+ #### Link to results:
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
edit-mode: replace
diff --git a/cypress/integration/with-security/check_advanced_settings.js b/cypress/integration/with-security/check_advanced_settings.js
index 9ca41207724e..379362063e92 100644
--- a/cypress/integration/with-security/check_advanced_settings.js
+++ b/cypress/integration/with-security/check_advanced_settings.js
@@ -13,7 +13,7 @@ const loginPage = new LoginPage(cy);
describe('verify the advanced settings are saved', () => {
beforeEach(() => {
- miscUtils.visitPage('app/management/opensearch-dashboards/settings');
+ miscUtils.visitPage('app/settings');
loginPage.enterUserName('admin');
loginPage.enterPassword('admin');
loginPage.submit();
diff --git a/cypress/integration/with-security/helpers/generate_data.js b/cypress/integration/with-security/helpers/generate_data.js
index dcd711fc7c18..c2c4d2dbe57d 100755
--- a/cypress/integration/with-security/helpers/generate_data.js
+++ b/cypress/integration/with-security/helpers/generate_data.js
@@ -13,7 +13,7 @@ const loginPage = new LoginPage(cy);
describe('Generating BWC test data with security', () => {
beforeEach(() => {
- miscUtils.visitPage('app/management/opensearch-dashboards/settings');
+ miscUtils.visitPage('app/settings');
loginPage.enterUserName('admin');
loginPage.enterPassword('admin');
loginPage.submit();
@@ -29,7 +29,7 @@ describe('Generating BWC test data with security', () => {
});
it('adds advanced settings', () => {
- miscUtils.visitPage('app/management/opensearch-dashboards/settings');
+ miscUtils.visitPage('app/settings');
cy.get('[data-test-subj="advancedSetting-editField-theme:darkMode"]').click();
cy.get('[data-test-subj="advancedSetting-editField-timeline:max_buckets"]').type(
'{selectAll}4'
diff --git a/cypress/integration/without-security/check_advanced_settings.js b/cypress/integration/without-security/check_advanced_settings.js
index 9268d86a16e5..0094d53835b0 100644
--- a/cypress/integration/without-security/check_advanced_settings.js
+++ b/cypress/integration/without-security/check_advanced_settings.js
@@ -9,7 +9,7 @@ const miscUtils = new MiscUtils(cy);
describe('verify the advanced settings are saved', () => {
beforeEach(() => {
- miscUtils.visitPage('app/management/opensearch-dashboards/settings');
+ miscUtils.visitPage('app/settings');
});
it('the dark mode is on', () => {
diff --git a/cypress/integration/without-security/helpers/generate_data.js b/cypress/integration/without-security/helpers/generate_data.js
index 47e9c2f5f5ed..3aff136a70e0 100755
--- a/cypress/integration/without-security/helpers/generate_data.js
+++ b/cypress/integration/without-security/helpers/generate_data.js
@@ -12,7 +12,7 @@ describe('Generating BWC test data without security', () => {
miscUtils.visitPage('app');
});
it('adds advanced settings', () => {
- miscUtils.visitPage('app/management/opensearch-dashboards/settings');
+ miscUtils.visitPage('app/settings');
cy.get('[data-test-subj="advancedSetting-editField-theme:darkMode"]').click();
cy.get('[data-test-subj="advancedSetting-editField-timeline:max_buckets"]').type(
'{selectAll}4'
diff --git a/src/core/public/core_app/errors/url_overflow.test.ts b/src/core/public/core_app/errors/url_overflow.test.ts
index b2eee9c17d58..fe9cb8dca661 100644
--- a/src/core/public/core_app/errors/url_overflow.test.ts
+++ b/src/core/public/core_app/errors/url_overflow.test.ts
@@ -102,7 +102,7 @@ describe('url overflow detection', () => {
option in
advanced settings
diff --git a/src/core/public/core_app/errors/url_overflow.tsx b/src/core/public/core_app/errors/url_overflow.tsx
index 6dbfa96fff46..1de6fe785cf9 100644
--- a/src/core/public/core_app/errors/url_overflow.tsx
+++ b/src/core/public/core_app/errors/url_overflow.tsx
@@ -92,7 +92,7 @@ export const setupUrlOverflowDetection = ({ basePath, history, toasts, uiSetting
values={{
storeInSessionStorageParam: state:storeInSessionStorage
,
advancedSettingsLink: (
-
+
= ({ basePath }) =
values={{
storeInSessionStorageConfig: state:storeInSessionStorage
,
opensearchDashboardsSettingsLink: (
-
+
+
+ Foo
+
+
+`;
diff --git a/src/plugins/advanced_settings/public/management_app/components/page_wrapper/index.ts b/src/plugins/advanced_settings/public/management_app/components/page_wrapper/index.ts
new file mode 100644
index 000000000000..3cf0cdd26c99
--- /dev/null
+++ b/src/plugins/advanced_settings/public/management_app/components/page_wrapper/index.ts
@@ -0,0 +1,6 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+export { PageWrapper } from './page_wrapper';
diff --git a/src/plugins/advanced_settings/public/management_app/components/page_wrapper/page_wrapper.test.tsx b/src/plugins/advanced_settings/public/management_app/components/page_wrapper/page_wrapper.test.tsx
new file mode 100644
index 000000000000..550eb3ee1cae
--- /dev/null
+++ b/src/plugins/advanced_settings/public/management_app/components/page_wrapper/page_wrapper.test.tsx
@@ -0,0 +1,16 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import React from 'react';
+import { render } from '@testing-library/react';
+import { PageWrapper } from './page_wrapper';
+
+describe('PageWrapper', () => {
+ it('should render normally', async () => {
+ const { findByText, container } = render(Foo);
+ await findByText('Foo');
+ expect(container).toMatchSnapshot();
+ });
+});
diff --git a/src/plugins/advanced_settings/public/management_app/components/page_wrapper/page_wrapper.tsx b/src/plugins/advanced_settings/public/management_app/components/page_wrapper/page_wrapper.tsx
new file mode 100644
index 000000000000..1b1949c334e4
--- /dev/null
+++ b/src/plugins/advanced_settings/public/management_app/components/page_wrapper/page_wrapper.tsx
@@ -0,0 +1,21 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { EuiPageContent } from '@elastic/eui';
+import React from 'react';
+
+export const PageWrapper = (props: { children?: React.ReactChild }) => {
+ return (
+
+ );
+};
diff --git a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx
index 7fa0b9ddd2c0..648382771ba8 100644
--- a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx
+++ b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx
@@ -34,18 +34,24 @@ import { Router, Switch, Route } from 'react-router-dom';
import { i18n } from '@osd/i18n';
import { I18nProvider } from '@osd/i18n/react';
-import { StartServicesAccessor } from 'src/core/public';
+import {
+ AppMountParameters,
+ ChromeBreadcrumb,
+ ScopedHistory,
+ StartServicesAccessor,
+} from 'src/core/public';
import { AdvancedSettings } from './advanced_settings';
-import { ManagementAppMountParams } from '../../../management/public';
import { ComponentRegistry } from '../types';
+import { reactRouterNavigate } from '../../../opensearch_dashboards_react/public';
+import { PageWrapper } from './components/page_wrapper';
import './index.scss';
const title = i18n.translate('advancedSettings.advancedSettingsLabel', {
defaultMessage: 'Advanced settings',
});
-const crumb = [{ text: title }];
+const crumb: ChromeBreadcrumb[] = [{ text: title }];
const readOnlyBadge = {
text: i18n.translate('advancedSettings.badge.readOnly.text', {
@@ -57,13 +63,18 @@ const readOnlyBadge = {
iconType: 'glasses',
};
-export async function mountManagementSection(
+export async function mountAdvancedSettingsManagementSection(
getStartServices: StartServicesAccessor,
- params: ManagementAppMountParams,
+ params: AppMountParameters,
componentRegistry: ComponentRegistry['start']
) {
- params.setBreadcrumbs(crumb);
const [{ uiSettings, notifications, docLinks, application, chrome }] = await getStartServices();
+ chrome.setBreadcrumbs([
+ ...crumb.map((item) => ({
+ ...item,
+ ...(item.href ? reactRouterNavigate(params.history, item.href) : {}),
+ })),
+ ]);
const canSave = application.capabilities.advancedSettings.save as boolean;
@@ -72,21 +83,23 @@ export async function mountManagementSection(
}
ReactDOM.render(
-
-
-
-
-
-
-
-
- ,
+
+
+
+
+
+
+
+
+
+
+ ,
params.element
);
return () => {
diff --git a/src/plugins/advanced_settings/public/plugin.ts b/src/plugins/advanced_settings/public/plugin.ts
index 608bfc6a25e7..91fe18612749 100644
--- a/src/plugins/advanced_settings/public/plugin.ts
+++ b/src/plugins/advanced_settings/public/plugin.ts
@@ -29,10 +29,11 @@
*/
import { i18n } from '@osd/i18n';
-import { CoreSetup, Plugin } from 'opensearch-dashboards/public';
+import { AppMountParameters, CoreSetup, Plugin } from 'opensearch-dashboards/public';
import { FeatureCatalogueCategory } from '../../home/public';
import { ComponentRegistry } from './component_registry';
import { AdvancedSettingsSetup, AdvancedSettingsStart, AdvancedSettingsPluginSetup } from './types';
+import { DEFAULT_APP_CATEGORIES } from '../../../core/public';
const component = new ComponentRegistry();
@@ -42,18 +43,21 @@ const title = i18n.translate('advancedSettings.advancedSettingsLabel', {
export class AdvancedSettingsPlugin
implements Plugin {
- public setup(core: CoreSetup, { management, home }: AdvancedSettingsPluginSetup) {
- const opensearchDashboardsSection = management.sections.section.opensearchDashboards;
-
- opensearchDashboardsSection.registerApp({
+ public setup(core: CoreSetup, { home }: AdvancedSettingsPluginSetup) {
+ core.application.register({
id: 'settings',
title,
- order: 3,
- async mount(params) {
- const { mountManagementSection } = await import(
+ order: 99,
+ category: DEFAULT_APP_CATEGORIES.management,
+ async mount(params: AppMountParameters) {
+ const { mountAdvancedSettingsManagementSection } = await import(
'./management_app/mount_management_section'
);
- return mountManagementSection(core.getStartServices, params, component.start);
+ return mountAdvancedSettingsManagementSection(
+ core.getStartServices,
+ params,
+ component.start
+ );
},
});
@@ -66,7 +70,7 @@ export class AdvancedSettingsPlugin
'Customize your OpenSearch Dashboards experience — change the date format, turn on dark mode, and more.',
}),
icon: 'gear',
- path: '/app/management/opensearch-dashboards/settings',
+ path: '/app/settings',
showOnHomePage: false,
category: FeatureCatalogueCategory.ADMIN,
});
diff --git a/src/plugins/dashboard/server/saved_objects/dashboard.ts b/src/plugins/dashboard/server/saved_objects/dashboard.ts
index ee2c162733bc..6d6a08954fbe 100644
--- a/src/plugins/dashboard/server/saved_objects/dashboard.ts
+++ b/src/plugins/dashboard/server/saved_objects/dashboard.ts
@@ -43,9 +43,7 @@ export const dashboardSavedObjectType: SavedObjectsType = {
return obj.attributes.title;
},
getEditUrl(obj) {
- return `/management/opensearch-dashboards/objects/savedDashboards/${encodeURIComponent(
- obj.id
- )}`;
+ return `/objects/savedDashboards/${encodeURIComponent(obj.id)}`;
},
getInAppUrl(obj) {
return {
diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts
index 688605821097..489ad154afa0 100644
--- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts
+++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts
@@ -418,11 +418,7 @@ export class IndexPatternsService {
);
if (!savedObject.version) {
- throw new SavedObjectNotFound(
- savedObjectType,
- id,
- 'management/opensearch-dashboards/indexPatterns'
- );
+ throw new SavedObjectNotFound(savedObjectType, id, 'indexPatterns');
}
const spec = this.savedObjectToSpec(savedObject);
diff --git a/src/plugins/data/public/index_patterns/index_patterns/redirect_no_index_pattern.tsx b/src/plugins/data/public/index_patterns/index_patterns/redirect_no_index_pattern.tsx
index b09bc8adde6f..1a43ab22aaae 100644
--- a/src/plugins/data/public/index_patterns/index_patterns/redirect_no_index_pattern.tsx
+++ b/src/plugins/data/public/index_patterns/index_patterns/redirect_no_index_pattern.tsx
@@ -42,9 +42,7 @@ export const onRedirectNoIndexPattern = (
overlays: CoreStart['overlays']
) => () => {
const canManageIndexPatterns = capabilities.management.opensearchDashboards.indexPatterns;
- const redirectTarget = canManageIndexPatterns
- ? '/management/opensearch-dashboards/indexPatterns'
- : '/home';
+ const redirectTarget = canManageIndexPatterns ? '/indexPatterns' : '/home';
let timeoutId: NodeJS.Timeout | undefined;
if (timeoutId) {
@@ -72,8 +70,8 @@ export const onRedirectNoIndexPattern = (
if (redirectTarget === '/home') {
navigateToApp('home');
} else {
- navigateToApp('management', {
- path: `/opensearch-dashboards/indexPatterns?bannerMessage=${bannerMessage}`,
+ navigateToApp('indexPatterns', {
+ path: `?bannerMessage=${bannerMessage}`,
});
}
diff --git a/src/plugins/data/public/search/errors/painless_error.tsx b/src/plugins/data/public/search/errors/painless_error.tsx
index 1522dcf97cb0..ee11d77b98f5 100644
--- a/src/plugins/data/public/search/errors/painless_error.tsx
+++ b/src/plugins/data/public/search/errors/painless_error.tsx
@@ -53,9 +53,7 @@ export class PainlessError extends OsdError {
public getErrorMessage(application: ApplicationStart) {
function onClick() {
- application.navigateToApp('management', {
- path: `/opensearch-dashboards/indexPatterns`,
- });
+ application.navigateToApp('indexPatterns');
}
return (
diff --git a/src/plugins/data/server/saved_objects/index_patterns.ts b/src/plugins/data/server/saved_objects/index_patterns.ts
index 5f0864bac926..391adf6a973f 100644
--- a/src/plugins/data/server/saved_objects/index_patterns.ts
+++ b/src/plugins/data/server/saved_objects/index_patterns.ts
@@ -43,15 +43,11 @@ export const indexPatternSavedObjectType: SavedObjectsType = {
return obj.attributes.title;
},
getEditUrl(obj) {
- return `/management/opensearch-dashboards/indexPatterns/patterns/${encodeURIComponent(
- obj.id
- )}`;
+ return `/indexPatterns/patterns/${encodeURIComponent(obj.id)}`;
},
getInAppUrl(obj) {
return {
- path: `/app/management/opensearch-dashboards/indexPatterns/patterns/${encodeURIComponent(
- obj.id
- )}`,
+ path: `/app/indexPatterns/patterns/${encodeURIComponent(obj.id)}`,
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
};
},
diff --git a/src/plugins/data_source/server/saved_objects/data_source.ts b/src/plugins/data_source/server/saved_objects/data_source.ts
index 9404a4bcf371..58cace8ada2d 100644
--- a/src/plugins/data_source/server/saved_objects/data_source.ts
+++ b/src/plugins/data_source/server/saved_objects/data_source.ts
@@ -17,11 +17,11 @@ export const dataSource: SavedObjectsType = {
return obj.attributes.title;
},
getEditUrl(obj) {
- return `/management/opensearch-dashboards/dataSources/${encodeURIComponent(obj.id)}`;
+ return `/dataSources/${encodeURIComponent(obj.id)}`;
},
getInAppUrl(obj) {
return {
- path: `/app/management/opensearch-dashboards/dataSources/${encodeURIComponent(obj.id)}`,
+ path: `/app/dataSources/${encodeURIComponent(obj.id)}`,
uiCapabilitiesPath: 'management.opensearchDashboards.dataSources',
};
},
diff --git a/src/plugins/data_source_management/opensearch_dashboards.json b/src/plugins/data_source_management/opensearch_dashboards.json
index cfcfdd2ce430..565ccff401dd 100644
--- a/src/plugins/data_source_management/opensearch_dashboards.json
+++ b/src/plugins/data_source_management/opensearch_dashboards.json
@@ -3,7 +3,7 @@
"version": "opensearchDashboards",
"server": false,
"ui": true,
- "requiredPlugins": ["management", "dataSource", "indexPatternManagement"],
+ "requiredPlugins": ["dataSource", "indexPatternManagement"],
"optionalPlugins": [],
"requiredBundles": ["opensearchDashboardsReact", "dataSource"],
"extraPublicDirs": ["public/components/utils"]
diff --git a/src/plugins/data_source_management/public/components/data_source_column/data_source_column.tsx b/src/plugins/data_source_management/public/components/data_source_column/data_source_column.tsx
index 640eb1b369fd..cd6fc7c17ae2 100644
--- a/src/plugins/data_source_management/public/components/data_source_column/data_source_column.tsx
+++ b/src/plugins/data_source_management/public/components/data_source_column/data_source_column.tsx
@@ -56,11 +56,7 @@ export class DataSourceColumn implements IndexPatternTableColumn
?.map((dataSource) => {
return {
...dataSource,
- relativeUrl: basePath.prepend(
- `/app/management/opensearch-dashboards/dataSources/${encodeURIComponent(
- dataSource.id
- )}`
- ),
+ relativeUrl: basePath.prepend(`/app/dataSources/${encodeURIComponent(dataSource.id)}`),
};
})
?.reduce(
diff --git a/src/plugins/data_source_management/public/components/page_wrapper/__snapshots__/page_wrapper.test.tsx.snap b/src/plugins/data_source_management/public/components/page_wrapper/__snapshots__/page_wrapper.test.tsx.snap
new file mode 100644
index 000000000000..3c5257e2e8d1
--- /dev/null
+++ b/src/plugins/data_source_management/public/components/page_wrapper/__snapshots__/page_wrapper.test.tsx.snap
@@ -0,0 +1,13 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`PageWrapper should render normally 1`] = `
+
+`;
diff --git a/src/plugins/data_source_management/public/components/page_wrapper/index.ts b/src/plugins/data_source_management/public/components/page_wrapper/index.ts
new file mode 100644
index 000000000000..3cf0cdd26c99
--- /dev/null
+++ b/src/plugins/data_source_management/public/components/page_wrapper/index.ts
@@ -0,0 +1,6 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+export { PageWrapper } from './page_wrapper';
diff --git a/src/plugins/data_source_management/public/components/page_wrapper/page_wrapper.test.tsx b/src/plugins/data_source_management/public/components/page_wrapper/page_wrapper.test.tsx
new file mode 100644
index 000000000000..550eb3ee1cae
--- /dev/null
+++ b/src/plugins/data_source_management/public/components/page_wrapper/page_wrapper.test.tsx
@@ -0,0 +1,16 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import React from 'react';
+import { render } from '@testing-library/react';
+import { PageWrapper } from './page_wrapper';
+
+describe('PageWrapper', () => {
+ it('should render normally', async () => {
+ const { findByText, container } = render(Foo);
+ await findByText('Foo');
+ expect(container).toMatchSnapshot();
+ });
+});
diff --git a/src/plugins/data_source_management/public/components/page_wrapper/page_wrapper.tsx b/src/plugins/data_source_management/public/components/page_wrapper/page_wrapper.tsx
new file mode 100644
index 000000000000..1b1949c334e4
--- /dev/null
+++ b/src/plugins/data_source_management/public/components/page_wrapper/page_wrapper.tsx
@@ -0,0 +1,21 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { EuiPageContent } from '@elastic/eui';
+import React from 'react';
+
+export const PageWrapper = (props: { children?: React.ReactChild }) => {
+ return (
+
+ );
+};
diff --git a/src/plugins/data_source_management/public/management_app/index.ts b/src/plugins/data_source_management/public/management_app/index.ts
index 5ccbfb947646..960adc7ba5a6 100644
--- a/src/plugins/data_source_management/public/management_app/index.ts
+++ b/src/plugins/data_source_management/public/management_app/index.ts
@@ -3,4 +3,4 @@
* SPDX-License-Identifier: Apache-2.0
*/
-export { mountManagementSection } from './mount_management_section';
+export { mountDataSourcesManagementSection } from './mount_management_section';
diff --git a/src/plugins/data_source_management/public/management_app/mount_management_section.tsx b/src/plugins/data_source_management/public/management_app/mount_management_section.tsx
index 9fe1f2406382..f61113042458 100644
--- a/src/plugins/data_source_management/public/management_app/mount_management_section.tsx
+++ b/src/plugins/data_source_management/public/management_app/mount_management_section.tsx
@@ -3,33 +3,42 @@
* SPDX-License-Identifier: Apache-2.0
*/
-import { StartServicesAccessor } from 'src/core/public';
+import {
+ AppMountParameters,
+ ChromeBreadcrumb,
+ ScopedHistory,
+ StartServicesAccessor,
+} from 'src/core/public';
import { I18nProvider } from '@osd/i18n/react';
import React from 'react';
import ReactDOM from 'react-dom';
import { Route, Router, Switch } from 'react-router-dom';
-import { DataPublicPluginStart } from 'src/plugins/data/public';
-import { ManagementAppMountParams } from '../../../management/public';
-
import { OpenSearchDashboardsContextProvider } from '../../../opensearch_dashboards_react/public';
import { CreateDataSourceWizardWithRouter } from '../components/create_data_source_wizard';
import { DataSourceTableWithRouter } from '../components/data_source_table';
-import { DataSourceManagementContext } from '../types';
+import { DataSourceManagementContext, DataSourceManagementStartDependencies } from '../types';
import { EditDataSourceWithRouter } from '../components/edit_data_source';
+import { PageWrapper } from '../components/page_wrapper';
+import { reactRouterNavigate } from '../../../opensearch_dashboards_react/public';
-export interface DataSourceManagementStartDependencies {
- data: DataPublicPluginStart;
-}
-
-export async function mountManagementSection(
+export async function mountDataSourcesManagementSection(
getStartServices: StartServicesAccessor,
- params: ManagementAppMountParams
+ params: AppMountParameters
) {
const [
{ chrome, application, savedObjects, uiSettings, notifications, overlays, http, docLinks },
] = await getStartServices();
+ const setBreadcrumbsScoped = (crumbs: ChromeBreadcrumb[] = []) => {
+ const wrapBreadcrumb = (item: ChromeBreadcrumb, scopedHistory: ScopedHistory) => ({
+ ...item,
+ ...(item.href ? reactRouterNavigate(scopedHistory, item.href) : {}),
+ });
+
+ chrome.setBreadcrumbs([...crumbs.map((item) => wrapBreadcrumb(item, params.history))]);
+ };
+
const deps: DataSourceManagementContext = {
chrome,
application,
@@ -39,27 +48,29 @@ export async function mountManagementSection(
overlays,
http,
docLinks,
- setBreadcrumbs: params.setBreadcrumbs,
+ setBreadcrumbs: setBreadcrumbsScoped,
};
ReactDOM.render(
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ,
params.element
);
diff --git a/src/plugins/data_source_management/public/plugin.ts b/src/plugins/data_source_management/public/plugin.ts
index 0c7123e47a94..3fa10d145b7f 100644
--- a/src/plugins/data_source_management/public/plugin.ts
+++ b/src/plugins/data_source_management/public/plugin.ts
@@ -3,7 +3,14 @@
* SPDX-License-Identifier: Apache-2.0
*/
-import { CoreSetup, CoreStart, Plugin } from '../../../core/public';
+import {
+ AppMountParameters,
+ CoreSetup,
+ CoreStart,
+ DEFAULT_APP_CATEGORIES,
+ Plugin,
+ StartServicesAccessor,
+} from '../../../core/public';
import { PLUGIN_NAME } from '../common';
@@ -15,6 +22,7 @@ import {
IAuthenticationMethodRegistery,
AuthenticationMethodRegistery,
} from './auth_registry';
+import { DataSourceManagementStartDependencies } from './types';
export interface DataSourceManagementSetupDependencies {
management: ManagementSetup;
@@ -43,14 +51,8 @@ export class DataSourceManagementPlugin
public setup(
core: CoreSetup,
- { management, indexPatternManagement }: DataSourceManagementSetupDependencies
+ { indexPatternManagement }: DataSourceManagementSetupDependencies
) {
- const opensearchDashboardsSection = management.sections.section.opensearchDashboards;
-
- if (!opensearchDashboardsSection) {
- throw new Error('`opensearchDashboards` management section not found.');
- }
-
const savedObjectPromise = core
.getStartServices()
.then(([coreStart]) => coreStart.savedObjects);
@@ -58,14 +60,18 @@ export class DataSourceManagementPlugin
const column = new DataSourceColumn(savedObjectPromise, httpPromise);
indexPatternManagement.columns.register(column);
- opensearchDashboardsSection.registerApp({
+ core.application.register({
id: DSM_APP_ID,
title: PLUGIN_NAME,
order: 1,
- mount: async (params) => {
- const { mountManagementSection } = await import('./management_app');
+ category: DEFAULT_APP_CATEGORIES.opensearchDashboards,
+ mount: async (params: AppMountParameters) => {
+ const { mountDataSourcesManagementSection } = await import('./management_app');
- return mountManagementSection(core.getStartServices, params);
+ return mountDataSourcesManagementSection(
+ core.getStartServices as StartServicesAccessor,
+ params
+ );
},
});
diff --git a/src/plugins/data_source_management/public/types.ts b/src/plugins/data_source_management/public/types.ts
index d461daba82cc..65e1b604d02c 100644
--- a/src/plugins/data_source_management/public/types.ts
+++ b/src/plugins/data_source_management/public/types.ts
@@ -14,6 +14,7 @@ import {
HttpSetup,
} from 'src/core/public';
import { ManagementAppMountParams } from 'src/plugins/management/public';
+import { DataPublicPluginStart } from 'src/plugins/data/public';
import { SavedObjectAttributes } from 'src/core/types';
import { i18n } from '@osd/i18n';
import { SigV4ServiceName } from '../../data_source/common/data_sources';
@@ -115,3 +116,7 @@ export interface SigV4Content extends SavedObjectAttributes {
region: string;
service?: SigV4ServiceName;
}
+
+export interface DataSourceManagementStartDependencies {
+ data: DataPublicPluginStart;
+}
diff --git a/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap b/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap
index 1fa9680fa708..45e15f809f63 100644
--- a/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap
+++ b/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap
@@ -53,7 +53,7 @@ exports[`render 1`] = `
>
= ({ addBasePath, onClose }) => {
modes. You or your administrator can change to the previous theme by visiting {advancedSettingsLink}."
values={{
advancedSettingsLink: (
-
+
,
- params: ManagementAppMountParams,
+ params: AppMountParameters,
getMlCardState: () => MlCardState,
dataSource?: DataSourcePluginSetup
) {
@@ -77,6 +85,17 @@ export async function mountManagementSection(
chrome.setBadge(readOnlyBadge);
}
+ const setBreadcrumbsScope = (crumbs: ChromeBreadcrumb[] = [], appHistory?: ScopedHistory) => {
+ const wrapBreadcrumb = (item: ChromeBreadcrumb, scopedHistory: ScopedHistory) => ({
+ ...item,
+ ...(item.href ? reactRouterNavigate(scopedHistory, item.href) : {}),
+ });
+
+ chrome.setBreadcrumbs([
+ ...crumbs.map((item) => wrapBreadcrumb(item, appHistory || params.history)),
+ ]);
+ };
+
const deps: IndexPatternManagmentContext = {
chrome,
application,
@@ -88,33 +107,37 @@ export async function mountManagementSection(
docLinks,
data,
indexPatternManagementStart: indexPatternManagementStart as IndexPatternManagementStart,
- setBreadcrumbs: params.setBreadcrumbs,
+ setBreadcrumbs: setBreadcrumbsScope,
getMlCardState,
dataSourceEnabled,
hideLocalCluster,
};
ReactDOM.render(
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ,
params.element
);
diff --git a/src/plugins/index_pattern_management/public/plugin.ts b/src/plugins/index_pattern_management/public/plugin.ts
index 98eaab6160ee..0b9443a735a1 100644
--- a/src/plugins/index_pattern_management/public/plugin.ts
+++ b/src/plugins/index_pattern_management/public/plugin.ts
@@ -29,7 +29,13 @@
*/
import { i18n } from '@osd/i18n';
-import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from 'src/core/public';
+import {
+ PluginInitializerContext,
+ CoreSetup,
+ CoreStart,
+ Plugin,
+ AppMountParameters,
+} from 'src/core/public';
import { DataPublicPluginStart } from 'src/plugins/data/public';
import { DataSourcePluginSetup, DataSourcePluginStart } from 'src/plugins/data_source/public';
import { UrlForwardingSetup } from '../../url_forwarding/public';
@@ -39,10 +45,9 @@ import {
IndexPatternManagementServiceStart,
} from './service';
-import { ManagementSetup } from '../../management/public';
+import { DEFAULT_APP_CATEGORIES } from '../../../core/public';
export interface IndexPatternManagementSetupDependencies {
- management: ManagementSetup;
urlForwarding: UrlForwardingSetup;
dataSource?: DataSourcePluginSetup;
}
@@ -78,15 +83,9 @@ export class IndexPatternManagementPlugin
core: CoreSetup,
dependencies: IndexPatternManagementSetupDependencies
) {
- const { urlForwarding, management, dataSource } = dependencies;
-
- const opensearchDashboardsSection = management.sections.section.opensearchDashboards;
-
- if (!opensearchDashboardsSection) {
- throw new Error('`opensearchDashboards` management section not found.');
- }
+ const { urlForwarding, dataSource } = dependencies;
- const newAppPath = `management/opensearch-dashboards/${IPM_APP_ID}`;
+ const newAppPath = IPM_APP_ID;
const legacyPatternsPath = 'management/opensearch-dashboards/index_patterns';
urlForwarding.forwardApp(
@@ -99,11 +98,13 @@ export class IndexPatternManagementPlugin
return pathInApp && `/patterns${pathInApp}`;
});
- opensearchDashboardsSection.registerApp({
+ // register it under Library
+ core.application.register({
id: IPM_APP_ID,
title: sectionsHeader,
- order: 0,
- mount: async (params) => {
+ order: 8100,
+ category: DEFAULT_APP_CATEGORIES.opensearchDashboards,
+ mount: async (params: AppMountParameters) => {
const { mountManagementSection } = await import('./management_app');
return mountManagementSection(
diff --git a/src/plugins/opensearch_dashboards_overview/public/components/getting_started/__snapshots__/getting_started.test.tsx.snap b/src/plugins/opensearch_dashboards_overview/public/components/getting_started/__snapshots__/getting_started.test.tsx.snap
index 9df3bb12caec..db7484e21379 100644
--- a/src/plugins/opensearch_dashboards_overview/public/components/getting_started/__snapshots__/getting_started.test.tsx.snap
+++ b/src/plugins/opensearch_dashboards_overview/public/components/getting_started/__snapshots__/getting_started.test.tsx.snap
@@ -171,7 +171,7 @@ exports[`GettingStarted dark mode on 1`] = `
= ({ addBasePath, isDarkTheme, apps }) =>
-
+
= ({ addBasePath, path }) => {
diff --git a/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.test.tsx b/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.test.tsx
index 2e27ebd0cb6b..fcd417a42826 100644
--- a/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.test.tsx
+++ b/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.test.tsx
@@ -200,7 +200,7 @@ describe('OverviewPageHeader toolbar items - Management', () => {
return component.find({
className: 'osdOverviewPageHeader__actionButton',
- href: '/app/management',
+ href: '/app/settings',
});
};
diff --git a/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.tsx b/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.tsx
index a636f7ecdb7d..e27a99fc4d44 100644
--- a/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.tsx
+++ b/src/plugins/opensearch_dashboards_react/public/overview_page/overview_page_header/overview_page_header.tsx
@@ -136,7 +136,7 @@ export const OverviewPageHeader: FC = ({
className="osdOverviewPageHeader__actionButton"
flush="both"
iconType="gear"
- href={addBasePath('/app/management')}
+ href={addBasePath('/app/settings')}
>
{i18n.translate(
'opensearch-dashboards-react.osdOverviewPageHeader.stackManagementButtonLabel',
diff --git a/src/plugins/opensearch_dashboards_react/public/table_list_view/table_list_view.tsx b/src/plugins/opensearch_dashboards_react/public/table_list_view/table_list_view.tsx
index 438971862c79..0df7289caf75 100644
--- a/src/plugins/opensearch_dashboards_react/public/table_list_view/table_list_view.tsx
+++ b/src/plugins/opensearch_dashboards_react/public/table_list_view/table_list_view.tsx
@@ -315,7 +315,7 @@ class TableListView extends React.ComponentlistingLimit,
advancedSettingsLink: (
-
+
;
serviceRegistry: ISavedObjectsManagementServiceRegistry;
- mountParams: ManagementAppMountParams;
dataSourceEnabled: boolean;
hideLocalCluster: boolean;
+ appMountParams?: AppMountParameters;
+ title: string;
+ allowedObjectTypes?: string[];
}
-let allowedObjectTypes: string[] | undefined;
-
-const title = i18n.translate('savedObjectsManagement.objects.savedObjectsTitle', {
- defaultMessage: 'Saved Objects',
-});
-
const SavedObjectsEditionPage = lazy(() => import('./saved_objects_edition_page'));
const SavedObjectsTablePage = lazy(() => import('./saved_objects_table_page'));
export const mountManagementSection = async ({
core,
- mountParams,
+ appMountParams,
serviceRegistry,
dataSourceEnabled,
hideLocalCluster,
+ title,
+ allowedObjectTypes,
}: MountParams) => {
const [coreStart, { data, uiActions }, pluginStart] = await core.getStartServices();
- const { element, history, setBreadcrumbs } = mountParams;
+ const usedMountParams = appMountParams || ({} as ManagementAppMountParams);
+ const { element, history } = usedMountParams;
+ const { chrome } = coreStart;
+ const setBreadcrumbs = chrome.setBreadcrumbs;
if (allowedObjectTypes === undefined) {
allowedObjectTypes = await getAllowedTypes(coreStart.http);
}
@@ -90,31 +91,36 @@ export const mountManagementSection = async ({
}>
-
+
+
+
}>
-
+
+
+
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap
index d18762f4912f..a232c07a3a86 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap
@@ -314,10 +314,10 @@ exports[`SavedObjectsTable should render normally 1`] = `
Object {
"id": "1",
"meta": Object {
- "editUrl": "#/management/opensearch-dashboards/indexPatterns/patterns/1",
+ "editUrl": "#/indexPatterns/patterns/1",
"icon": "indexPatternApp",
"inAppUrl": Object {
- "path": "/management/opensearch-dashboards/indexPatterns/patterns/1",
+ "path": "/indexPatterns/patterns/1",
"uiCapabilitiesPath": "management.opensearchDashboards.indexPatterns",
},
"title": "MyIndexPattern*",
@@ -327,7 +327,7 @@ exports[`SavedObjectsTable should render normally 1`] = `
Object {
"id": "2",
"meta": Object {
- "editUrl": "/management/opensearch-dashboards/objects/savedSearches/2",
+ "editUrl": "/objects/savedSearches/2",
"icon": "search",
"inAppUrl": Object {
"path": "/discover/2",
@@ -340,7 +340,7 @@ exports[`SavedObjectsTable should render normally 1`] = `
Object {
"id": "3",
"meta": Object {
- "editUrl": "/management/opensearch-dashboards/objects/savedDashboards/3",
+ "editUrl": "/objects/savedDashboards/3",
"icon": "dashboardApp",
"inAppUrl": Object {
"path": "/dashboard/3",
@@ -353,7 +353,7 @@ exports[`SavedObjectsTable should render normally 1`] = `
Object {
"id": "4",
"meta": Object {
- "editUrl": "/management/opensearch-dashboards/objects/savedVisualizations/4",
+ "editUrl": "/objects/savedVisualizations/4",
"icon": "visualizeApp",
"inAppUrl": Object {
"path": "/edit/4",
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap
index 038e1aaf2d8f..dace178024f2 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/header.test.tsx.snap
@@ -10,13 +10,7 @@ exports[`Header should render normally 1`] = `
grow={false}
>
-
-
-
+
void;
onImport: () => void;
onRefresh: () => void;
filteredCount: number;
+ title: string;
}) => (
-
-
-
+ {title}
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx
index 1f21e5990c74..5afdbacf6dff 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx
@@ -53,7 +53,7 @@ describe('Relationships', () => {
id: '1',
relationship: 'parent',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedSearches/1',
+ editUrl: '/objects/savedSearches/1',
icon: 'search',
inAppUrl: {
path: '/app/discover#//1',
@@ -67,7 +67,7 @@ describe('Relationships', () => {
id: '2',
relationship: 'parent',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/2',
+ editUrl: '/objects/savedVisualizations/2',
icon: 'visualizeApp',
inAppUrl: {
path: '/app/visualize#/edit/2',
@@ -85,9 +85,9 @@ describe('Relationships', () => {
meta: {
title: 'MyIndexPattern*',
icon: 'indexPatternApp',
- editUrl: '#/management/opensearch-dashboards/indexPatterns/patterns/1',
+ editUrl: '#/indexPatterns/patterns/1',
inAppUrl: {
- path: '/management/opensearch-dashboards/indexPatterns/patterns/1',
+ path: '/indexPatterns/patterns/1',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
},
@@ -120,10 +120,10 @@ describe('Relationships', () => {
id: '1',
relationship: 'child',
meta: {
- editUrl: '/management/opensearch-dashboards/indexPatterns/patterns/1',
+ editUrl: '/indexPatterns/patterns/1',
icon: 'indexPatternApp',
inAppUrl: {
- path: '/app/management/opensearch-dashboards/indexPatterns/patterns/1',
+ path: '/app/indexPatterns/patterns/1',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
title: 'My Index Pattern',
@@ -134,7 +134,7 @@ describe('Relationships', () => {
id: '2',
relationship: 'parent',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/2',
+ editUrl: '/objects/savedVisualizations/2',
icon: 'visualizeApp',
inAppUrl: {
path: '/app/visualize#/edit/2',
@@ -152,7 +152,7 @@ describe('Relationships', () => {
meta: {
title: 'MySearch',
icon: 'search',
- editUrl: '/management/opensearch-dashboards/objects/savedSearches/1',
+ editUrl: '/objects/savedSearches/1',
inAppUrl: {
path: '/discover/1',
uiCapabilitiesPath: 'discover.show',
@@ -187,7 +187,7 @@ describe('Relationships', () => {
id: '1',
relationship: 'parent',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedDashboards/1',
+ editUrl: '/objects/savedDashboards/1',
icon: 'dashboardApp',
inAppUrl: {
path: '/app/opensearch-dashboards#/dashboard/1',
@@ -201,7 +201,7 @@ describe('Relationships', () => {
id: '2',
relationship: 'parent',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedDashboards/2',
+ editUrl: '/objects/savedDashboards/2',
icon: 'dashboardApp',
inAppUrl: {
path: '/app/opensearch-dashboards#/dashboard/2',
@@ -219,7 +219,7 @@ describe('Relationships', () => {
meta: {
title: 'MyViz',
icon: 'visualizeApp',
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/1',
+ editUrl: '/objects/savedVisualizations/1',
inAppUrl: {
path: '/edit/1',
uiCapabilitiesPath: 'visualize.show',
@@ -256,7 +256,7 @@ describe('Relationships', () => {
meta: {
title: 'MyViz',
icon: 'visualizeApp',
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/1',
+ editUrl: '/objects/savedVisualizations/1',
inAppUrl: {
path: '/edit/1',
uiCapabilitiesPath: 'visualize.show',
@@ -272,7 +272,7 @@ describe('Relationships', () => {
meta: {
title: 'MyAugmentVisObject',
icon: 'savedObject',
- editUrl: '/management/opensearch-dashboards/objects/savedAugmentVis/1',
+ editUrl: '/objects/savedAugmentVis/1',
},
},
close: jest.fn(),
@@ -303,7 +303,7 @@ describe('Relationships', () => {
id: '1',
relationship: 'child',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/1',
+ editUrl: '/objects/savedVisualizations/1',
icon: 'visualizeApp',
inAppUrl: {
path: '/app/visualize#/edit/1',
@@ -317,7 +317,7 @@ describe('Relationships', () => {
id: '2',
relationship: 'child',
meta: {
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/2',
+ editUrl: '/objects/savedVisualizations/2',
icon: 'visualizeApp',
inAppUrl: {
path: '/app/visualize#/edit/2',
@@ -335,7 +335,7 @@ describe('Relationships', () => {
meta: {
title: 'MyDashboard',
icon: 'dashboardApp',
- editUrl: '/management/opensearch-dashboards/objects/savedDashboards/1',
+ editUrl: '/objects/savedDashboards/1',
inAppUrl: {
path: '/dashboard/1',
uiCapabilitiesPath: 'dashboard.show',
@@ -375,7 +375,7 @@ describe('Relationships', () => {
meta: {
title: 'MyDashboard',
icon: 'dashboardApp',
- editUrl: '/management/opensearch-dashboards/objects/savedDashboards/1',
+ editUrl: '/objects/savedDashboards/1',
inAppUrl: {
path: '/dashboard/1',
uiCapabilitiesPath: 'dashboard.show',
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx
index 7e5bb318f4d0..c8e378b93b92 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx
@@ -51,9 +51,9 @@ const defaultProps: TableProps = {
meta: {
title: `MyIndexPattern*`,
icon: 'indexPatternApp',
- editUrl: '#/management/opensearch-dashboards/indexPatterns/patterns/1',
+ editUrl: '#/indexPatterns/patterns/1',
inAppUrl: {
- path: '/management/opensearch-dashboards/indexPatterns/patterns/1',
+ path: '/indexPatterns/patterns/1',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
},
@@ -91,9 +91,9 @@ const defaultProps: TableProps = {
meta: {
title: `MyIndexPattern*`,
icon: 'indexPatternApp',
- editUrl: '#/management/opensearch-dashboards/indexPatterns/patterns/1',
+ editUrl: '#/indexPatterns/patterns/1',
inAppUrl: {
- path: '/management/opensearch-dashboards/indexPatterns/patterns/1',
+ path: '/indexPatterns/patterns/1',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
},
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx
index 5a6bf0713d95..443026e92964 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx
@@ -172,9 +172,9 @@ describe('SavedObjectsTable', () => {
meta: {
title: `MyIndexPattern*`,
icon: 'indexPatternApp',
- editUrl: '#/management/opensearch-dashboards/indexPatterns/patterns/1',
+ editUrl: '#/indexPatterns/patterns/1',
inAppUrl: {
- path: '/management/opensearch-dashboards/indexPatterns/patterns/1',
+ path: '/indexPatterns/patterns/1',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
},
@@ -185,7 +185,7 @@ describe('SavedObjectsTable', () => {
meta: {
title: `MySearch`,
icon: 'search',
- editUrl: '/management/opensearch-dashboards/objects/savedSearches/2',
+ editUrl: '/objects/savedSearches/2',
inAppUrl: {
path: '/discover/2',
uiCapabilitiesPath: 'discover.show',
@@ -198,7 +198,7 @@ describe('SavedObjectsTable', () => {
meta: {
title: `MyDashboard`,
icon: 'dashboardApp',
- editUrl: '/management/opensearch-dashboards/objects/savedDashboards/3',
+ editUrl: '/objects/savedDashboards/3',
inAppUrl: {
path: '/dashboard/3',
uiCapabilitiesPath: 'dashboard.show',
@@ -211,7 +211,7 @@ describe('SavedObjectsTable', () => {
meta: {
title: `MyViz`,
icon: 'visualizeApp',
- editUrl: '/management/opensearch-dashboards/objects/savedVisualizations/4',
+ editUrl: '/objects/savedVisualizations/4',
inAppUrl: {
path: '/edit/4',
uiCapabilitiesPath: 'visualize.show',
@@ -460,7 +460,7 @@ describe('SavedObjectsTable', () => {
meta: {
title: `MySearch`,
icon: 'search',
- editUrl: '/management/opensearch-dashboards/objects/savedSearches/2',
+ editUrl: '/objects/savedSearches/2',
inAppUrl: {
path: '/discover/2',
uiCapabilitiesPath: 'discover.show',
@@ -475,7 +475,7 @@ describe('SavedObjectsTable', () => {
type: 'search',
meta: {
title: 'MySearch',
- editUrl: '/management/opensearch-dashboards/objects/savedSearches/2',
+ editUrl: '/objects/savedSearches/2',
icon: 'search',
inAppUrl: {
path: '/discover/2',
diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx
index 955482cc0676..edc538716ee2 100644
--- a/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx
@@ -116,6 +116,7 @@ export interface SavedObjectsTableProps {
dateFormat: string;
dataSourceEnabled: boolean;
hideLocalCluster: boolean;
+ title: string;
}
export interface SavedObjectsTableState {
@@ -545,9 +546,7 @@ export class SavedObjectsTable extends Component
diff --git a/src/plugins/saved_objects_management/public/management_section/page_wrapper/__snapshots__/page_wrapper.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/page_wrapper/__snapshots__/page_wrapper.test.tsx.snap
new file mode 100644
index 000000000000..3c5257e2e8d1
--- /dev/null
+++ b/src/plugins/saved_objects_management/public/management_section/page_wrapper/__snapshots__/page_wrapper.test.tsx.snap
@@ -0,0 +1,13 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`PageWrapper should render normally 1`] = `
+
+`;
diff --git a/src/plugins/saved_objects_management/public/management_section/page_wrapper/index.ts b/src/plugins/saved_objects_management/public/management_section/page_wrapper/index.ts
new file mode 100644
index 000000000000..3cf0cdd26c99
--- /dev/null
+++ b/src/plugins/saved_objects_management/public/management_section/page_wrapper/index.ts
@@ -0,0 +1,6 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+export { PageWrapper } from './page_wrapper';
diff --git a/src/plugins/saved_objects_management/public/management_section/page_wrapper/page_wrapper.test.tsx b/src/plugins/saved_objects_management/public/management_section/page_wrapper/page_wrapper.test.tsx
new file mode 100644
index 000000000000..550eb3ee1cae
--- /dev/null
+++ b/src/plugins/saved_objects_management/public/management_section/page_wrapper/page_wrapper.test.tsx
@@ -0,0 +1,16 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import React from 'react';
+import { render } from '@testing-library/react';
+import { PageWrapper } from './page_wrapper';
+
+describe('PageWrapper', () => {
+ it('should render normally', async () => {
+ const { findByText, container } = render(Foo);
+ await findByText('Foo');
+ expect(container).toMatchSnapshot();
+ });
+});
diff --git a/src/plugins/saved_objects_management/public/management_section/page_wrapper/page_wrapper.tsx b/src/plugins/saved_objects_management/public/management_section/page_wrapper/page_wrapper.tsx
new file mode 100644
index 000000000000..1b1949c334e4
--- /dev/null
+++ b/src/plugins/saved_objects_management/public/management_section/page_wrapper/page_wrapper.tsx
@@ -0,0 +1,21 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { EuiPageContent } from '@elastic/eui';
+import React from 'react';
+
+export const PageWrapper = (props: { children?: React.ReactChild }) => {
+ return (
+
+ );
+};
diff --git a/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx b/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx
index b3ef976d8283..73b4dfaa638a 100644
--- a/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx
+++ b/src/plugins/saved_objects_management/public/management_section/saved_objects_table_page.tsx
@@ -30,13 +30,13 @@
import React, { useEffect } from 'react';
import { get } from 'lodash';
-import { i18n } from '@osd/i18n';
import { CoreStart, ChromeBreadcrumb } from 'src/core/public';
import { DataPublicPluginStart } from '../../../data/public';
import {
ISavedObjectsManagementServiceRegistry,
SavedObjectsManagementActionServiceStart,
SavedObjectsManagementColumnServiceStart,
+ SavedObjectsManagementNamespaceServiceStart,
} from '../services';
import { SavedObjectsTable } from './objects_table';
@@ -51,6 +51,7 @@ const SavedObjectsTablePage = ({
setBreadcrumbs,
dataSourceEnabled,
hideLocalCluster,
+ title,
}: {
coreStart: CoreStart;
dataStart: DataPublicPluginStart;
@@ -62,6 +63,7 @@ const SavedObjectsTablePage = ({
setBreadcrumbs: (crumbs: ChromeBreadcrumb[]) => void;
dataSourceEnabled: boolean;
hideLocalCluster: boolean;
+ title: string;
}) => {
const capabilities = coreStart.application.capabilities;
const itemsPerPage = coreStart.uiSettings.get('savedObjects:perPage', 50);
@@ -70,13 +72,11 @@ const SavedObjectsTablePage = ({
useEffect(() => {
setBreadcrumbs([
{
- text: i18n.translate('savedObjectsManagement.breadcrumb.index', {
- defaultMessage: 'Saved objects',
- }),
- href: '/',
+ text: title,
+ href: undefined,
},
]);
- }, [setBreadcrumbs]);
+ }, [setBreadcrumbs, title]);
return (
);
};
diff --git a/src/plugins/saved_objects_management/public/plugin.ts b/src/plugins/saved_objects_management/public/plugin.ts
index d03342a4f1d7..ee4fe046240d 100644
--- a/src/plugins/saved_objects_management/public/plugin.ts
+++ b/src/plugins/saved_objects_management/public/plugin.ts
@@ -29,7 +29,7 @@
*/
import { i18n } from '@osd/i18n';
-import { CoreSetup, CoreStart, Plugin } from 'src/core/public';
+import { AppMountParameters, CoreSetup, CoreStart, Plugin } from 'src/core/public';
import { DataSourcePluginSetup } from 'src/plugins/data_source/public';
import { VisBuilderStart } from '../../vis_builder/public';
@@ -56,6 +56,12 @@ import {
} from './services';
import { registerServices } from './register_services';
import { bootstrap } from './ui_actions_bootstrap';
+import { DEFAULT_APP_CATEGORIES } from '../../../core/public';
+import {
+ MANAGE_LIBRARY_TITLE_WORDINGS,
+ SAVED_QUERIES_WORDINGS,
+ SAVED_SEARCHES_WORDINGS,
+} from './constants';
export interface SavedObjectsManagementPluginSetup {
actions: SavedObjectsManagementActionServiceSetup;
@@ -100,9 +106,70 @@ export class SavedObjectsManagementPlugin
private namespaceService = new SavedObjectsManagementNamespaceService();
private serviceRegistry = new SavedObjectsManagementServiceRegistry();
+ private registerLibrarySubApp(
+ coreSetup: CoreSetup,
+ dataSourceEnabled: boolean,
+ hideLocalCluster: boolean
+ ) {
+ const core = coreSetup;
+ const mountWrapper = ({
+ title,
+ allowedObjectTypes,
+ }: {
+ title: string;
+ allowedObjectTypes?: string[];
+ }) => async (appMountParams: AppMountParameters) => {
+ const { mountManagementSection } = await import('./management_section');
+ return mountManagementSection({
+ core,
+ serviceRegistry: this.serviceRegistry,
+ appMountParams,
+ title,
+ allowedObjectTypes,
+ dataSourceEnabled,
+ hideLocalCluster,
+ });
+ };
+
+ /**
+ * Register saved objects overview & saved search & saved query here
+ */
+ core.application.register({
+ id: 'objects',
+ title: MANAGE_LIBRARY_TITLE_WORDINGS,
+ order: 10000,
+ category: DEFAULT_APP_CATEGORIES.opensearchDashboards,
+ mount: mountWrapper({
+ title: MANAGE_LIBRARY_TITLE_WORDINGS,
+ }),
+ });
+
+ core.application.register({
+ id: 'objects_searches',
+ title: SAVED_SEARCHES_WORDINGS,
+ order: 8000,
+ category: DEFAULT_APP_CATEGORIES.opensearchDashboards,
+ mount: mountWrapper({
+ title: SAVED_SEARCHES_WORDINGS,
+ allowedObjectTypes: ['search'],
+ }),
+ });
+
+ core.application.register({
+ id: 'objects_query',
+ title: SAVED_QUERIES_WORDINGS,
+ order: 8001,
+ category: DEFAULT_APP_CATEGORIES.opensearchDashboards,
+ mount: mountWrapper({
+ title: SAVED_QUERIES_WORDINGS,
+ allowedObjectTypes: ['query'],
+ }),
+ });
+ }
+
public setup(
core: CoreSetup,
- { home, management, uiActions, dataSource }: SetupDependencies
+ { home, uiActions, dataSource }: SetupDependencies
): SavedObjectsManagementPluginSetup {
const actionSetup = this.actionService.setup();
const columnSetup = this.columnService.setup();
@@ -119,37 +186,20 @@ export class SavedObjectsManagementPlugin
'Import, export, and manage your saved searches, visualizations, and dashboards.',
}),
icon: 'savedObjectsApp',
- path: '/app/management/opensearch-dashboards/objects',
+ path: '/app/objects',
showOnHomePage: false,
category: FeatureCatalogueCategory.ADMIN,
});
}
- const opensearchDashboardsSection = management.sections.section.opensearchDashboards;
- opensearchDashboardsSection.registerApp({
- id: 'objects',
- title: i18n.translate('savedObjectsManagement.managementSectionLabel', {
- defaultMessage: 'Saved objects',
- }),
- order: 1,
- mount: async (mountParams) => {
- const { mountManagementSection } = await import('./management_section');
- return mountManagementSection({
- core,
- serviceRegistry: this.serviceRegistry,
- mountParams,
- dataSourceEnabled: !!dataSource,
- hideLocalCluster: dataSource?.hideLocalCluster ?? false,
- });
- },
- });
-
// sets up the context mappings and registers any triggers/actions for the plugin
bootstrap(uiActions);
// depends on `getStartServices`, should not be awaited
registerServices(this.serviceRegistry, core.getStartServices);
+ this.registerLibrarySubApp(core, !!dataSource, dataSource?.hideLocalCluster ?? false);
+
return {
actions: actionSetup,
columns: columnSetup,
diff --git a/src/plugins/vis_augmenter/server/saved_objects/augment_vis.ts b/src/plugins/vis_augmenter/server/saved_objects/augment_vis.ts
index 52188d52998a..558649f900bd 100644
--- a/src/plugins/vis_augmenter/server/saved_objects/augment_vis.ts
+++ b/src/plugins/vis_augmenter/server/saved_objects/augment_vis.ts
@@ -15,9 +15,7 @@ export const augmentVisSavedObjectType: SavedObjectsType = {
return `augment-vis-${obj?.attributes?.originPlugin}`;
},
getEditUrl(obj) {
- return `/management/opensearch-dashboards/objects/savedAugmentVis/${encodeURIComponent(
- obj.id
- )}`;
+ return `/objects/savedAugmentVis/${encodeURIComponent(obj.id)}`;
},
},
mappings: {
diff --git a/src/plugins/vis_builder/server/saved_objects/vis_builder_app.ts b/src/plugins/vis_builder/server/saved_objects/vis_builder_app.ts
index 029557010bee..2d329227491c 100644
--- a/src/plugins/vis_builder/server/saved_objects/vis_builder_app.ts
+++ b/src/plugins/vis_builder/server/saved_objects/vis_builder_app.ts
@@ -20,8 +20,7 @@ export const visBuilderSavedObjectType: SavedObjectsType = {
defaultSearchField: 'title',
importableAndExportable: true,
getTitle: ({ attributes: { title } }: SavedObject) => title,
- getEditUrl: ({ id }: SavedObject) =>
- `/management/opensearch-dashboards/objects/savedVisBuilder/${encodeURIComponent(id)}`,
+ getEditUrl: ({ id }: SavedObject) => `/objects/savedVisBuilder/${encodeURIComponent(id)}`,
getInAppUrl({ id }: SavedObject) {
return {
path: `/app/${PLUGIN_ID}${EDIT_PATH}/${encodeURIComponent(id)}`,
diff --git a/src/plugins/visualizations/server/saved_objects/visualization.ts b/src/plugins/visualizations/server/saved_objects/visualization.ts
index 15a926b3f81d..4e46c83db157 100644
--- a/src/plugins/visualizations/server/saved_objects/visualization.ts
+++ b/src/plugins/visualizations/server/saved_objects/visualization.ts
@@ -43,9 +43,7 @@ export const visualizationSavedObjectType: SavedObjectsType = {
return obj.attributes.title;
},
getEditUrl(obj) {
- return `/management/opensearch-dashboards/objects/savedVisualizations/${encodeURIComponent(
- obj.id
- )}`;
+ return `/objects/savedVisualizations/${encodeURIComponent(obj.id)}`;
},
getInAppUrl(obj) {
return {
diff --git a/test/api_integration/apis/saved_objects_management/find.ts b/test/api_integration/apis/saved_objects_management/find.ts
index a82d4e792cdc..065541a36d77 100644
--- a/test/api_integration/apis/saved_objects_management/find.ts
+++ b/test/api_integration/apis/saved_objects_management/find.ts
@@ -73,8 +73,7 @@ export default function ({ getService }: FtrProviderContext) {
score: 0,
updated_at: '2017-09-21T18:51:23.794Z',
meta: {
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/dd7caf20-9efd-11e7-acb3-3dab96693fab',
+ editUrl: '/objects/savedVisualizations/dd7caf20-9efd-11e7-acb3-3dab96693fab',
icon: 'visualizeApp',
inAppUrl: {
path: '/app/visualize#/edit/dd7caf20-9efd-11e7-acb3-3dab96693fab',
@@ -237,8 +236,7 @@ export default function ({ getService }: FtrProviderContext) {
expect(resp.body.saved_objects[0].meta).to.eql({
icon: 'discoverApp',
title: 'OneRecord',
- editUrl:
- '/management/opensearch-dashboards/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'discover.show',
@@ -256,8 +254,7 @@ export default function ({ getService }: FtrProviderContext) {
expect(resp.body.saved_objects[0].meta).to.eql({
icon: 'dashboardApp',
title: 'Dashboard',
- editUrl:
- '/management/opensearch-dashboards/objects/savedDashboards/b70c7ae0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedDashboards/b70c7ae0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/dashboards#/view/b70c7ae0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'dashboard.show',
@@ -275,8 +272,7 @@ export default function ({ getService }: FtrProviderContext) {
expect(resp.body.saved_objects[0].meta).to.eql({
icon: 'visualizeApp',
title: 'VisualizationFromSavedSearch',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -286,8 +282,7 @@ export default function ({ getService }: FtrProviderContext) {
expect(resp.body.saved_objects[1].meta).to.eql({
icon: 'visualizeApp',
title: 'Visualization',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -305,11 +300,9 @@ export default function ({ getService }: FtrProviderContext) {
expect(resp.body.saved_objects[0].meta).to.eql({
icon: 'indexPatternApp',
title: 'saved_objects*',
- editUrl:
- '/management/opensearch-dashboards/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
+ editUrl: '/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
inAppUrl: {
- path:
- '/app/management/opensearch-dashboards/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
+ path: '/app/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
namespaceType: 'single',
diff --git a/test/api_integration/apis/saved_objects_management/relationships.ts b/test/api_integration/apis/saved_objects_management/relationships.ts
index f0af2d8d9e79..77e838cfed42 100644
--- a/test/api_integration/apis/saved_objects_management/relationships.ts
+++ b/test/api_integration/apis/saved_objects_management/relationships.ts
@@ -94,11 +94,9 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
title: 'saved_objects*',
icon: 'indexPatternApp',
- editUrl:
- '/management/opensearch-dashboards/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
+ editUrl: '/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
inAppUrl: {
- path:
- '/app/management/opensearch-dashboards/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
+ path: '/app/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
namespaceType: 'single',
@@ -111,8 +109,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
title: 'VisualizationFromSavedSearch',
icon: 'visualizeApp',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -137,11 +134,9 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'indexPatternApp',
title: 'saved_objects*',
- editUrl:
- '/management/opensearch-dashboards/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
+ editUrl: '/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
inAppUrl: {
- path:
- '/app/management/opensearch-dashboards/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
+ path: '/app/indexPatterns/patterns/8963ca30-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'management.opensearchDashboards.indexPatterns',
},
namespaceType: 'single',
@@ -154,8 +149,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'visualizeApp',
title: 'VisualizationFromSavedSearch',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -199,8 +193,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'visualizeApp',
title: 'Visualization',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -215,8 +208,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'visualizeApp',
title: 'VisualizationFromSavedSearch',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -239,8 +231,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'visualizeApp',
title: 'Visualization',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -255,8 +246,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'visualizeApp',
title: 'VisualizationFromSavedSearch',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/a42c0580-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -300,8 +290,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'discoverApp',
title: 'OneRecord',
- editUrl:
- '/management/opensearch-dashboards/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'discover.show',
@@ -316,8 +305,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'dashboardApp',
title: 'Dashboard',
- editUrl:
- '/management/opensearch-dashboards/objects/savedDashboards/b70c7ae0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedDashboards/b70c7ae0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/dashboards#/view/b70c7ae0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'dashboard.show',
@@ -342,8 +330,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'discoverApp',
title: 'OneRecord',
- editUrl:
- '/management/opensearch-dashboards/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'discover.show',
@@ -386,8 +373,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'discoverApp',
title: 'OneRecord',
- editUrl:
- '/management/opensearch-dashboards/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'discover.show',
@@ -402,8 +388,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'visualizeApp',
title: 'Visualization',
- editUrl:
- '/management/opensearch-dashboards/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedVisualizations/add810b0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'visualize.show',
@@ -428,8 +413,7 @@ export default function ({ getService }: FtrProviderContext) {
meta: {
icon: 'discoverApp',
title: 'OneRecord',
- editUrl:
- '/management/opensearch-dashboards/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
+ editUrl: '/objects/savedSearches/960372e0-3224-11e8-a572-ffca06da1357',
inAppUrl: {
path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357',
uiCapabilitiesPath: 'discover.show',
diff --git a/test/functional/apps/dashboard/create_and_add_embeddables.js b/test/functional/apps/dashboard/create_and_add_embeddables.js
index 3b6e8a243556..6701ae0fc94c 100644
--- a/test/functional/apps/dashboard/create_and_add_embeddables.js
+++ b/test/functional/apps/dashboard/create_and_add_embeddables.js
@@ -112,8 +112,7 @@ export default function ({ getService, getPageObjects }) {
describe('is false', () => {
before(async () => {
- await PageObjects.header.clickStackManagement();
- await PageObjects.settings.clickOpenSearchDashboardsSettings();
+ await PageObjects.common.navigateToApp('settings');
await PageObjects.settings.toggleAdvancedSettingCheckbox(VISUALIZE_ENABLE_LABS_SETTING);
});
@@ -127,8 +126,7 @@ export default function ({ getService, getPageObjects }) {
});
after(async () => {
- await PageObjects.header.clickStackManagement();
- await PageObjects.settings.clickOpenSearchDashboardsSettings();
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.clearAdvancedSettings(VISUALIZE_ENABLE_LABS_SETTING);
await PageObjects.header.clickDashboard();
});
diff --git a/test/functional/apps/dashboard/time_zones.js b/test/functional/apps/dashboard/time_zones.js
index 4c82cfe8006c..225e0bf1d034 100644
--- a/test/functional/apps/dashboard/time_zones.js
+++ b/test/functional/apps/dashboard/time_zones.js
@@ -51,7 +51,6 @@ export default function ({ getService, getPageObjects }) {
await opensearchDashboardsServer.uiSettings.replace({
defaultIndex: '0bf35f60-3dc9-11e8-8660-4d65aa086b3c',
});
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsSavedObjects();
await PageObjects.savedObjects.importFile(
path.join(__dirname, 'exports', 'timezonetest_6_2_4.json'),
@@ -77,7 +76,6 @@ export default function ({ getService, getPageObjects }) {
it('Changing timezone changes dashboard timestamp and shows the same data', async () => {
await PageObjects.settings.navigateTo();
- await PageObjects.settings.clickOpenSearchDashboardsSettings();
await PageObjects.settings.setAdvancedSettingsSelect('dateFormat:tz', 'Etc/GMT+5');
await PageObjects.common.navigateToApp('dashboard');
await PageObjects.dashboard.loadSavedDashboard('time zone test');
diff --git a/test/functional/apps/management/_import_objects.js b/test/functional/apps/management/_import_objects.js
index a4a919aedcd9..f481960b2f77 100644
--- a/test/functional/apps/management/_import_objects.js
+++ b/test/functional/apps/management/_import_objects.js
@@ -46,7 +46,6 @@ export default function ({ getService, getPageObjects }) {
beforeEach(async function () {
// delete .kibana index and then wait for OpenSearch Dashboards to re-create it
await opensearchDashboardsServer.uiSettings.replace({});
- await PageObjects.settings.navigateTo();
await opensearchArchiver.load('management');
await PageObjects.settings.clickOpenSearchDashboardsSavedObjects();
});
@@ -215,7 +214,6 @@ export default function ({ getService, getPageObjects }) {
beforeEach(async function () {
// delete .kibana index and then wait for OpenSearch Dashboards to re-create it
await opensearchDashboardsServer.uiSettings.replace({});
- await PageObjects.settings.navigateTo();
await opensearchArchiver.load('saved_objects_imports');
await PageObjects.settings.clickOpenSearchDashboardsSavedObjects();
});
diff --git a/test/functional/apps/management/_index_pattern_create_delete.js b/test/functional/apps/management/_index_pattern_create_delete.js
index b7214590ebd4..1d154718c26d 100644
--- a/test/functional/apps/management/_index_pattern_create_delete.js
+++ b/test/functional/apps/management/_index_pattern_create_delete.js
@@ -129,7 +129,7 @@ export default function ({ getService, getPageObjects }) {
return retry.try(function tryingForTime() {
return browser.getCurrentUrl().then(function (currentUrl) {
log.debug('currentUrl = ' + currentUrl);
- expect(currentUrl).to.contain('management/opensearch-dashboards/indexPatterns');
+ expect(currentUrl).to.contain('indexPatterns');
});
});
});
diff --git a/test/functional/apps/management/_mgmt_import_saved_objects.js b/test/functional/apps/management/_mgmt_import_saved_objects.js
index c5f852bae5c0..c04fa88b0dec 100644
--- a/test/functional/apps/management/_mgmt_import_saved_objects.js
+++ b/test/functional/apps/management/_mgmt_import_saved_objects.js
@@ -42,7 +42,6 @@ export default function ({ getService, getPageObjects }) {
beforeEach(async function () {
await opensearchArchiver.load('empty_opensearch_dashboards');
await opensearchArchiver.load('discover');
- await PageObjects.settings.navigateTo();
});
afterEach(async function () {
diff --git a/test/functional/apps/management/_opensearch_dashboards_settings.js b/test/functional/apps/management/_opensearch_dashboards_settings.js
index 0e310953e8a2..637f7073d517 100644
--- a/test/functional/apps/management/_opensearch_dashboards_settings.js
+++ b/test/functional/apps/management/_opensearch_dashboards_settings.js
@@ -39,12 +39,10 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
// delete .kibana index and then wait for OpenSearch Dashboards to re-create it
await opensearchDashboardsServer.uiSettings.replace({});
- await PageObjects.settings.navigateTo();
await PageObjects.settings.createIndexPattern('logstash-*');
});
after(async function afterAll() {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.removeLogstashIndexPatternIfExist();
});
@@ -90,7 +88,6 @@ export default function ({ getService, getPageObjects }) {
});
it('setting to true change is preserved', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsSettings();
await PageObjects.settings.toggleAdvancedSettingCheckbox('state:storeInSessionStorage');
const storeInSessionStorage = await PageObjects.settings.getAdvancedSettingCheckbox(
@@ -113,8 +110,7 @@ export default function ({ getService, getPageObjects }) {
it("changing 'state:storeInSessionStorage' also takes effect without full page reload", async () => {
await PageObjects.dashboard.preserveCrossAppState();
- await PageObjects.header.clickStackManagement();
- await PageObjects.settings.clickOpenSearchDashboardsSettings();
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.toggleAdvancedSettingCheckbox('state:storeInSessionStorage');
await PageObjects.header.clickDashboard();
const [globalState, appState] = await getStateFromUrl();
diff --git a/test/functional/apps/management/_scripted_fields.js b/test/functional/apps/management/_scripted_fields.js
index 8a4659630ee1..3ef74f39cfb9 100644
--- a/test/functional/apps/management/_scripted_fields.js
+++ b/test/functional/apps/management/_scripted_fields.js
@@ -75,13 +75,11 @@ export default function ({ getService, getPageObjects }) {
});
after(async function afterAll() {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.removeLogstashIndexPatternIfExist();
});
it('should not allow saving of invalid scripts', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
await PageObjects.settings.clickScriptedFieldsTab();
@@ -99,7 +97,6 @@ export default function ({ getService, getPageObjects }) {
const scriptedPainlessFieldName = 'ram_Pain_reg';
it('should create and edit scripted field', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount());
@@ -133,7 +130,6 @@ export default function ({ getService, getPageObjects }) {
const scriptedPainlessFieldName = 'ram_Pain1';
it('should create scripted field', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount());
@@ -255,7 +251,6 @@ export default function ({ getService, getPageObjects }) {
const scriptedPainlessFieldName2 = 'painString';
it('should create scripted field', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount());
@@ -352,7 +347,6 @@ export default function ({ getService, getPageObjects }) {
const scriptedPainlessFieldName2 = 'painBool';
it('should create scripted field', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount());
@@ -452,7 +446,6 @@ export default function ({ getService, getPageObjects }) {
const scriptedPainlessFieldName2 = 'painDate';
it('should create scripted field', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount());
diff --git a/test/functional/apps/management/_scripted_fields_filter.js b/test/functional/apps/management/_scripted_fields_filter.js
index b1714c425aac..55ec8895608c 100644
--- a/test/functional/apps/management/_scripted_fields_filter.js
+++ b/test/functional/apps/management/_scripted_fields_filter.js
@@ -58,7 +58,6 @@ export default function ({ getService, getPageObjects }) {
const scriptedPainlessFieldName = 'ram_pain1';
it('should filter scripted fields', async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
await PageObjects.settings.clickScriptedFieldsTab();
diff --git a/test/functional/apps/saved_objects_management/edit_saved_object.ts b/test/functional/apps/saved_objects_management/edit_saved_object.ts
index 1534c710179b..64fe2bf199b0 100644
--- a/test/functional/apps/saved_objects_management/edit_saved_object.ts
+++ b/test/functional/apps/saved_objects_management/edit_saved_object.ts
@@ -88,7 +88,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});
it('allows to update the saved object when submitting', async () => {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsSavedObjects();
let objects = await PageObjects.savedObjects.getRowTitles();
@@ -154,7 +153,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
},
];
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsSavedObjects();
const objects = await PageObjects.savedObjects.getRowTitles();
diff --git a/test/functional/apps/visualize/_custom_branding.ts b/test/functional/apps/visualize/_custom_branding.ts
index 37f07e932ee5..52cbc8e5fec9 100644
--- a/test/functional/apps/visualize/_custom_branding.ts
+++ b/test/functional/apps/visualize/_custom_branding.ts
@@ -46,7 +46,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
});
it('with customized logo for opensearch overview header in dark mode', async () => {
- await PageObjects.common.navigateToApp('management/opensearch-dashboards/settings');
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.toggleAdvancedSettingCheckbox('theme:darkMode');
await PageObjects.common.navigateToApp('opensearch_dashboards_overview');
await testSubjects.existOrFail('osdOverviewPageHeaderLogo');
@@ -100,7 +100,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
});
it('with customized logo in dark mode', async () => {
- await PageObjects.common.navigateToApp('management/opensearch-dashboards/settings');
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.toggleAdvancedSettingCheckbox('theme:darkMode');
await PageObjects.common.navigateToApp('home');
await testSubjects.existOrFail('welcomeCustomLogo');
@@ -179,13 +179,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
describe('in dark mode', async () => {
before(async function () {
- await PageObjects.common.navigateToApp('management/opensearch-dashboards/settings');
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.toggleAdvancedSettingCheckbox('theme:darkMode');
await PageObjects.common.navigateToApp('home');
});
after(async function () {
- await PageObjects.common.navigateToApp('management/opensearch-dashboards/settings');
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.clearAdvancedSettings('theme:darkMode');
});
@@ -206,7 +206,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
});
it('with customized mark logo button that navigates to home page', async () => {
- await PageObjects.common.navigateToApp('settings');
+ await PageObjects.settings.navigateTo();
await globalNav.clickHomeButton();
await PageObjects.header.waitUntilLoadingHasFinished();
const url = await browser.getCurrentUrl();
diff --git a/test/functional/apps/visualize/_lab_mode.js b/test/functional/apps/visualize/_lab_mode.js
index 82ecbcb2a655..1ba36b4b9f90 100644
--- a/test/functional/apps/visualize/_lab_mode.js
+++ b/test/functional/apps/visualize/_lab_mode.js
@@ -47,8 +47,7 @@ export default function ({ getService, getPageObjects }) {
log.info('found saved search before toggling enableLabs mode');
// Navigate to advanced setting and disable lab mode
- await PageObjects.header.clickStackManagement();
- await PageObjects.settings.clickOpenSearchDashboardsSettings();
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.toggleAdvancedSettingCheckbox(VISUALIZE_ENABLE_LABS_SETTING);
// Expect the discover still to list that saved visualization in the open list
@@ -61,8 +60,7 @@ export default function ({ getService, getPageObjects }) {
after(async () => {
await PageObjects.discover.closeLoadSaveSearchPanel();
- await PageObjects.header.clickStackManagement();
- await PageObjects.settings.clickOpenSearchDashboardsSettings();
+ await PageObjects.settings.navigateTo();
await PageObjects.settings.clearAdvancedSettings(VISUALIZE_ENABLE_LABS_SETTING);
});
});
diff --git a/test/functional/apps/visualize/_tag_cloud.js b/test/functional/apps/visualize/_tag_cloud.js
index a5123434115d..075e7fa22907 100644
--- a/test/functional/apps/visualize/_tag_cloud.js
+++ b/test/functional/apps/visualize/_tag_cloud.js
@@ -160,7 +160,6 @@ export default function ({ getService, getPageObjects }) {
describe('formatted field', function () {
before(async function () {
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
await PageObjects.settings.filterField(termsField);
@@ -178,7 +177,6 @@ export default function ({ getService, getPageObjects }) {
after(async function () {
await filterBar.removeFilter(termsField);
- await PageObjects.settings.navigateTo();
await PageObjects.settings.clickOpenSearchDashboardsIndexPatterns();
await PageObjects.settings.clickIndexPatternLogstash();
await PageObjects.settings.filterField(termsField);
diff --git a/test/functional/config.js b/test/functional/config.js
index 87d4302b2a15..ac9ac6085d2b 100644
--- a/test/functional/config.js
+++ b/test/functional/config.js
@@ -101,10 +101,6 @@ export default async function ({ readConfigFile }) {
management: {
pathname: '/app/management',
},
- /** @obsolete "management" should be instead of "settings" **/
- settings: {
- pathname: '/app/management',
- },
console: {
pathname: '/app/dev_tools',
hash: '/console',
diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts
index af2bf046e3a9..1e0106229d3d 100644
--- a/test/functional/page_objects/settings_page.ts
+++ b/test/functional/page_objects/settings_page.ts
@@ -51,19 +51,19 @@ export function SettingsPageProvider({ getService, getPageObjects }: FtrProvider
await find.clickByDisplayedLinkText(text);
}
async clickOpenSearchDashboardsSettings() {
- await testSubjects.click('settings');
+ await PageObjects.common.navigateToApp('settings');
await PageObjects.header.waitUntilLoadingHasFinished();
await testSubjects.existOrFail('managementSettingsTitle');
}
async clickOpenSearchDashboardsSavedObjects() {
- await testSubjects.click('objects');
+ await PageObjects.common.navigateToApp('objects');
await PageObjects.savedObjects.waitTableIsLoaded();
}
async clickOpenSearchDashboardsIndexPatterns() {
log.debug('clickOpenSearchDashboardsIndexPatterns link');
- await testSubjects.click('indexPatterns');
+ await PageObjects.common.navigateToApp('indexPatterns');
await PageObjects.header.waitUntilLoadingHasFinished();
}