diff --git a/src/core/public/application/types.ts b/src/core/public/application/types.ts index e284e80297f0..93faa407bb6a 100644 --- a/src/core/public/application/types.ts +++ b/src/core/public/application/types.ts @@ -45,7 +45,7 @@ import { OverlayStart } from '../overlays'; import { PluginOpaqueId } from '../plugins'; import { IUiSettingsClient } from '../ui_settings'; import { SavedObjectsStart } from '../saved_objects'; -import { AppCategory, WorkspaceTemplate } from '../../types'; +import { AppCategory } from '../../types'; import { ScopedHistory } from './scoped_history'; import { WorkspacesStart } from '../workspace'; @@ -124,12 +124,6 @@ export interface App { */ category?: AppCategory; - /** - * The template definition of features belongs to - * See {@link WorkspaceTemplate} - */ - workspaceTemplate?: WorkspaceTemplate[]; - /** * The initial status of the application. * Defaulting to `accessible` diff --git a/src/core/public/index.ts b/src/core/public/index.ts index c1a8d34aa674..bc7d1fdfe30c 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -94,7 +94,6 @@ export { PackageInfo, EnvironmentMode } from '../server/types'; /** @interal */ export { CoreContext, CoreSystem } from './core_system'; export { DEFAULT_APP_CATEGORIES } from '../utils'; -export { DEFAULT_WORKSPACE_TEMPLATES } from '../utils'; export { AppCategory, UiSettingsParams, diff --git a/src/core/types/index.ts b/src/core/types/index.ts index e016d7ca7527..9f620273e3b2 100644 --- a/src/core/types/index.ts +++ b/src/core/types/index.ts @@ -35,7 +35,6 @@ export * from './core_service'; export * from './capabilities'; export * from './app_category'; -export * from './workspace_template'; export * from './ui_settings'; export * from './saved_objects'; export * from './serializable'; diff --git a/src/core/types/workspace_template.ts b/src/core/types/workspace_template.ts deleted file mode 100644 index 4be8c4882bf0..000000000000 --- a/src/core/types/workspace_template.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export interface WorkspaceTemplate { - /** - * Unique identifier for the workspace template - */ - id: string; - - /** - * Label used for workspace template name. - */ - label: string; - - /** - * The order that workspace template will be sorted in - */ - order?: number; - - /** - * Introduction of the template - */ - description: string; - - /** - * template coverage image location - */ - coverImage?: string; -} diff --git a/src/core/utils/default_workspace_templates.ts b/src/core/utils/default_workspace_templates.ts deleted file mode 100644 index 153fc23f790a..000000000000 --- a/src/core/utils/default_workspace_templates.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { WorkspaceTemplate } from '../types'; - -/** @internal */ -export const DEFAULT_WORKSPACE_TEMPLATES: Record = Object.freeze({ - search: { - id: 'search', - label: 'Search', - order: 1000, - description: - "Intro paragraph blur about search, key features, and why you'd want to create ana search workspace", - }, - observability: { - id: 'observability', - label: 'Observability', - order: 2000, - description: - "Intro paragraph blur about observability, key features, and why you'd want to create ana observability workspace", - }, - security_analytics: { - id: 'security_analytics', - label: 'Security Analytics', - order: 3000, - description: - "Intro paragraph blur about security analytics, key features, and why you'd want to create ana security analytics workspace", - }, - general_analysis: { - id: 'general_analysis', - label: 'General Analytics', - order: 4000, - description: - "Intro paragraph blur about analytics, key features, and why you'd want to create ana analytics workspace", - }, -}); diff --git a/src/core/utils/index.ts b/src/core/utils/index.ts index 174152ffd750..9f19132ea8bc 100644 --- a/src/core/utils/index.ts +++ b/src/core/utils/index.ts @@ -37,5 +37,4 @@ export { IContextProvider, } from './context'; export { DEFAULT_APP_CATEGORIES } from './default_app_categories'; -export { DEFAULT_WORKSPACE_TEMPLATES } from './default_workspace_templates'; export { WORKSPACE_PATH_PREFIX, PermissionMode } from './constants'; diff --git a/src/plugins/dashboard/public/plugin.tsx b/src/plugins/dashboard/public/plugin.tsx index 19264e43363c..229c80e663c8 100644 --- a/src/plugins/dashboard/public/plugin.tsx +++ b/src/plugins/dashboard/public/plugin.tsx @@ -86,7 +86,6 @@ import { } from '../../opensearch_dashboards_legacy/public'; import { FeatureCatalogueCategory, HomePublicPluginSetup } from '../../../plugins/home/public'; import { DEFAULT_APP_CATEGORIES } from '../../../core/public'; -import { DEFAULT_WORKSPACE_TEMPLATES } from '../../../core/public'; import { ACTION_CLONE_PANEL, @@ -372,12 +371,6 @@ export class DashboardPlugin defaultPath: `#${DashboardConstants.LANDING_PAGE_PATH}`, updater$: this.appStateUpdater, category: DEFAULT_APP_CATEGORIES.opensearchDashboards, - workspaceTemplate: [ - DEFAULT_WORKSPACE_TEMPLATES.search, - DEFAULT_WORKSPACE_TEMPLATES.general_analysis, - DEFAULT_WORKSPACE_TEMPLATES.observability, - DEFAULT_WORKSPACE_TEMPLATES.security_analytics, - ], mount: async (params: AppMountParameters) => { const [coreStart, pluginsStart, dashboardStart] = await core.getStartServices(); this.currentHistory = params.history; diff --git a/src/plugins/discover/public/plugin.ts b/src/plugins/discover/public/plugin.ts index 21f80ab61b75..62f6e6908ba1 100644 --- a/src/plugins/discover/public/plugin.ts +++ b/src/plugins/discover/public/plugin.ts @@ -59,7 +59,7 @@ import rison from 'rison-node'; import { DataPublicPluginStart, DataPublicPluginSetup, opensearchFilters } from '../../data/public'; import { SavedObjectLoader } from '../../saved_objects/public'; import { createOsdUrlTracker, url } from '../../opensearch_dashboards_utils/public'; -import { DEFAULT_APP_CATEGORIES, DEFAULT_WORKSPACE_TEMPLATES } from '../../../core/public'; +import { DEFAULT_APP_CATEGORIES } from '../../../core/public'; import { UrlGeneratorState } from '../../share/public'; import { DocViewInput, DocViewInputFn } from './application/doc_views/doc_views_types'; import { DocViewLink } from './application/doc_views_links/doc_views_links_types'; @@ -315,10 +315,6 @@ export class DiscoverPlugin euiIconType: 'inputOutput', defaultPath: '#/', category: DEFAULT_APP_CATEGORIES.opensearchDashboards, - workspaceTemplate: [ - DEFAULT_WORKSPACE_TEMPLATES.search, - DEFAULT_WORKSPACE_TEMPLATES.general_analysis, - ], mount: async (params: AppMountParameters) => { if (!this.initializeServices) { throw Error('Discover plugin method initializeServices is undefined'); diff --git a/src/plugins/visualize/public/plugin.ts b/src/plugins/visualize/public/plugin.ts index f66f5751023a..47a38d63986d 100644 --- a/src/plugins/visualize/public/plugin.ts +++ b/src/plugins/visualize/public/plugin.ts @@ -55,7 +55,7 @@ import { VisualizationsStart } from '../../visualizations/public'; import { VisualizeConstants } from './application/visualize_constants'; import { FeatureCatalogueCategory, HomePublicPluginSetup } from '../../home/public'; import { VisualizeServices } from './application/types'; -import { DEFAULT_APP_CATEGORIES, DEFAULT_WORKSPACE_TEMPLATES } from '../../../core/public'; +import { DEFAULT_APP_CATEGORIES } from '../../../core/public'; import { SavedObjectsStart } from '../../saved_objects/public'; import { EmbeddableStart } from '../../embeddable/public'; import { DashboardStart } from '../../dashboard/public'; @@ -156,10 +156,6 @@ export class VisualizePlugin euiIconType: 'inputOutput', defaultPath: '#/', category: DEFAULT_APP_CATEGORIES.opensearchDashboards, - workspaceTemplate: [ - DEFAULT_WORKSPACE_TEMPLATES.search, - DEFAULT_WORKSPACE_TEMPLATES.general_analysis, - ], updater$: this.appStateUpdater.asObservable(), // remove all references to visualize mount: async (params: AppMountParameters) => { diff --git a/src/plugins/workspace/public/components/workspace_creator/workspace_form.tsx b/src/plugins/workspace/public/components/workspace_creator/workspace_form.tsx index 29e4d66edd2a..1f7e7b9876ee 100644 --- a/src/plugins/workspace/public/components/workspace_creator/workspace_form.tsx +++ b/src/plugins/workspace/public/components/workspace_creator/workspace_form.tsx @@ -15,14 +15,10 @@ import { EuiText, EuiButton, EuiFlexItem, - EuiCheckableCard, htmlIdGenerator, EuiFlexGrid, - EuiFlexGroup, - EuiImage, EuiCheckbox, EuiCheckboxGroup, - EuiCheckableCardProps, EuiCheckboxGroupProps, EuiCheckboxProps, EuiFieldTextProps, @@ -32,9 +28,8 @@ import { EuiComboBoxProps, } from '@elastic/eui'; -import { WorkspaceTemplate } from '../../../../../core/types'; import { App, AppNavLinkStatus, ApplicationStart } from '../../../../../core/public'; -import { useApplications, useWorkspaceTemplate } from '../../hooks'; +import { useApplications } from '../../hooks'; import { WORKSPACE_OP_TYPE_CREATE, WORKSPACE_OP_TYPE_UPDATE } from '../../../common/constants'; import { isFeatureDependBySelectedFeatures, @@ -47,7 +42,6 @@ import { WorkspaceIconSelector } from './workspace_icon_selector'; interface WorkspaceFeature extends Pick { id: string; name: string; - templates: WorkspaceTemplate[]; } interface WorkspaceFeatureGroup { @@ -87,7 +81,6 @@ export const WorkspaceForm = ({ defaultValues, opType, }: WorkspaceFormProps) => { - const { workspaceTemplates, templateFeatureMap } = useWorkspaceTemplate(application); const applications = useApplications(application); const [name, setName] = useState(defaultValues?.name); @@ -96,11 +89,7 @@ export const WorkspaceForm = ({ const [icon, setIcon] = useState(defaultValues?.icon); const [defaultVISTheme, setDefaultVISTheme] = useState(defaultValues?.defaultVISTheme); - const [selectedTemplateId, setSelectedTemplateId] = useState(); const [selectedFeatureIds, setSelectedFeatureIds] = useState(defaultValues?.features || []); - const selectedTemplate = workspaceTemplates.find( - (template) => template.id === selectedTemplateId - ); const [formErrors, setFormErrors] = useState({}); const formIdRef = useRef(); const getFormData = () => ({ @@ -127,10 +116,9 @@ export const WorkspaceForm = ({ !chromeless && featureGroup?.includes('WORKSPACE') ) - .map(({ id, title, workspaceTemplate, dependencies }) => ({ + .map(({ id, title, dependencies }) => ({ id, name: title, - templates: workspaceTemplate || [], dependencies, })); if (features.length === 1 || currentKey === 'undefined') { @@ -171,22 +159,6 @@ export const WorkspaceForm = ({ formIdRef.current = workspaceHtmlIdGenerator(); } - const handleTemplateCardChange = useCallback( - (e) => { - const templateId = e.target.value; - setSelectedTemplateId(templateId); - setSelectedFeatureIds( - getFinalFeatureIdsByDependency( - allFeatures - .filter(({ templates }) => !!templates.find((template) => template.id === templateId)) - .map((feature) => feature.id), - featureDependencies - ) - ); - }, - [allFeatures, featureDependencies] - ); - const handleFeatureChange = useCallback( (featureId) => { setSelectedFeatureIds((previousData) => { @@ -328,56 +300,6 @@ export const WorkspaceForm = ({ - - -

Workspace Template

-
- - - {workspaceTemplates.map((template) => ( - - - - ))} - - - {selectedTemplate && ( - <> - -

Features

-
- - - {selectedTemplate.coverImage && ( - - - - )} - - {selectedTemplate.description} - -

Key Features:

-
- - - {templateFeatureMap.get(selectedTemplate.id)?.map((feature) => ( - • {feature.title} - ))} - -
-
- - - )} -
-

Workspace features

diff --git a/src/plugins/workspace/public/hooks.ts b/src/plugins/workspace/public/hooks.ts index 1132aac04e73..e84ee46507ef 100644 --- a/src/plugins/workspace/public/hooks.ts +++ b/src/plugins/workspace/public/hooks.ts @@ -6,7 +6,6 @@ import { ApplicationStart, PublicAppInfo } from 'opensearch-dashboards/public'; import { useObservable } from 'react-use'; import { useMemo } from 'react'; -import { WorkspaceTemplate } from '../../../core/types'; export function useApplications(application: ApplicationStart) { const applications = useObservable(application.applications$); @@ -18,35 +17,3 @@ export function useApplications(application: ApplicationStart) { return apps; }, [applications]); } - -export function useWorkspaceTemplate(application: ApplicationStart) { - const applications = useObservable(application.applications$); - - return useMemo(() => { - const tempWsTemplates = [] as WorkspaceTemplate[]; - let workspaceTemplates = [] as WorkspaceTemplate[]; - const templateFeatureMap = new Map(); - - if (applications) { - applications.forEach((app) => { - const { workspaceTemplate: templates = [] } = app; - tempWsTemplates.push(...templates); - for (const template of templates) { - const features = templateFeatureMap.get(template.id) || []; - features.push(app); - templateFeatureMap.set(template.id, features); - } - }); - - workspaceTemplates = tempWsTemplates.reduce((list, curr) => { - if (!list.find((ws) => ws.id === curr.id)) { - list.push(curr); - } - return list; - }, [] as WorkspaceTemplate[]); - workspaceTemplates.sort((a, b) => (a.order || 0) - (b.order || 0)); - } - - return { workspaceTemplates, templateFeatureMap }; - }, [applications]); -}