import './styles.scss'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { useCallback, useMemo } from 'react'; import { Labels } from 'types/api/alerts/def'; import { useCreateAlertState } from '../context'; import LabelsInput from './LabelsInput'; function CreateAlertHeader(): JSX.Element { const { alertState, setAlertState } = useCreateAlertState(); const { currentQuery } = useQueryBuilder(); const groupByLabels = useMemo(() => { const labels = new Array(); currentQuery.builder.queryData.forEach((query) => { query.groupBy.forEach((groupBy) => { labels.push(groupBy.key); }); }); return labels; }, [currentQuery]); // If the label key is a group by label, then it is not allowed to be used as a label key const validateLabelsKey = useCallback( (key: string): string | null => { if (groupByLabels.includes(key)) { return `Cannot use ${key} as a key`; } return null; }, [groupByLabels], ); return (
New Alert Rule
setAlertState({ type: 'SET_ALERT_NAME', payload: e.target.value }) } className="alert-header__input title" placeholder="Enter alert rule name" /> setAlertState({ type: 'SET_ALERT_LABELS', payload: labels }) } validateLabelsKey={validateLabelsKey} />
); } export default CreateAlertHeader;