Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Backport 2.x] Refactor UseCases into nested tab; standardize page layouts #55

Merged
merged 1 commit into from
Oct 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions public/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import { EuiPageSideBar, EuiSideNav, EuiPageTemplate } from '@elastic/eui';
import { Navigation, APP_PATH } from './utils';
import {
Overview,
UseCases,
Workflows,
WorkflowDetail,
WorkflowDetailRouterProps,
WorkflowsRouterProps,
} from './pages';

interface Props extends RouteComponentProps {}
Expand All @@ -28,10 +28,10 @@ export const AiFlowDashboardsApp = (props: Props) => {
id: 0,
items: [
{
name: Navigation.UseCases,
name: Navigation.Overview,
id: 1,
href: `#${APP_PATH.USE_CASES}`,
isSelected: props.location.pathname === APP_PATH.USE_CASES,
href: `#${APP_PATH.OVERVIEW}`,
isSelected: props.location.pathname === APP_PATH.OVERVIEW,
},
{
name: Navigation.Workflows,
Expand All @@ -54,10 +54,6 @@ export const AiFlowDashboardsApp = (props: Props) => {
pageSideBar={sidebar}
>
<Switch>
<Route
path={APP_PATH.USE_CASES}
render={(routeProps: RouteComponentProps) => <UseCases />}
/>
<Route
path={APP_PATH.WORKFLOW_DETAIL}
render={(
Expand All @@ -66,7 +62,9 @@ export const AiFlowDashboardsApp = (props: Props) => {
/>
<Route
path={APP_PATH.WORKFLOWS}
render={(routeProps: RouteComponentProps) => <Workflows />}
render={(routeProps: RouteComponentProps<WorkflowsRouterProps>) => (
<Workflows {...routeProps} />
)}
/>
{/* Defaulting to Overview page */}
<Route
Expand Down
1 change: 0 additions & 1 deletion public/pages/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
* SPDX-License-Identifier: Apache-2.0
*/

export * from './use_cases';
export * from './workflows';
export * from './overview';
export * from './workflow_detail';
25 changes: 20 additions & 5 deletions public/pages/overview/overview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,33 @@
*/

import React, { useEffect } from 'react';
import { EuiPageHeader, EuiText } from '@elastic/eui';
import {
EuiPage,
EuiPageBody,
EuiPageHeader,
EuiPageContent,
EuiText,
} from '@elastic/eui';
import { BREADCRUMBS } from '../../utils';
import { getCore } from '../../services';

export function Overview() {
useEffect(() => {
getCore().chrome.setBreadcrumbs([BREADCRUMBS.AI_APPLICATION_BUILDER]);
getCore().chrome.setBreadcrumbs([
BREADCRUMBS.AI_APPLICATION_BUILDER,
BREADCRUMBS.OVERVIEW,
]);
});

return (
<EuiPageHeader>
<EuiText>Welcome to the AI Application Builder!</EuiText>
</EuiPageHeader>
<EuiPage>
<EuiPageBody>
<EuiPageHeader pageTitle="Overview" />

<EuiPageContent>
<EuiText>TODO: Put overview details here...</EuiText>
</EuiPageContent>
</EuiPageBody>
</EuiPage>
);
}
6 changes: 0 additions & 6 deletions public/pages/use_cases/index.ts

This file was deleted.

61 changes: 0 additions & 61 deletions public/pages/use_cases/use_cases.tsx

This file was deleted.

26 changes: 12 additions & 14 deletions public/pages/workflow_detail/components/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,17 @@ interface WorkflowDetailHeaderProps {

export function WorkflowDetailHeader(props: WorkflowDetailHeaderProps) {
return (
<div>
<EuiPageHeader
pageTitle={props.workflow ? props.workflow.name : ''}
description={props.workflow ? props.workflow.description : ''}
rightSideItems={[
<EuiButton fill={false} onClick={() => {}}>
Prototype
</EuiButton>,
<EuiButton fill={false} onClick={() => {}}>
Save
</EuiButton>,
]}
/>
</div>
<EuiPageHeader
pageTitle={props.workflow ? props.workflow.name : ''}
description={props.workflow ? props.workflow.description : ''}
rightSideItems={[
<EuiButton fill={false} onClick={() => {}}>
Prototype
</EuiButton>,
<EuiButton fill={false} onClick={() => {}}>
Save
</EuiButton>,
]}
/>
);
}
13 changes: 7 additions & 6 deletions public/pages/workflow_detail/workflow_detail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import React, { useEffect } from 'react';
import { RouteComponentProps } from 'react-router-dom';
import { useSelector } from 'react-redux';
import { EuiSpacer } from '@elastic/eui';
import { EuiPage, EuiPageBody } from '@elastic/eui';
import { BREADCRUMBS } from '../../utils';
import { getCore } from '../../services';
import { WorkflowDetailHeader } from './components';
Expand Down Expand Up @@ -37,10 +37,11 @@ export function WorkflowDetail(props: WorkflowDetailProps) {
});

return (
<div>
<WorkflowDetailHeader workflow={workflow} />
<EuiSpacer size="l" />
<Workspace workflow={workflow} />
</div>
<EuiPage>
<EuiPageBody>
<WorkflowDetailHeader workflow={workflow} />
<Workspace workflow={workflow} />
</EuiPageBody>
</EuiPage>
);
}
78 changes: 38 additions & 40 deletions public/pages/workflow_detail/workspace/workspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,47 +111,45 @@ export function Workspace(props: WorkspaceProps) {
}, [props.workflow]);

return (
<EuiFlexItem grow={true}>
<EuiFlexGroup
direction="column"
gutterSize="m"
justifyContent="spaceBetween"
className="workspace"
<EuiFlexGroup
direction="column"
gutterSize="m"
justifyContent="spaceBetween"
className="workspace"
>
<EuiFlexItem
style={{
borderStyle: 'groove',
borderColor: 'gray',
borderWidth: '1px',
}}
>
<EuiFlexItem
style={{
borderStyle: 'groove',
borderColor: 'gray',
borderWidth: '1px',
}}
>
{/**
* We have these wrapper divs & reactFlowWrapper ref to control and calculate the
* ReactFlow bounds when calculating node positioning.
*/}
<div className="reactflow-parent-wrapper">
<div className="reactflow-wrapper" ref={reactFlowWrapper}>
<ReactFlow
nodes={nodes}
edges={edges}
nodeTypes={nodeTypes}
edgeTypes={edgeTypes}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}
onInit={setReactFlowInstance}
onDrop={onDrop}
onDragOver={onDragOver}
className="reactflow-workspace"
fitView
>
<Controls />
<Background />
</ReactFlow>
</div>
{/**
* We have these wrapper divs & reactFlowWrapper ref to control and calculate the
* ReactFlow bounds when calculating node positioning.
*/}
<div className="reactflow-parent-wrapper">
<div className="reactflow-wrapper" ref={reactFlowWrapper}>
<ReactFlow
nodes={nodes}
edges={edges}
nodeTypes={nodeTypes}
edgeTypes={edgeTypes}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}
onInit={setReactFlowInstance}
onDrop={onDrop}
onDragOver={onDragOver}
className="reactflow-workspace"
fitView
>
<Controls />
<Background />
</ReactFlow>
</div>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
</div>
</EuiFlexItem>
</EuiFlexGroup>
);
}
2 changes: 1 addition & 1 deletion public/pages/workflows/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
* SPDX-License-Identifier: Apache-2.0
*/

export { Workflows } from './workflows';
export * from './workflows';
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
* SPDX-License-Identifier: Apache-2.0
*/

export { UseCase } from './use_case';
export { NewWorkflow } from './new_workflow';
36 changes: 36 additions & 0 deletions public/pages/workflows/new_workflow/new_workflow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import React from 'react';
import { EuiFlexItem, EuiFlexGrid } from '@elastic/eui';

import { UseCase } from './use_case';

interface NewWorkflowProps {}

export function NewWorkflow(props: NewWorkflowProps) {
return (
<EuiFlexGrid columns={3} gutterSize="l">
<EuiFlexItem>
<UseCase
title="Semantic Search"
description="Semantic search description..."
/>
</EuiFlexItem>
<EuiFlexItem>
<UseCase
title="Multi-modal Search"
description="Multi-modal search description..."
/>
</EuiFlexItem>
<EuiFlexItem>
<UseCase
title="Search Summarization"
description="Search summarization description..."
/>
</EuiFlexItem>
</EuiFlexGrid>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

import React, { useEffect } from 'react';
import React from 'react';
import {
EuiText,
EuiFlexGroup,
Expand Down
Loading
Loading