/* * 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 React from 'react'; import { get } from 'lodash'; import { EuiAccordion, EuiFlyout, EuiFlyoutBody, EuiFlyoutHeader, EuiText, EuiTitle, EuiSpacer, } from '@elastic/eui'; import { getFieldsAndTypesGrid, getFeaturesAndAggsAndFieldsGrid, } from '../../utils/helpers'; import { Detector } from '../../../../models/interfaces'; import { SAMPLE_DATA } from '../../utils/constants'; import { EuiHorizontalRule } from '@elastic/eui'; interface SampleDetailsFlyoutProps { title: string; sampleData: SAMPLE_DATA; detector: Detector | undefined; interval: number; onClose(): void; } export const SampleDetailsFlyout = (props: SampleDetailsFlyoutProps) => { const fieldValues = Object.keys(props.sampleData.fieldMappings); const fieldTypes = fieldValues.map((field) => get(props.sampleData.fieldMappings, `${field}.type`) ); const featureNames = Object.keys( get(props.sampleData.detectorConfig, 'uiMetadata.features') ); const featureAggs = featureNames.map((feature) => get( props.sampleData.detectorConfig, `uiMetadata.features.${feature}.aggregationBy` ) ); const featureFields = featureNames.map((feature) => get( props.sampleData.detectorConfig, `uiMetadata.features.${feature}.aggregationOf` ) ); const detectorInterval = get( props.sampleData.detectorConfig, 'detection_interval.period.interval' ); return (

{props.title}

Detector details

} initialIsOpen={true} paddingSize="m" > Name: {props.detector ? props.detector.name : props.sampleData.detectorName}

Detection interval: Every {detectorInterval} minutes

Feature details:
{getFeaturesAndAggsAndFieldsGrid( featureNames, featureAggs, featureFields )}

Index details

} initialIsOpen={false} paddingSize="m" > Name: {props.detector ? props.detector.indices[0] : props.sampleData.indexName}

Log frequency: Every {props.interval} minute(s)

Log duration: 3 weeks

Field details:
{getFieldsAndTypesGrid(fieldValues, fieldTypes)}
); };