mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Update hook form * Update Form component * Update ChangePassword.tsx * Update custom types * Update SaveDashboardForm * Update form story * Update FieldArray.story.tsx * Bump hook form version * Update typescript to v4.2.4 * Update ForgottenPassword.tsx * Update LoginForm.tsx * Update SignupPage.tsx * Update VerifyEmail.tsx * Update AdminEditOrgPage.tsx * Update UserCreatePage.tsx * Update BasicSettings.tsx * Update NotificationChannelForm.tsx * Update NotificationChannelOptions.tsx * Update NotificationSettings.tsx * Update OptionElement.tsx * Update AlertRuleForm.tsx * Update AlertTypeStep.tsx * Update AnnotationsField.tsx * Update ConditionField.tsx * Update ConditionsStep.tsx * Update GroupAndNamespaceFields.tsx * Update LabelsField.tsx * Update QueryStep.tsx * Update RowOptionsForm.tsx * Update SaveDashboardAsForm.tsx * Update NewDashboardsFolder.tsx * Update ImportDashboardForm.tsx * Update DashboardImportPage.tsx * Update NewOrgPage.tsx * Update OrgProfile.tsx * Update UserInviteForm.tsx * Update PlaylistForm.tsx * Update ChangePasswordForm.tsx * Update UserProfileEditForm.tsx * Update TeamSettings.tsx * Update SignupInvited.tsx * Expose setValue from the Form * Update typescript to v4.2.4 * Remove ref from field props * Fix tests * Revert TS update * Use exact version * Update latest batch of changes * Reduce the number of strict TS errors * Fix defaults * more type error fixes * Update CreateTeam * fix folder picker in rule form * fixes for hook form 7 * Update docs Co-authored-by: Domas <domasx2@gmail.com>
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import React, { FC } from 'react';
|
|
import { useFormContext } from 'react-hook-form';
|
|
import { Field, InputControl } from '@grafana/ui';
|
|
import { ExpressionEditor } from './ExpressionEditor';
|
|
import { RuleEditorSection } from './RuleEditorSection';
|
|
import { RuleFormType, RuleFormValues } from '../../types/rule-form';
|
|
import { AlertingQueryEditor } from '../../../components/AlertingQueryEditor';
|
|
|
|
export const QueryStep: FC = () => {
|
|
const {
|
|
control,
|
|
watch,
|
|
formState: { errors },
|
|
} = useFormContext<RuleFormValues>();
|
|
const type = watch('type');
|
|
const dataSourceName = watch('dataSourceName');
|
|
return (
|
|
<RuleEditorSection stepNo={2} title="Create a query to be alerted on">
|
|
{type === RuleFormType.system && dataSourceName && (
|
|
<Field error={errors.expression?.message} invalid={!!errors.expression?.message}>
|
|
<InputControl
|
|
name="expression"
|
|
render={({ field: { ref, ...field } }) => <ExpressionEditor {...field} dataSourceName={dataSourceName} />}
|
|
control={control}
|
|
rules={{
|
|
required: { value: true, message: 'A valid expression is required' },
|
|
}}
|
|
/>
|
|
</Field>
|
|
)}
|
|
{type === RuleFormType.threshold && (
|
|
<Field
|
|
invalid={!!errors.queries}
|
|
error={(!!errors.queries && 'Must provide at least one valid query.') || undefined}
|
|
>
|
|
<InputControl
|
|
name="queries"
|
|
render={({ field: { ref, ...field } }) => <AlertingQueryEditor {...field} />}
|
|
control={control}
|
|
rules={{
|
|
validate: (queries) => Array.isArray(queries) && !!queries.length,
|
|
}}
|
|
/>
|
|
</Field>
|
|
)}
|
|
</RuleEditorSection>
|
|
);
|
|
};
|