Skip to content

Commit

Permalink
feat: remove template section
Browse files Browse the repository at this point in the history
Signed-off-by: tygao <tygao@amazon.com>
  • Loading branch information
raintygao committed Aug 4, 2023
1 parent 340bfcc commit fe38ba6
Show file tree
Hide file tree
Showing 11 changed files with 5 additions and 209 deletions.
8 changes: 1 addition & 7 deletions src/core/public/application/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down Expand Up @@ -124,12 +124,6 @@ export interface App<HistoryLocationState = unknown> {
*/
category?: AppCategory;

/**
* The template definition of features belongs to
* See {@link WorkspaceTemplate}
*/
workspaceTemplate?: WorkspaceTemplate[];

/**
* The initial status of the application.
* Defaulting to `accessible`
Expand Down
1 change: 0 additions & 1 deletion src/core/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 0 additions & 1 deletion src/core/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
31 changes: 0 additions & 31 deletions src/core/types/workspace_template.ts

This file was deleted.

38 changes: 0 additions & 38 deletions src/core/utils/default_workspace_templates.ts

This file was deleted.

1 change: 0 additions & 1 deletion src/core/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
7 changes: 0 additions & 7 deletions src/plugins/dashboard/public/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;
Expand Down
6 changes: 1 addition & 5 deletions src/plugins/discover/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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');
Expand Down
6 changes: 1 addition & 5 deletions src/plugins/visualize/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,10 @@ import {
EuiText,
EuiButton,
EuiFlexItem,
EuiCheckableCard,
htmlIdGenerator,
EuiFlexGrid,
EuiFlexGroup,
EuiImage,
EuiCheckbox,
EuiCheckboxGroup,
EuiCheckableCardProps,
EuiCheckboxGroupProps,
EuiCheckboxProps,
EuiFieldTextProps,
Expand All @@ -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,
Expand All @@ -47,7 +42,6 @@ import { WorkspaceIconSelector } from './workspace_icon_selector';
interface WorkspaceFeature extends Pick<App, 'dependencies'> {
id: string;
name: string;
templates: WorkspaceTemplate[];
}

interface WorkspaceFeatureGroup {
Expand Down Expand Up @@ -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);
Expand All @@ -96,11 +89,7 @@ export const WorkspaceForm = ({
const [icon, setIcon] = useState(defaultValues?.icon);
const [defaultVISTheme, setDefaultVISTheme] = useState(defaultValues?.defaultVISTheme);

const [selectedTemplateId, setSelectedTemplateId] = useState<string>();
const [selectedFeatureIds, setSelectedFeatureIds] = useState(defaultValues?.features || []);
const selectedTemplate = workspaceTemplates.find(
(template) => template.id === selectedTemplateId
);
const [formErrors, setFormErrors] = useState<WorkspaceFormErrors>({});
const formIdRef = useRef<string>();
const getFormData = () => ({
Expand All @@ -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') {
Expand Down Expand Up @@ -171,22 +159,6 @@ export const WorkspaceForm = ({
formIdRef.current = workspaceHtmlIdGenerator();
}

const handleTemplateCardChange = useCallback<EuiCheckableCardProps['onChange']>(
(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<EuiCheckboxGroupProps['onChange']>(
(featureId) => {
setSelectedFeatureIds((previousData) => {
Expand Down Expand Up @@ -328,56 +300,6 @@ export const WorkspaceForm = ({
</EuiFormRow>
</EuiPanel>
<EuiSpacer />
<EuiPanel>
<EuiTitle size="s">
<h2>Workspace Template</h2>
</EuiTitle>
<EuiSpacer />
<EuiFlexGrid columns={2}>
{workspaceTemplates.map((template) => (
<EuiFlexItem key={template.label}>
<EuiCheckableCard
id={workspaceHtmlIdGenerator()}
title={template.label}
label={template.label}
value={template.id}
checked={template.id === selectedTemplateId}
onChange={handleTemplateCardChange}
/>
</EuiFlexItem>
))}
</EuiFlexGrid>
<EuiSpacer />
{selectedTemplate && (
<>
<EuiTitle size="xs">
<h3>Features</h3>
</EuiTitle>
<EuiSpacer />
<EuiFlexGroup>
{selectedTemplate.coverImage && (
<EuiFlexItem>
<EuiImage src={selectedTemplate.coverImage} alt={selectedTemplate.label} />
</EuiFlexItem>
)}
<EuiFlexItem>
<EuiText>{selectedTemplate.description}</EuiText>
<EuiTitle size="xs">
<h4>Key Features:</h4>
</EuiTitle>
<EuiSpacer />
<EuiFlexGrid style={{ paddingLeft: 20, paddingRight: 100 }} columns={2}>
{templateFeatureMap.get(selectedTemplate.id)?.map((feature) => (
<EuiFlexItem key={feature.id}>{feature.title}</EuiFlexItem>
))}
</EuiFlexGrid>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer />
</>
)}
</EuiPanel>
<EuiSpacer />
<EuiPanel>
<EuiTitle size="s">
<h2>Workspace features</h2>
Expand Down
33 changes: 0 additions & 33 deletions src/plugins/workspace/public/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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$);
Expand All @@ -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<string, PublicAppInfo[]>();

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]);
}

0 comments on commit fe38ba6

Please sign in to comment.