/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React, { useState } from "react"; import { EuiButton, EuiFieldNumber, EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSelect, EuiSpacer, EuiText } from "@elastic/eui"; import { getDateHistogramGroupItem } from "../../../../utils/helpers"; import { CalendarTimeunitOptions, FixedTimeunitOptions, IntervalType } from "../../../../../../utils/constants"; import { GROUP_TYPES, TRANSFORM_AGG_TYPE, TransformAggItem, TransformGroupItem } from "../../../../../../../models/interfaces"; interface DateHistogramPanelProps { name: string; handleGroupSelectionChange: (newGroupItem: TransformGroupItem, type: TRANSFORM_AGG_TYPE, name: string) => void; aggList: TransformAggItem[]; closePopover: () => void; intervalType: IntervalType; } export default function DateHistogramPanel({ name, handleGroupSelectionChange, closePopover, intervalType }: DateHistogramPanelProps) { const [dateHistogramInterval, setDateHistogramInterval] = useState(1); const [dateHistogramTimeunit, setDateHistogramTimeunit] = useState("m"); let timeunitOptions, intervalDefinition; if (intervalType === IntervalType.FIXED) { intervalDefinition = ( setDateHistogramInterval(e.target.valueAsNumber)} data-test-subj="dateHistogramValueInput" /> ); timeunitOptions = FixedTimeunitOptions; } else { intervalDefinition = (
Every 1
); timeunitOptions = CalendarTimeunitOptions; } return (

Interval

Timeunit

{intervalDefinition} setDateHistogramTimeunit(e.target.value)} data-test-subj="dateHistogramTimeunitSelect" /> closePopover()} style={{ minWidth: 84 }} data-test-subj="dateHistogramPanelCancelButton" > Cancel { const targetFieldName = `${name} _${GROUP_TYPES.dateHistogram}_${dateHistogramInterval}_${dateHistogramTimeunit}_${intervalType}`; //Switch between fixed interval and calendar interval by checking timeunit const dateHistogramGroupItem = getDateHistogramGroupItem( name, targetFieldName, dateHistogramInterval, dateHistogramTimeunit, intervalType ); handleGroupSelectionChange(dateHistogramGroupItem, TRANSFORM_AGG_TYPE.date_histogram, targetFieldName); }} style={{ minWidth: 55 }} data-test-subj="dateHistogramPanelOKButton" > OK
); }