/*
* 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[];