create.config.ts 3.89 KB
import { CreateAlarmFieldsEnum, CreateAlarmFieldsNameEnum } from '../../../enum/formField/action';
import { JavascriptEditorWithTestModal } from '../../../src/components/JavaScriptFilterModal';
import { FormSchema, useComponentRegister } from '/@/components/Form';

useComponentRegister('JavascriptEditorWithTestModal', JavascriptEditorWithTestModal);

export const formSchemas: FormSchema[] = [
  {
    field: CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA,
    component: 'Checkbox',
    label: '',
    renderComponentContent: () => ({
      default: () => CreateAlarmFieldsNameEnum.USE_MESSAGE_ALARM_DATA,
    }),
  },
  {
    field: CreateAlarmFieldsEnum.OVERWRITE_ALARM_DETAILS,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => CreateAlarmFieldsNameEnum.OVERWRITE_ALARM_DETAILS,
    }),
  },
  {
    field: CreateAlarmFieldsEnum.ALARM_DETAILS_BUILD_JS,
    component: 'JavascriptEditorWithTestModal',
    label: CreateAlarmFieldsNameEnum.ALARM_DETAILS_BUILD_JS,
    valueField: 'value',
    changeEvent: 'update:value',
    show: ({ model }) =>
      !(
        !model[CreateAlarmFieldsEnum.OVERWRITE_ALARM_DETAILS] &&
        model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA]
      ),
    componentProps: {
      javaScriptEditorProps: {
        functionName: 'Details',
        scriptType: 'json',
        paramsName: ['msg', 'metadata', 'msgType'],
      },
      buttonName: 'Test details function',
    },
  },
  {
    field: CreateAlarmFieldsEnum.ALARM_TYPE,
    component: 'Input',
    label: CreateAlarmFieldsNameEnum.ALARM_TYPE,
    helpMessage: [
      'Hint: use ${metadataKey} for value from metadata, $[messageKey] for value from message body',
    ],
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    componentProps: {
      placeholder: `请输入${CreateAlarmFieldsNameEnum.ALARM_TYPE}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.DYNAMIC_SEVERITY,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => CreateAlarmFieldsNameEnum.DYNAMIC_SEVERITY,
    }),
  },
  {
    field: CreateAlarmFieldsEnum.SEVERITY,
    component: 'Input',
    label: CreateAlarmFieldsNameEnum.SEVERITY,
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    helpMessage: [
      'Hint: use ${metadataKey} for value from metadata, $[messageKey] for value from message body. Alarm severity should be system (CRITICAL, MAJOR etc.)',
    ],
    componentProps: {
      placeholder: `请输入${CreateAlarmFieldsNameEnum.SEVERITY}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.PROPAGATE,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => CreateAlarmFieldsNameEnum.PROPAGATE,
    }),
  },
  {
    field: CreateAlarmFieldsEnum.RELATION_TYPES,
    component: 'Select',
    label: CreateAlarmFieldsNameEnum.RELATION_TYPES,
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    componentProps: {
      open: false,
      mode: 'tags',
      placeholder: `请输入${CreateAlarmFieldsNameEnum.RELATION_TYPES}`,
    },
  },
  {
    field: CreateAlarmFieldsEnum.PROPAGATE_TO_TENANT,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => CreateAlarmFieldsNameEnum.PROPAGATE_TO_TENANT,
    }),
  },
  {
    field: CreateAlarmFieldsEnum.PROPAGATE_TO_OWNER,
    component: 'Checkbox',
    label: '',
    show: ({ model }) => !model[CreateAlarmFieldsEnum.USE_MESSAGE_ALARM_DATA],
    renderComponentContent: () => ({
      default: () => CreateAlarmFieldsNameEnum.PROPAGATE_TO_OWNER,
    }),
  },
];