/* * SPDX-License-Identifier: Apache-2.0 * * The OpenSearch Contributors require contributions made to * this file be licensed under the Apache-2.0 license or a * compatible open source license. * * Modifications Copyright OpenSearch Contributors. See * GitHub history for details. */ import { EuiLink, EuiText, EuiToolTip, EuiHealth, EuiBasicTableColumn, } from '@elastic/eui'; //@ts-ignore import moment from 'moment'; import { get, isEmpty } from 'lodash'; import React from 'react'; import { Detector } from '../../../models/interfaces'; import { PLUGIN_NAME } from '../../../utils/constants'; import { DETECTOR_STATE } from '../../../../server/utils/constants'; import { stateToColorMap } from '../../utils/constants'; export const DEFAULT_EMPTY_DATA = '-'; export const columnStyle = { overflow: 'visible', whiteSpace: 'normal', wordBreak: 'break-word', } as React.CSSProperties; export const renderTime = (time: number) => { const momentTime = moment(time); if (time && momentTime.isValid()) return momentTime.format('MM/DD/YYYY h:mm A'); return DEFAULT_EMPTY_DATA; }; export const renderIndices = (indices: string[]) => { return get(indices, '0', DEFAULT_EMPTY_DATA); }; export const renderState = (state: DETECTOR_STATE) => { return ( //@ts-ignore {state} ); }; export const staticColumn = [ { field: 'name', name: ( Detector{''} ), sortable: true, truncateText: true, textOnly: true, align: 'left', width: '15%', render: (name: string, detector: Detector) => ( {name} ), }, { field: 'indices', name: ( Indices{''} ), sortable: true, truncateText: true, textOnly: true, align: 'left', width: '15%', render: renderIndices, }, { field: 'curState', name: ( Real-time state{''} ), sortable: true, dataType: 'string', align: 'left', width: '12%', truncateText: false, render: renderState, }, { field: 'task', name: ( Historical analysis{''} ), sortable: true, truncateText: true, textOnly: true, align: 'left', width: '15%', render: (name: string, detector: Detector) => { return !isEmpty(detector.taskId) ? ( View results ) : ( - ); }, }, { field: 'totalAnomalies', name: ( Anomalies last 24 hours{''} ), sortable: true, dataType: 'number', align: 'right', width: '16%', truncateText: false, }, { field: 'lastActiveAnomaly', name: ( Last real-time occurrence{''} ), sortable: true, dataType: 'date', truncateText: false, align: 'left', width: '16%', render: renderTime, }, { field: 'enabledTime', name: ( Last started{''} ), sortable: true, dataType: 'date', truncateText: false, align: 'left', width: '16%', render: renderTime, }, ] as EuiBasicTableColumn[];