Skip to content

Commit

Permalink
feat: update preview panel for external models
Browse files Browse the repository at this point in the history
Signed-off-by: tygao <tygao@amazon.com>
  • Loading branch information
raintygao authored and wanglam committed Aug 28, 2023
1 parent d4f583a commit 6b2f765
Showing 1 changed file with 75 additions and 32 deletions.
107 changes: 75 additions & 32 deletions public/components/preview_panel/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@ import {
EuiDescriptionListDescription,
EuiSpacer,
EuiTextColor,
EuiFlexGroup,
EuiFlexItem,
} from '@elastic/eui';
import { APIProvider } from '../../apis/api_provider';
import { useFetcher } from '../../hooks/use_fetcher';
import { NodesTable } from './nodes_table';
import { CopyableText } from '../common';
import { ModelDeploymentProfile } from '../../apis/profile';
import { ConnectorDetails } from './connector_details';

export interface INode {
id: string;
Expand Down Expand Up @@ -60,33 +63,45 @@ export const PreviewPanel = ({ onClose, model }: Props) => {

const respondingStatus = useMemo(() => {
if (loading) {
return (
<EuiTextColor color="subdued" data-test-subj="preview-panel-color-loading-text">
Loading...
</EuiTextColor>
);
return {
overall: (
<EuiTextColor color="subdued" data-test-subj="preview-panel-color-loading-text">
Loading...
</EuiTextColor>
),
nodes: 'Loading...',
};
}
const deployedNodesNum = nodes.filter(({ deployed }) => deployed).length;
const targetNodesNum = nodes.length;
if (deployedNodesNum === 0) {
return (
<EuiHealth className="ml-modelStatusCell" color="danger">
Not responding on {targetNodesNum} of {targetNodesNum} nodes
</EuiHealth>
);
return {
overall: (
<EuiHealth className="ml-modelStatusCell" color="danger">
Not responding
</EuiHealth>
),
nodes: `Not responding on ${targetNodesNum} of ${targetNodesNum} nodes`,
};
}
if (deployedNodesNum < targetNodesNum) {
return (
<EuiHealth className="ml-modelStatusCell" color="warning">
Partially responding on {deployedNodesNum} of {targetNodesNum} nodes
</EuiHealth>
);
return {
overall: (
<EuiHealth className="ml-modelStatusCell" color="warning">
Partially responding
</EuiHealth>
),
nodes: `Responding on ${deployedNodesNum} of ${targetNodesNum} nodes`,
};
}
return (
<EuiHealth className="ml-modelStatusCell" color="success">
Responding on {deployedNodesNum} of {targetNodesNum} nodes
</EuiHealth>
);
return {
overall: (
<EuiHealth className="ml-modelStatusCell" color="success">
Responding
</EuiHealth>
),
nodes: `Responding on ${deployedNodesNum} of ${targetNodesNum} nodes`,
};
}, [nodes, loading]);

const onCloseFlyout = useCallback(() => {
Expand All @@ -95,26 +110,54 @@ export const PreviewPanel = ({ onClose, model }: Props) => {

return (
<EuiFlyout onClose={onCloseFlyout}>
<EuiFlyoutHeader>
<EuiTitle size="s">
<h3>{name}</h3>
<EuiFlyoutHeader hasBorder>
<EuiTitle size="m">
<h2>{name}</h2>
</EuiTitle>
</EuiFlyoutHeader>
<EuiFlyoutBody>
<EuiDescriptionList>
<EuiDescriptionListTitle>Model ID</EuiDescriptionListTitle>
<EuiFlexGroup>
<EuiFlexItem>
<EuiDescriptionListTitle>
<EuiTitle size="xxs">
<h5>Status</h5>
</EuiTitle>
</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
{respondingStatus.overall}
</EuiDescriptionListDescription>
</EuiFlexItem>
<EuiFlexItem>
<EuiDescriptionListTitle>
<EuiTitle size="xxs">
<h5>Source</h5>
</EuiTitle>
</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
{connector ? 'External' : 'Local'}
</EuiDescriptionListDescription>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer size="m" />
<EuiDescriptionListTitle>
<EuiTitle size="xxs">
<h5>Model ID</h5>
</EuiTitle>
</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
<CopyableText text={id} iconLeft={false} tooltipText="Copy model ID" />
</EuiDescriptionListDescription>
<EuiDescriptionListTitle>Source</EuiDescriptionListTitle>
<EuiDescriptionListDescription>
{connector ? 'External' : 'Local'}
</EuiDescriptionListDescription>
<EuiDescriptionListTitle>Model status by node</EuiDescriptionListTitle>
<EuiDescriptionListDescription>{respondingStatus}</EuiDescriptionListDescription>
</EuiDescriptionList>
<EuiSpacer />
<NodesTable loading={loading} nodes={nodes} />
{connector ? (
<ConnectorDetails
id={connector.id}
name={connector.name}
description={connector.description}
/>
) : (
<NodesTable loading={loading} nodes={nodes} nodesStatus={respondingStatus.nodes} />
)}
</EuiFlyoutBody>
</EuiFlyout>
);
Expand Down

0 comments on commit 6b2f765

Please sign in to comment.