/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import { EuiPanel, EuiPageHeader, EuiSpacer, EuiTextColor, EuiFlexGroup, EuiFlexItem, EuiText, } from '@elastic/eui'; import React, { useState, useRef, useCallback } from 'react'; import { useUiSetting } from '../../../../../src/plugins/opensearch_dashboards_react/public'; import { ModelDeploymentProfile } from '../../apis/profile'; import { RefreshInterval } from '../common/refresh_interval'; import { PreviewPanel } from '../preview_panel'; import { ModelDeploymentItem, ModelDeploymentTable } from './model_deployment_table'; import { useMonitoring } from './use_monitoring'; import { ModelStatusFilter } from './model_status_filter'; import { SearchBar } from './search_bar'; export const Monitoring = () => { const { pageStatus, params, pagination, deployedModels, handleTableChange, resetSearch, searchByNameOrId, reload, searchByStatus, } = useMonitoring(); const darkMode = useUiSetting('theme:darkMode'); const [previewModel, setPreviewModel] = useState(null); const searchInputRef = useRef(); const setInputRef = useCallback((node: HTMLInputElement | null) => { searchInputRef.current = node; }, []); const onResetSearch = useCallback(() => { if (searchInputRef.current) { searchInputRef.current.value = ''; } resetSearch(); }, [resetSearch]); const handleViewDetail = useCallback((modelPreviewItem: ModelDeploymentItem) => { setPreviewModel(modelPreviewItem); }, []); const onCloseModelPreview = useCallback( (modelProfile: ModelDeploymentProfile | null) => { if ( modelProfile !== null && (previewModel?.planningNodesCount !== modelProfile.target_worker_nodes?.length || previewModel?.respondingNodesCount !== modelProfile.worker_nodes?.length) ) { reload(); } setPreviewModel(null); }, [previewModel, reload] ); return (
, ]} />

Deployed models{' '} {pageStatus !== 'empty' && ( ({pagination?.totalRecords ?? 0}) )}

{pageStatus !== 'empty' && ( <> )} {previewModel && }
); };