From 6b2f765e800417865259a3d752e288d5f34c4346 Mon Sep 17 00:00:00 2001 From: tygao Date: Mon, 28 Aug 2023 14:47:49 +0800 Subject: [PATCH] feat: update preview panel for external models Signed-off-by: tygao --- public/components/preview_panel/index.tsx | 107 +++++++++++++++------- 1 file changed, 75 insertions(+), 32 deletions(-) diff --git a/public/components/preview_panel/index.tsx b/public/components/preview_panel/index.tsx index 47b26ea5..406dda5e 100644 --- a/public/components/preview_panel/index.tsx +++ b/public/components/preview_panel/index.tsx @@ -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; @@ -60,33 +63,45 @@ export const PreviewPanel = ({ onClose, model }: Props) => { const respondingStatus = useMemo(() => { if (loading) { - return ( - - Loading... - - ); + return { + overall: ( + + Loading... + + ), + nodes: 'Loading...', + }; } const deployedNodesNum = nodes.filter(({ deployed }) => deployed).length; const targetNodesNum = nodes.length; if (deployedNodesNum === 0) { - return ( - - Not responding on {targetNodesNum} of {targetNodesNum} nodes - - ); + return { + overall: ( + + Not responding + + ), + nodes: `Not responding on ${targetNodesNum} of ${targetNodesNum} nodes`, + }; } if (deployedNodesNum < targetNodesNum) { - return ( - - Partially responding on {deployedNodesNum} of {targetNodesNum} nodes - - ); + return { + overall: ( + + Partially responding + + ), + nodes: `Responding on ${deployedNodesNum} of ${targetNodesNum} nodes`, + }; } - return ( - - Responding on {deployedNodesNum} of {targetNodesNum} nodes - - ); + return { + overall: ( + + Responding + + ), + nodes: `Responding on ${deployedNodesNum} of ${targetNodesNum} nodes`, + }; }, [nodes, loading]); const onCloseFlyout = useCallback(() => { @@ -95,26 +110,54 @@ export const PreviewPanel = ({ onClose, model }: Props) => { return ( - - -

{name}

+ + +

{name}

- Model ID + + + + +
Status
+
+
+ + {respondingStatus.overall} + +
+ + + +
Source
+
+
+ + {connector ? 'External' : 'Local'} + +
+
+ + + +
Model ID
+
+
- Source - - {connector ? 'External' : 'Local'} - - Model status by node - {respondingStatus}
- - + {connector ? ( + + ) : ( + + )}
);