All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.bb8c8232-64.8324d02abbc7ed0c3d2d.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"bb8c8232-64.8324d02abbc7ed0c3d2d.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventConditionForm.css","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/FieldsList.css","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/NotificationsForm.css","webpack://graylog-web-interface/./src/stores/event-definitions/AvailableEventDefinitionTypesStore.js","webpack://graylog-web-interface/./src/components/event-definitions/hooks/useEventDefinitionConfigFromLocalStorage.ts","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventDefinitionFormControls.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventDetailsForm.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventConditionForm.css?65c2","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventConditionForm.tsx","webpack://graylog-web-interface/./src/components/event-definitions/common/EventKeyHelpPopover.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/FieldForm.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/FieldsList.css?aeea","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/FieldsList.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/FieldsForm.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/AddNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/NotificationSettingsForm.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/NotificationList.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/NotificationsForm.css?d902","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/NotificationsForm.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventDefinitionForm.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-form/EventDefinitionFormContainer.tsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-form/EventNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-form/EventNotificationFormContainer.jsx","webpack://graylog-web-interface/./node_modules/lodash/clone.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bK_1OgMCpxX5cNvo_KNH {\n    margin-top: 35px;\n}\n\n.r3CTNJIqazOh7HmXypag {\n    margin-left: 15px;\n    margin-right: 15px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-form/EventConditionForm.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;AACpB;;AAEA;IACI,iBAAiB;IACjB,kBAAkB;AACtB\",\"sourcesContent\":[\":local(.conditionTypesInfo) {\\n    margin-top: 35px;\\n}\\n\\n:local(.hr) {\\n    margin-left: 15px;\\n    margin-right: 15px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"conditionTypesInfo\": `bK_1OgMCpxX5cNvo_KNH`,\n\t\"hr\": `r3CTNJIqazOh7HmXypag`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ZziANjUKFVuuqMSwLmtB {\n    width: 150px;\n}\n\n.Xylx_0ZpoJHGYL_KE6gZ:not(:last-child)::after {\n    content: ', ';\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-form/FieldsList.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,YAAY;AAChB;;AAEA;IACI,aAAa;AACjB\",\"sourcesContent\":[\":local(.actions) {\\n    width: 150px;\\n}\\n\\n:local(.providerOptions):not(:last-child)::after {\\n    content: ', ';\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"actions\": `ZziANjUKFVuuqMSwLmtB`,\n\t\"providerOptions\": `Xylx_0ZpoJHGYL_KE6gZ`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.NLt8T3UO0KICJTv1bzhC {\n    float: right;\n    margin-top: 10px;\n}\n\n.cWTw12YX10UuN5KAKoIX {\n    margin-top: 35px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-form/NotificationsForm.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,YAAY;IACZ,gBAAgB;AACpB;;AAEA;IACI,gBAAgB;AACpB\",\"sourcesContent\":[\":local(.manageNotifications) {\\n    float: right;\\n    margin-top: 10px;\\n}\\n\\n:local(.notificationSettings) {\\n    margin-top: 35px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"manageNotifications\": `NLt8T3UO0KICJTv1bzhC`,\n\t\"notificationSettings\": `cWTw12YX10UuN5KAKoIX`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const AvailableEventDefinitionTypesActions = singletonActions(\n  'core.AvailableEventDefinitionTypes',\n  () => Reflux.createActions({\n    get: { asyncResult: true },\n  }),\n);\n\nexport const AvailableEventDefinitionTypesStore = singletonStore(\n  'core.AvailableEventDefinitionTypes',\n  () => Reflux.createStore({\n    listenables: [AvailableEventDefinitionTypesActions],\n    sourceUrl: '/events/entity_types',\n    entityTypes: undefined,\n\n    init() {\n      this.get();\n    },\n\n    getInitialState() {\n      return this.entityTypes;\n    },\n\n    get() {\n      const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl));\n\n      promise.then((response) => {\n        this.entityTypes = response;\n        this.trigger(this.entityTypes);\n      });\n    },\n  }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport { useMemo } from 'react';\n\nimport Store from 'logic/local-storage/Store';\nimport useQuery from 'routing/useQuery';\nimport type { ParameterJson } from 'views/logic/parameters/Parameter';\n\nexport type EventDefinitionLocalStorageConfig = {\n  type,\n  query?: string,\n  streams?: Array,\n  search_within_ms?: number,\n  group_by?: Array,\n  agg_function?: string,\n  agg_field?: string,\n  agg_value?: string | number,\n  loc_query_parameters?: Array\n}\n\ntype EventDefinitionConfigFromUrl = {\n  type: string,\n  query: string,\n  query_parameters: ParameterJson[],\n  streams: string[],\n  group_by?: string[],\n  series?: Array<{ id: string, function: string, field: string }>,\n  search_within_ms: number,\n  conditions?: {\n    expression: {left: any, right: any, expr: any},\n  },\n}\n\nconst useEventDefinitionConfigFromLocalStorage = (): { hasLocalStorageConfig: boolean; configFromLocalStorage: EventDefinitionConfigFromUrl } => {\n  const { 'session-id': sessionId } = useQuery();\n\n  return useMemo(() => {\n    const parsedLocalStorageConfig = Store.get(sessionId);\n    if (!parsedLocalStorageConfig) return ({ hasLocalStorageConfig: false, configFromLocalStorage: undefined });\n    Store.delete(sessionId);\n\n    const {\n      type,\n      query,\n      streams,\n      search_within_ms,\n      group_by,\n      agg_function,\n      agg_field,\n      agg_value,\n      loc_query_parameters,\n    } = parsedLocalStorageConfig;\n\n    const aggData = (agg_function && agg_value) ? {\n      conditions: {\n        expression: {\n          expr: undefined,\n          left: { expr: 'number-ref', ref: `${agg_function}-${agg_field}` },\n          right: { expr: 'number', value: agg_value },\n        },\n      },\n      series: [{ id: `${agg_function}-${agg_field}`, function: agg_function, field: agg_field }],\n      group_by: group_by || [],\n    } : {};\n\n    return ({\n      hasLocalStorageConfig: true,\n      configFromLocalStorage: {\n        type,\n        query: query ?? '',\n        streams: streams ?? [],\n        search_within_ms,\n        group_by: group_by ?? [],\n        query_parameters: loc_query_parameters ?? [],\n        ...aggData,\n      },\n    });\n  }, [sessionId]);\n};\n\nexport default useEventDefinitionConfigFromLocalStorage;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React from 'react';\n\nimport { ModalSubmit } from 'components/common';\nimport { Button } from 'components/bootstrap';\nimport type { EventDefinitionFormControlsProps } from 'components/event-definitions/event-definitions-types';\n\nconst EventDefinitionFormControls = ({\n  action,\n  activeStepIndex,\n  onCancel,\n  onOpenNextPage,\n  onOpenPrevPage,\n  onSubmit,\n  steps,\n}: EventDefinitionFormControlsProps) => {\n  if (activeStepIndex === steps.length - 1) {\n    return (\n      \n    );\n  }\n\n  return (\n    
\n \n
\n \n
\n
\n );\n};\n\nexport default EventDefinitionFormControls;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport map from 'lodash/map';\nimport upperFirst from 'lodash/upperFirst';\nimport toNumber from 'lodash/toNumber';\nimport toString from 'lodash/toString';\n\nimport { Select } from 'components/common';\nimport { MarkdownEditor, MarkdownPreview } from 'components/common/MarkdownEditor';\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row, Input } from 'components/bootstrap';\nimport EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nimport type { EventDefinition } from '../event-definitions-types';\nimport commonStyles from '../common/commonStyles.css';\n\nconst priorityOptions = map(EventDefinitionPriorityEnum.properties, (value, key) => ({ value: key, label: upperFirst(value.name) }));\n\ntype Props = {\n eventDefinition: EventDefinition,\n validation: {\n errors: {\n title?: string,\n }\n },\n onChange: (name: string, value: string | number) => void,\n canEdit: boolean,\n}\n\nconst EventDetailsForm = ({ eventDefinition, validation, onChange, canEdit }: Props) => {\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n const handleChange = (event) => {\n const { name } = event.target;\n\n onChange(name, FormsUtils.getValueFromInput(event.target));\n };\n\n const handlePriorityChange = (nextPriority) => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_DETAILS.PRIORITY_CHANGED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-details',\n app_action_value: 'priority-select',\n priority: priorityOptions[toNumber(nextPriority) - 1]?.label,\n });\n\n onChange('priority', toNumber(nextPriority));\n };\n\n const readOnly = !canEdit\n || eventDefinition.config.type === 'system-notifications-v1'\n || eventDefinition.config.type === 'sigma-v1';\n\n return (\n \n \n

Event Details

\n
\n \n\n Description (Optional)}\n type=\"textarea\"\n help=\"Longer description for this Event Definition.\"\n value={eventDefinition.description}\n onChange={handleChange}\n readOnly={readOnly}\n rows={2} />\n\n
\n Remediation Steps (Optional)\n {readOnly ? (\n \n ) : (\n handleChange({ target: { name: 'remediation_steps', value: newValue } })} />\n )}\n
\n\n \n Priority\n \n \n {get(validation, 'errors.config[0]', 'Choose the type of Condition for this Event.')}\n \n \n \n )}\n \n\n {canEditCondition && !disabledSelect() && (\n <>\n \n \n {renderConditionTypeDescriptions()}\n \n \n \n\n {eventDefinitionTypeComponent && (\n <>\n
\n \n {eventDefinitionTypeComponent}\n \n \n )}\n \n )}\n \n );\n};\n\nEventConditionForm.defaultProps = {\n action: 'create',\n entityTypes: undefined,\n};\n\nEventConditionForm.propTypes = {\n action: PropTypes.oneOf(['create', 'edit']),\n entityTypes: PropTypes.object,\n eventDefinition: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired, // Prop is passed down to pluggable entities\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default EventConditionForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nconst EventKeyHelpPopover = () => (\n <>\n Event Keys are Fields used to arrange Events into groups. A group is created for each unique Key, so\n Graylog will generate as many Events as unique Keys are found. Example:\n

\n No Event Keys: One Event for each Login failure message.
\n Event Key username: One Event for each username with a Login failure message.\n \n);\n\nexport default EventKeyHelpPopover;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport get from 'lodash/get';\nimport isNumber from 'lodash/isNumber';\n\nimport { Select, HoverForHelp } from 'components/common';\nimport {\n Button,\n ButtonToolbar,\n Col,\n ControlLabel,\n FormControl,\n FormGroup,\n HelpBlock,\n InputGroup,\n Input,\n Row,\n} from 'components/bootstrap';\nimport EventKeyHelpPopover from 'components/event-definitions/common/EventKeyHelpPopover';\nimport * as FormsUtils from 'util/FormsUtils';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport withLocation from 'routing/withLocation';\n\nimport commonStyles from '../common/commonStyles.css';\n\nconst requiredFields = [\n 'fieldName',\n 'config.providers[0].type',\n];\n\nconst getProviderPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n\n return PluginStore.exports('fieldValueProviders').find((edt) => edt.type === type) || {};\n};\n\nconst getConfigProviderType = (config, defaultValue) => get(config, 'providers[0].type', defaultValue);\n\nconst formatFieldValueProviders = () => PluginStore.exports('fieldValueProviders')\n .map((type) => ({ label: type.displayName, value: type.type }));\n\nclass FieldForm extends React.Component {\n static propTypes = {\n fieldName: PropTypes.string,\n config: PropTypes.object,\n currentUser: PropTypes.object.isRequired,\n keys: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n sendTelemetry: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n fieldName: '',\n config: {},\n };\n\n constructor(props) {\n super(props);\n const keyIndex = props.keys.indexOf(props.fieldName);\n\n this.state = {\n fieldName: props.fieldName,\n config: { data_type: 'string', providers: [], ...props.config },\n isKey: keyIndex >= 0,\n keyPosition: keyIndex >= 0 ? keyIndex + 1 : props.keys.length + 1,\n validation: { errors: {} },\n };\n }\n\n validate = () => {\n const { isKey, keyPosition, config } = this.state;\n const errors = {};\n\n const providerType = getConfigProviderType(config);\n let pluginRequiredFields = [];\n\n if (providerType) {\n const providerPlugin = getProviderPlugin(providerType);\n\n pluginRequiredFields = providerPlugin.requiredFields;\n }\n\n requiredFields.forEach((requiredField) => {\n if (!get(this.state, requiredField)) {\n errors[requiredField] = 'Field cannot be empty.';\n }\n });\n\n if (isKey && (!isNumber(keyPosition) || Number(keyPosition) < 1)) {\n errors.key_position = 'Field must be a positive number.';\n }\n\n pluginRequiredFields.forEach((requiredField) => {\n if (!get(config, `providers[0].${requiredField}`)) {\n errors[requiredField] = 'Field cannot be empty.';\n }\n });\n\n const errorNumber = Object.keys(errors).length;\n\n if (errorNumber > 0) {\n this.setState({ validation: { errors: errors } });\n }\n\n return errorNumber === 0;\n };\n\n handleSubmit = () => {\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_FIELDS.DONE_CLICKED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_section: 'event-definition-fields',\n app_action_value: 'done-button',\n });\n\n if (this.validate()) {\n const { fieldName: prevFieldName, onChange } = this.props;\n const { fieldName, config, isKey, keyPosition } = this.state;\n\n onChange(prevFieldName, fieldName, config, isKey, keyPosition - 1);\n }\n };\n\n handleCancel = () => {\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_FIELDS.CANCEL_CLICKED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_section: 'event-definition-fields',\n app_action_value: 'cancel-button',\n });\n\n this.props.onCancel();\n };\n\n handleFieldNameChange = (event) => {\n const nextFieldName = FormsUtils.getValueFromInput(event.target);\n\n this.setState({ fieldName: nextFieldName });\n };\n\n handleConfigChange = (nextConfig) => {\n this.setState({ config: nextConfig });\n };\n\n handleProviderTypeChange = (nextProvider) => {\n this.props.sendTelemetry(\n (nextProvider === 'lookup-v1')\n ? TELEMETRY_EVENT_TYPE.EVENTDEFINITION_FIELDS.SET_VALUE_FROM_LOOKUP_TABLE_SELECTED\n : TELEMETRY_EVENT_TYPE.EVENTDEFINITION_FIELDS.SET_VALUE_FROM_TEMPLATE_SELECTED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_section: 'event-definition-fields',\n app_action_value: 'set-value-from-select',\n value_source: nextProvider,\n });\n\n const { config } = this.state;\n const providerPlugin = getProviderPlugin(nextProvider);\n const defaultProviderConfig = providerPlugin.defaultConfig || {};\n const nextConfig = {\n ...config,\n providers: [{\n ...defaultProviderConfig,\n type: nextProvider,\n }],\n };\n\n this.handleConfigChange(nextConfig);\n };\n\n handleKeySortChange = (event) => {\n const nextPosition = event.target.value === '' ? '' : FormsUtils.getValueFromInput(event.target);\n\n this.setState({ keyPosition: nextPosition });\n };\n\n toggleKey = (event) => {\n const checked = FormsUtils.getValueFromInput(event.target);\n\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_FIELDS.AS_EVENT_KEY_TOGGLED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_section: 'event-definition-fields',\n app_action_value: 'event-key-checkbox',\n event_key_checked: checked,\n });\n\n this.setState({ isKey: checked });\n };\n\n renderFieldValueProviderForm = () => {\n const { fieldName, config, validation } = this.state;\n const { currentUser } = this.props;\n\n const providerType = getConfigProviderType(config);\n\n if (!providerType) {\n return null;\n }\n\n const providerPlugin = getProviderPlugin(providerType);\n\n return (providerPlugin.formComponent\n ? React.createElement(providerPlugin.formComponent, {\n fieldName: fieldName,\n config: config,\n onChange: this.handleConfigChange,\n validation: validation,\n currentUser: currentUser,\n })\n :

Selected provider is not available.
\n );\n };\n\n render() {\n const { fieldName: prevFieldName } = this.props;\n const { fieldName, isKey, keyPosition, config, validation } = this.state;\n\n return (\n \n \n

\n {prevFieldName ? `Custom Field \"${fieldName}\"` : 'New Custom Field'}\n

\n\n \n\n \n \n Use Field as Event Key \n \n \n \n \n \n \n \n \n \n \n \n {validation.errors.key_position || 'Indicates if this Field should be a Key and its order.'}\n \n \n\n \n Field Data Type\n String\n \n\n \n Set Value From\n \n \n Select a Notification to use on Alerts of this kind or create a new Notification that you can\n later use in other Alerts.\n \n \n\n {displayNewNotificationForm && (\n \n )}\n
\n\n \n {doneButton}\n \n \n \n
\n );\n }\n}\n\nexport default withLocation(withTelemetry(AddNotificationForm));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport camelCase from 'lodash/camelCase';\nimport cloneDeep from 'lodash/cloneDeep';\nimport defaultTo from 'lodash/defaultTo';\nimport max from 'lodash/max';\nimport moment from 'moment';\nimport styled, { css } from 'styled-components';\n\nimport { ControlLabel, FormControl, FormGroup, InputGroup } from 'components/bootstrap';\nimport { TimeUnitInput } from 'components/common';\nimport { extractDurationAndUnit } from 'components/common/TimeUnitInput';\nimport * as FormsUtils from 'util/FormsUtils';\n\nconst TIME_UNITS = ['HOURS', 'MINUTES', 'SECONDS'];\n\nconst Container = styled.div(({ theme }) => css`\n padding-top: ${theme.spacings.lg};\n`);\n\nclass NotificationSettingsForm extends React.Component {\n constructor(props) {\n super(props);\n\n const { backlog_size: backlogSize, grace_period_ms: gracePeriodMs } = props.eventDefinition.notification_settings;\n\n const gracePeriod = extractDurationAndUnit(gracePeriodMs, TIME_UNITS);\n const defaultBacklogSize = props.defaults.default_backlog_size;\n const effectiveBacklogSize = defaultTo(backlogSize, defaultBacklogSize);\n\n this.state = {\n gracePeriodDuration: gracePeriod.duration,\n gracePeriodUnit: gracePeriod.unit,\n isBacklogSizeEnabled: (backlogSize === null ? false : (effectiveBacklogSize > 0)),\n backlogSize: effectiveBacklogSize,\n };\n }\n\n propagateChanges = (key, value) => {\n const { eventDefinition, onSettingsChange } = this.props;\n const nextNotificationSettings = cloneDeep(eventDefinition.notification_settings);\n\n nextNotificationSettings[key] = value;\n onSettingsChange('notification_settings', nextNotificationSettings);\n };\n\n handleGracePeriodChange = (nextValue, nextUnit, enabled) => {\n const durationInMs = enabled ? moment.duration(max([nextValue, 0]), nextUnit).asMilliseconds() : 0;\n\n this.propagateChanges('grace_period_ms', durationInMs);\n this.setState({ gracePeriodDuration: nextValue, gracePeriodUnit: nextUnit });\n };\n\n handleBacklogSizeChange = (event) => {\n const { name } = event.target;\n const value = event.target.value === '' ? '' : FormsUtils.getValueFromInput(event.target);\n\n this.setState({ [camelCase(name)]: value });\n this.propagateChanges(name, max([Number(value), 0]));\n };\n\n toggleBacklogSize = () => {\n const { isBacklogSizeEnabled, backlogSize } = this.state;\n\n this.setState({ isBacklogSizeEnabled: !isBacklogSizeEnabled });\n this.propagateChanges('backlog_size', (isBacklogSizeEnabled ? 0 : backlogSize));\n };\n\n render() {\n const { eventDefinition } = this.props;\n const { gracePeriodDuration, gracePeriodUnit, isBacklogSizeEnabled, backlogSize } = this.state;\n\n if (eventDefinition.notifications.length === 0) {\n return null;\n }\n\n return (\n \n \n \n

\n Graylog sends Notifications for Alerts every time they occur. Set a Grace Period to control how long\n Graylog should wait before sending Notifications again. Note that Events with keys will have a Grace\n Period for each different key value.\n

\n
\n\n \n Message Backlog\n \n \n \n \n \n \n

Number of messages to be included in Notifications.

\n
\n
\n );\n }\n}\n\nNotificationSettingsForm.propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n defaults: PropTypes.object.isRequired,\n onSettingsChange: PropTypes.func.isRequired,\n};\n\nexport default NotificationSettingsForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Button } from 'components/bootstrap';\nimport { DataTable } from 'components/common';\n\nconst getNotificationPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n\n return PluginStore.exports('eventNotificationTypes').find((n) => n.type === type) || {};\n};\n\nclass NotificationList extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n notifications: PropTypes.array.isRequired,\n onAddNotificationClick: PropTypes.func.isRequired,\n onRemoveNotificationClick: PropTypes.func.isRequired,\n };\n\n handleRemoveClick = (notificationId) => () => {\n const { onRemoveNotificationClick } = this.props;\n\n onRemoveNotificationClick(notificationId);\n };\n\n notificationFormatter = (notification) => {\n // Guard in case it is a new Notification or the Notification was deleted\n if (notification.missing) {\n return (\n \n Could not find information for Notification {notification.title}\n \n \n \n \n );\n }\n\n const plugin = getNotificationPlugin(notification.config.type);\n\n return (\n \n {notification.title}\n {plugin.displayName || notification.config.type}\n \n \n \n \n );\n };\n\n render() {\n const { eventDefinition, notifications, onAddNotificationClick } = this.props;\n\n const definitionNotifications = eventDefinition.notifications\n .map((edn) => notifications.find((n) => n.id === edn.notification_id) || {\n title: edn.notification_id,\n missing: true,\n });\n const addNotificationButton = (\n \n );\n\n if (definitionNotifications.length === 0) {\n return (\n <>\n

\n This Event is not configured to trigger any Notifications yet.\n

\n {addNotificationButton}\n \n );\n }\n\n return (\n <>\n \n {addNotificationButton}\n \n );\n }\n}\n\nexport default NotificationList;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./NotificationsForm.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./NotificationsForm.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport without from 'lodash/without';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Alert, Col, Row, Button } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport Routes from 'routing/Routes';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport withLocation from 'routing/withLocation';\n\nimport AddNotificationForm from './AddNotificationForm';\nimport NotificationSettingsForm from './NotificationSettingsForm';\nimport NotificationList from './NotificationList';\nimport styles from './NotificationsForm.css';\n\nimport commonStyles from '../common/commonStyles.css';\n\nclass NotificationsForm extends React.Component {\n constructor() {\n super();\n\n this.state = {\n showAddNotificationForm: false,\n };\n }\n\n toggleAddNotificationForm = () => {\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_NOTIFICATIONS.ADD_CLICKED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_section: 'event-definition-notifications',\n app_action_value: 'add-notification-button',\n });\n\n const { showAddNotificationForm } = this.state;\n\n this.setState({ showAddNotificationForm: !showAddNotificationForm });\n };\n\n handleAssignNotification = (nextNotification) => {\n const { onChange, eventDefinition } = this.props;\n const nextNotifications = cloneDeep(eventDefinition.notifications);\n\n nextNotifications.push({\n notification_id: nextNotification,\n });\n\n onChange('notifications', nextNotifications);\n this.toggleAddNotificationForm();\n };\n\n handleRemoveNotification = (notificationId) => {\n const { onChange, eventDefinition } = this.props;\n const notification = eventDefinition.notifications.find((n) => n.notification_id === notificationId);\n const nextNotifications = without(eventDefinition.notifications, notification);\n\n onChange('notifications', nextNotifications);\n };\n\n render() {\n const { eventDefinition, notifications, defaults, currentUser, onChange } = this.props;\n const { showAddNotificationForm } = this.state;\n\n const notificationIds = eventDefinition.notifications.map((n) => n.notification_id);\n const missingPermissions = notificationIds.filter((id) => !isPermitted(currentUser.permissions, `eventnotifications:read:${id}`));\n\n if (missingPermissions.length > 0) {\n return (\n \n \n \n Missing Notifications Permissions for:
{missingPermissions.join(', ')}\n
\n \n
\n );\n }\n\n if (showAddNotificationForm) {\n return (\n \n );\n }\n\n return (\n \n \n \n \n \n \n \n

Notifications (optional)

\n

\n Is this Event important enough that requires your attention? Make it an Alert by adding Notifications to it.\n

\n\n \n \n \n
\n );\n }\n}\n\nNotificationsForm.propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n notifications: PropTypes.array.isRequired,\n defaults: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n sendTelemetry: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n};\n\nexport default withLocation(withTelemetry(NotificationsForm));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type { SyntheticEvent } from 'react';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport defaultTo from 'lodash/defaultTo';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport styled from 'styled-components';\n\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { Col, Row } from 'components/bootstrap';\nimport { Wizard } from 'components/common';\nimport type { EventNotification } from 'stores/event-notifications/EventNotificationsStore';\nimport type { EventDefinition, EventDefinitionFormControlsProps } from 'components/event-definitions/event-definitions-types';\nimport type User from 'logic/users/User';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport EventDefinitionFormControls from 'components/event-definitions/event-definition-form/EventDefinitionFormControls';\n\nimport EventDetailsForm from './EventDetailsForm';\nimport EventConditionForm from './EventConditionForm';\nimport FieldsForm from './FieldsForm';\nimport NotificationsForm from './NotificationsForm';\nimport EventDefinitionSummary from './EventDefinitionSummary';\n\nconst WizardContainer = styled.div`\n margin-bottom: 10px;\n`;\nexport const STEP_KEYS = ['event-details', 'condition', 'fields', 'notifications', 'summary'];\nconst STEP_TELEMETRY_KEYS = [\n TELEMETRY_EVENT_TYPE.EVENTDEFINITION_DETAILS.STEP_CLICKED,\n TELEMETRY_EVENT_TYPE.EVENTDEFINITION_CONDITION.STEP_CLICKED,\n TELEMETRY_EVENT_TYPE.EVENTDEFINITION_FIELDS.STEP_CLICKED,\n TELEMETRY_EVENT_TYPE.EVENTDEFINITION_NOTIFICATIONS.STEP_CLICKED,\n TELEMETRY_EVENT_TYPE.EVENTDEFINITION_SUMMARY.STEP_CLICKED,\n];\n\nconst getConditionPlugin = (type: string | undefined) => {\n if (type === undefined) {\n return { displayName: null };\n }\n\n return PluginStore.exports('eventDefinitionTypes').find((edt) => edt.type === type) || {};\n};\n\ntype Props = {\n activeStep: string,\n action: 'edit' | 'create',\n eventDefinition: EventDefinition,\n currentUser: User,\n validation: {\n errors: {\n config?: unknown,\n title?: string,\n }\n },\n entityTypes: {},\n notifications: Array,\n defaults: { default_backlog_size: number },\n onChange: (key: string, value: unknown) => void,\n onChangeStep: (step: string) => void,\n onCancel: () => void,\n onSubmit: () => void\n canEdit: boolean,\n formControls?: React.ComponentType\n}\n\nconst EventDefinitionForm = ({\n action,\n activeStep,\n canEdit,\n currentUser,\n defaults,\n entityTypes,\n eventDefinition,\n formControls: FormControls,\n notifications,\n onCancel,\n onChange,\n onChangeStep,\n onSubmit,\n validation,\n}: Props) => {\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n const activeStepIndex = STEP_KEYS.indexOf(activeStep);\n\n const handleSubmit = (event: SyntheticEvent) => {\n if (event) {\n event.preventDefault();\n }\n\n onSubmit();\n };\n\n const defaultStepProps = {\n key: eventDefinition.id, // Recreate components if ID changed\n action,\n entityTypes,\n eventDefinition,\n onChange,\n validation,\n currentUser,\n };\n\n const canEditCondition = React.useMemo(() => (\n canEdit || eventDefinition._scope.toUpperCase() === 'ILLUMINATE'\n ), [canEdit, eventDefinition._scope]);\n\n const eventDefinitionType = getConditionPlugin(eventDefinition.config.type);\n\n const steps = [\n {\n key: STEP_KEYS[0],\n title: 'Event Details',\n component: ,\n },\n {\n key: STEP_KEYS[1],\n title: defaultTo(eventDefinitionType.displayName, 'Condition'),\n component: ,\n },\n {\n key: STEP_KEYS[2],\n title: 'Fields',\n component: ,\n },\n {\n key: STEP_KEYS[3],\n title: 'Notifications',\n component: ,\n },\n {\n key: STEP_KEYS[4],\n title: 'Summary',\n component: (\n \n ),\n },\n ];\n\n const handleStepChange = (nextStep: string) => {\n sendTelemetry(STEP_TELEMETRY_KEYS[STEP_KEYS.indexOf(nextStep)], {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: (action === 'create') ? 'new-event-definition' : 'edit-event-definition',\n app_action_value: 'event-definition-step',\n current_step: steps[STEP_KEYS.indexOf(activeStep)].title,\n });\n\n onChangeStep(nextStep);\n };\n\n const openPrevPage = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_PREVIOUS_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: (action === 'create') ? 'new-event-definition' : 'edit-event-definition',\n app_action_value: 'previous-button',\n current_step: steps[activeStepIndex].title,\n });\n\n const previousStep = activeStepIndex > 0 ? STEP_KEYS[activeStepIndex - 1] : undefined;\n onChangeStep(previousStep);\n };\n\n const openNextPage = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_NEXT_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: (action === 'create') ? 'new-event-definition' : 'edit-event-definition',\n app_action_value: 'next-button',\n current_step: steps[activeStepIndex].title,\n });\n\n const nextStep = STEP_KEYS[activeStepIndex + 1];\n onChangeStep(nextStep);\n };\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nEventDefinitionForm.propTypes = {\n action: PropTypes.oneOf(['create', 'edit']),\n eventDefinition: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n entityTypes: PropTypes.object.isRequired,\n notifications: PropTypes.array.isRequired,\n defaults: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n};\n\nEventDefinitionForm.defaultProps = {\n action: 'edit',\n formControls: EventDefinitionFormControls,\n};\n\nexport default EventDefinitionForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useCallback, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { useStore } from 'stores/connect';\nimport EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';\nimport { ConfirmLeaveDialog, Spinner } from 'components/common';\nimport { AvailableEventDefinitionTypesStore } from 'stores/event-definitions/AvailableEventDefinitionTypesStore';\nimport { ConfigurationsActions } from 'stores/configurations/ConfigurationsStore';\nimport { EventDefinitionsActions } from 'stores/event-definitions/EventDefinitionsStore';\nimport { EventNotificationsActions, EventNotificationsStore } from 'stores/event-notifications/EventNotificationsStore';\nimport type { EventDefinition, EventDefinitionFormControlsProps } from 'components/event-definitions/event-definitions-types';\nimport useCurrentUser from 'hooks/useCurrentUser';\nimport useEventDefinitionConfigFromLocalStorage from 'components/event-definitions/hooks/useEventDefinitionConfigFromLocalStorage';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport useScopePermissions from 'hooks/useScopePermissions';\n\nimport EventDefinitionForm, { STEP_KEYS } from './EventDefinitionForm';\n\nconst fetchNotifications = () => {\n EventNotificationsActions.listAll();\n};\n\ntype Props = {\n action: 'edit' | 'create',\n eventDefinition: EventDefinition,\n formControls?: React.ComponentType,\n initialStep?: string,\n onCancel?: () => void\n onChangeStep?: (step: string) => void,\n onEventDefinitionChange: (nextEventDefinition: EventDefinition) => void,\n onSubmit?: () => void,\n}\n\nconst getConditionPlugin = (edType): any => {\n if (edType === undefined) {\n return {};\n }\n\n return PluginStore.exports('eventDefinitionTypes').find((eventDefinitionType) => eventDefinitionType.type === edType) || {};\n};\n\nconst EventDefinitionFormContainer = ({\n action,\n eventDefinition: eventDefinitionInitial,\n formControls,\n initialStep,\n onCancel,\n onChangeStep,\n onEventDefinitionChange,\n onSubmit,\n}: Props) => {\n const [activeStep, setActiveStep] = useState(initialStep);\n const [eventDefinition, setEventDefinition] = useState(eventDefinitionInitial);\n const [validation, setValidation] = useState({ errors: {} });\n const [eventsClusterConfig, setEventsClusterConfig] = useState(undefined);\n const [isDirty, setIsDirty] = useState(false);\n const { configFromLocalStorage, hasLocalStorageConfig } = useEventDefinitionConfigFromLocalStorage();\n const { loadingScopePermissions, scopePermissions } = useScopePermissions(eventDefinition);\n\n const entityTypes = useStore(AvailableEventDefinitionTypesStore);\n const notifications = useStore(EventNotificationsStore);\n const currentUser = useCurrentUser();\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n const isLoading = !entityTypes || !notifications.all || !eventsClusterConfig;\n const defaults = { default_backlog_size: eventsClusterConfig?.events_notification_default_backlog };\n\n const fetchClusterConfig = useCallback(() => {\n ConfigurationsActions.listEventsClusterConfig().then((config) => setEventsClusterConfig(config));\n }, []);\n\n const handleChange = useCallback((key: string, value: unknown) => {\n setEventDefinition((prev) => ({ ...prev, [key]: value }));\n onEventDefinitionChange({ ...eventDefinition, [key]: value });\n setIsDirty(true);\n }, [eventDefinition, onEventDefinitionChange, setEventDefinition, setIsDirty]);\n\n useEffect(() => {\n fetchClusterConfig();\n fetchNotifications();\n\n if (hasLocalStorageConfig) {\n const conditionPlugin = getConditionPlugin(configFromLocalStorage.type);\n const defaultConfig = conditionPlugin?.defaultConfig || {} as EventDefinition['config'];\n\n setEventDefinition((cur) => {\n const cloned = cloneDeep(cur);\n\n return ({\n ...cloned,\n config: {\n ...defaultConfig,\n ...cloned.config,\n ...configFromLocalStorage,\n },\n });\n });\n }\n }, [configFromLocalStorage, fetchClusterConfig, hasLocalStorageConfig]);\n\n const handleSubmitSuccessResponse = () => {\n setIsDirty(false);\n\n onSubmit();\n };\n\n const showValidationErrors = (errors: { errors: unknown }) => {\n setValidation(errors);\n setActiveStep(STEP_KEYS[STEP_KEYS.length - 1]);\n };\n\n const handleSubmitFailureResponse = (errorResponse) => {\n const { body } = errorResponse.additional;\n\n if (errorResponse.status === 400) {\n if (body && body.failed) {\n showValidationErrors(body);\n\n return;\n }\n\n if (body.type && body.type === 'ApiError') {\n if (body.message.includes('org.graylog.events.conditions.Expression')\n || body.message.includes('org.graylog.events.conditions.Expr')\n || body.message.includes('org.graylog.events.processor.aggregation.AggregationSeries')) {\n showValidationErrors({\n errors: { conditions: ['Aggregation condition is not valid'] },\n });\n\n return;\n }\n\n if (body.message.includes('embryonic')) {\n showValidationErrors({\n errors: { query_parameters: ['Query parameters must be declared'] },\n });\n }\n }\n }\n };\n\n const handleSubmit = () => {\n setIsDirty(false);\n\n if (action === 'create') {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_SUMMARY.CREATE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'new-event-definition',\n app_action_value: 'create-event-definition-button',\n });\n\n EventDefinitionsActions.create(eventDefinition)\n .then(handleSubmitSuccessResponse, handleSubmitFailureResponse);\n } else {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_SUMMARY.UPDATE_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'edit-event-definition',\n app_action_value: 'update-event-definition-button',\n });\n\n EventDefinitionsActions.update(eventDefinition.id, eventDefinition)\n .then(handleSubmitSuccessResponse, handleSubmitFailureResponse);\n }\n };\n\n const handleCancel = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_SUMMARY.CANCEL_CLICKED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: (action === 'create') ? 'new-event-definition' : 'edit-event-definition',\n app_action_value: 'cancel-button',\n });\n\n onCancel();\n };\n\n const changeStep = (step: string) => {\n onChangeStep?.(step);\n setActiveStep(step);\n };\n\n if (isLoading || loadingScopePermissions) {\n return ;\n }\n\n return (\n <>\n {isDirty && (\n \n )}\n \n \n );\n};\n\nEventDefinitionFormContainer.propTypes = {\n action: PropTypes.oneOf(['create', 'edit']),\n eventDefinition: PropTypes.object,\n onEventDefinitionChange: PropTypes.func,\n};\n\nEventDefinitionFormContainer.defaultProps = {\n action: 'edit',\n eventDefinition: {\n title: '',\n description: '',\n priority: EventDefinitionPriorityEnum.NORMAL,\n config: {},\n field_spec: {},\n key_spec: [],\n notification_settings: {\n grace_period_ms: 300000,\n // Defaults to system setting for notification backlog size\n backlog_size: null,\n },\n notifications: [],\n alert: false,\n },\n formControls: undefined,\n initialStep: STEP_KEYS[0],\n onCancel: undefined,\n onSubmit: undefined,\n onChangeStep: undefined,\n onEventDefinitionChange: () => {},\n};\n\nexport default EventDefinitionFormContainer;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { FormSubmit, Select, Spinner } from 'components/common';\nimport { Alert, Button, Col, ControlLabel, FormControl, FormGroup, HelpBlock, Row, Input } from 'components/bootstrap';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport withLocation from 'routing/withLocation';\n\nconst getNotificationPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n\n return PluginStore.exports('eventNotificationTypes').find((n) => n.type === type) || {};\n};\n\nconst formattedEventNotificationTypes = () => PluginStore.exports('eventNotificationTypes')\n .map((type) => ({ label: type.displayName, value: type.type }));\n\nclass EventNotificationForm extends React.Component {\n static propTypes = {\n action: PropTypes.oneOf(['create', 'edit']),\n notification: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n testResult: PropTypes.shape({\n isLoading: PropTypes.bool,\n error: PropTypes.bool,\n message: PropTypes.string,\n }).isRequired,\n formId: PropTypes.string,\n embedded: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onTest: PropTypes.func.isRequired,\n sendTelemetry: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n action: 'edit',\n formId: undefined,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n isSubmitEnabled: true,\n };\n }\n\n setIsSubmitEnabled = (enabled) => {\n this.setState({ isSubmitEnabled: enabled });\n };\n\n handleSubmit = (event) => {\n const { notification, onSubmit, sendTelemetry, action, location } = this.props;\n\n sendTelemetry(\n action === 'create'\n ? TELEMETRY_EVENT_TYPE.NOTIFICATIONS.CREATE_CLICKED\n : TELEMETRY_EVENT_TYPE.NOTIFICATIONS.EDIT_CLICKED, {\n app_pathname: getPathnameWithoutId(location.pathname),\n app_section: 'event-notification',\n app_action_value: `${action}-button`,\n });\n\n event.preventDefault();\n\n onSubmit(notification);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n const { onChange } = this.props;\n\n onChange(name, getValueFromInput(event.target));\n };\n\n handleConfigChange = (nextConfig) => {\n const { onChange } = this.props;\n\n onChange('config', nextConfig);\n };\n\n handleTypeChange = (nextType) => {\n const { sendTelemetry, location } = this.props;\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_NOTIFICATIONS.NOTIFICATION_TYPE_SELECTED, {\n app_pathname: getPathnameWithoutId(location.pathname),\n app_section: 'event-definition-notifications',\n app_action_value: 'notification-type-select',\n notification_type: nextType,\n });\n\n const notificationPlugin = getNotificationPlugin(nextType);\n const defaultConfig = notificationPlugin.defaultConfig || {};\n\n this.handleConfigChange({ ...defaultConfig, type: nextType });\n };\n\n handleTestTrigger = () => {\n const { notification, onTest, sendTelemetry, location } = this.props;\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.NOTIFICATIONS.EXECUTE_TEST_CLICKED, {\n app_pathname: getPathnameWithoutId(location.pathname),\n app_section: 'event-notification',\n app_action_value: 'execute-test-button',\n });\n\n onTest(notification);\n };\n\n render() {\n const { action, embedded, formId, notification, onCancel, validation, testResult } = this.props;\n const { isSubmitEnabled } = this.state;\n\n const notificationPlugin = getNotificationPlugin(notification.config.type);\n const notificationFormComponent = notificationPlugin.formComponent\n ? React.createElement(notificationPlugin.formComponent, {\n config: notification.config,\n onChange: this.handleConfigChange,\n validation: validation,\n setIsSubmitEnabled: this.setIsSubmitEnabled,\n })\n : null;\n\n const testButtonText = testResult.isLoading ? : 'Execute Test Notification';\n\n return (\n \n \n
\n \n\n Description (Optional)}\n type=\"textarea\"\n help=\"Longer description for this Notification.\"\n value={notification.description}\n onChange={this.handleChange}\n rows={2} />\n\n \n Notification Type\n