/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import { EuiBasicTableColumn, EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { DEFAULT_EMPTY_DATA, ROUTES, SortDirection } from '../../../../utils/constants';
import React, { useEffect, useState } from 'react';
import { AlertItem } from '../../models/interfaces';
import { TableWidget } from './TableWidget';
import { WidgetContainer } from './WidgetContainer';
import { parseAlertSeverityToOption } from '../../../CreateDetector/components/ConfigureAlerts/utils/helpers';
import { renderTime } from '../../../../utils/helpers';
const columns: EuiBasicTableColumn[] = [
{
field: 'time',
name: 'Time',
sortable: true,
align: 'left',
render: renderTime,
},
{
field: 'triggerName',
name: 'Alert Trigger Name',
sortable: false,
align: 'left',
},
{
field: 'severity',
name: 'Alert severity',
sortable: true,
align: 'left',
render: (severity: string) => parseAlertSeverityToOption(severity)?.label || DEFAULT_EMPTY_DATA,
},
];
export interface RecentAlertsWidgetProps {
items: AlertItem[];
loading?: boolean;
}
export const RecentAlertsWidget: React.FC = ({
items,
loading = false,
}) => {
const [alertItems, setAlertItems] = useState([]);
const [widgetEmptyMessage, setwidgetEmptyMessage] = useState(
undefined
);
useEffect(() => {
items.sort((a, b) => {
const timeA = new Date(a.time).getTime();
const timeB = new Date(b.time).getTime();
return timeB - timeA;
});
setAlertItems(items.slice(0, 20));
setwidgetEmptyMessage(
items.length > 0 ? undefined : (
No recent alerts.Adjust the time range to
see more results.
}
/>
)
);
}, [items]);
const actions = React.useMemo(
() => [View Alerts],
[]
);
return (
);
};