/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import { EuiBasicTableColumn, EuiButton, EuiEmptyPrompt } from '@elastic/eui'; import { ROUTES, SortDirection } from '../../../../utils/constants'; import React, { useEffect, useState } from 'react'; import { FindingItem } from '../../models/interfaces'; import { TableWidget } from './TableWidget'; import { WidgetContainer } from './WidgetContainer'; import { renderTime, capitalizeFirstLetter } from '../../../../utils/helpers'; const columns: EuiBasicTableColumn[] = [ { field: 'time', name: 'Time', sortable: true, align: 'left', truncateText: true, render: renderTime, }, { field: 'ruleName', name: 'Rule Name', sortable: false, align: 'left', }, { field: 'ruleSeverity', name: 'Rule severity', sortable: false, align: 'left', width: '20%', render: (ruleSeverity: string) => capitalizeFirstLetter(ruleSeverity), }, { field: 'detector', name: 'Detector', sortable: false, align: 'left', }, ]; export interface RecentFindingsWidgetProps { items: FindingItem[]; loading?: boolean; } export const RecentFindingsWidget: React.FC = ({ items, loading = false, }) => { const [findingItems, setFindingItems] = useState([]); const [widgetEmptyMessage, setWidgetEmptyMessage] = useState( undefined ); useEffect(() => { items.sort((a, b) => { return b.time - a.time; }); setFindingItems(items.slice(0, 20)); setWidgetEmptyMessage( items.length > 0 ? undefined : ( No recent findings.Adjust the time range to see more results.

} /> ) ); }, [items]); const actions = React.useMemo( () => [View all findings], [] ); return ( ); };