import { Form, Select, Typography } from 'antd'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { AlertDef, defaultCompareOp, defaultEvalWindow, defaultMatchType, } from 'types/api/alerts/def'; import { EQueryType } from 'types/common/dashboard'; import { FormContainer, InlineSelect, StepHeading, ThresholdInput, } from './styles'; const { Option } = Select; const FormItem = Form.Item; function RuleOptions({ alertDef, setAlertDef, queryCategory, }: RuleOptionsProps): JSX.Element { // init namespace for translations const { t } = useTranslation('alerts'); const handleMatchOptChange = (value: string | unknown): void => { const m = (value as string) || alertDef.condition?.matchType; setAlertDef({ ...alertDef, condition: { ...alertDef.condition, matchType: m, }, }); }; const renderCompareOps = (): JSX.Element => ( { const newOp = (value as string) || ''; setAlertDef({ ...alertDef, condition: { ...alertDef.condition, op: newOp, }, }); }} > ); const renderThresholdMatchOpts = (): JSX.Element => ( handleMatchOptChange(value)} > ); const renderPromMatchOpts = (): JSX.Element => ( handleMatchOptChange(value)} > ); const renderEvalWindows = (): JSX.Element => ( { const ew = (value as string) || alertDef.evalWindow; setAlertDef({ ...alertDef, evalWindow: ew, }); }} > {' '} ); const renderThresholdRuleOpts = (): JSX.Element => ( {t('text_condition1')} {renderCompareOps()} {t('text_condition2')}{' '} {renderThresholdMatchOpts()} {t('text_condition3')} {renderEvalWindows()} ); const renderPromRuleOptions = (): JSX.Element => ( {t('text_condition1')} {renderCompareOps()} {t('text_condition2')}{' '} {renderPromMatchOpts()} ); return ( <> {t('alert_form_step2')} {queryCategory === EQueryType.PROM ? renderPromRuleOptions() : renderThresholdRuleOpts()}
{ setAlertDef({ ...alertDef, condition: { ...alertDef.condition, op: alertDef.condition?.op || defaultCompareOp, matchType: alertDef.condition?.matchType || defaultMatchType, target: value as number, }, }); }} />
); } interface RuleOptionsProps { alertDef: AlertDef; setAlertDef: (a: AlertDef) => void; queryCategory: EQueryType; } export default RuleOptions;