/*
* 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 (
);
};