web-interface.assets.0fe74163-12.8772c3b88e590016e5d1.js.map Maven / Gradle / Ivy
{"version":3,"sources":["webpack:///./src/components/event-definitions/event-definition-form/NotificationsForm.css?30e4","webpack:///./src/components/event-definitions/event-definition-form/EventConditionForm.css","webpack:///./src/components/event-definitions/event-definition-form/EventDefinitionSummary.css?5dba","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/CommonFieldValueProviderSummary.css","webpack:///./src/logic/alerts/EventDefinitionPriorityEnum.js","webpack:///./src/components/event-definitions/event-definition-form/NotificationsForm.css","webpack:///./src/components/event-definitions/event-definition-form/FieldsList.css?9925","webpack:///./src/components/event-definitions/event-definition-form/EventDetailsForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/EventConditionForm.jsx","webpack:///./src/components/event-definitions/common/EventKeyHelpPopover.jsx","webpack:///./src/components/event-definitions/event-definition-form/FieldForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/FieldsList.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/TemplateFieldValueProviderPreview.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/TemplateFieldValueProviderForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/CommonFieldValueProviderSummary.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/TemplateFieldValueProviderSummary.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/LookupTableFieldValueProviderForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/LookupTableFieldValueProviderFormContainer.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/LookupTableFieldValueProviderSummary.jsx","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/index.js","webpack:///./src/components/event-definitions/event-definition-form/FieldsForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/AddNotificationForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/NotificationSettingsForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/NotificationList.jsx","webpack:///./src/components/event-definitions/event-definition-form/NotificationsForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/EventDefinitionValidationSummary.jsx","webpack:///./src/components/event-definitions/event-definition-form/EventDefinitionSummary.jsx","webpack:///./src/components/event-definitions/event-definition-form/EventDefinitionForm.jsx","webpack:///./src/components/event-definitions/event-definition-form/EventDefinitionFormContainer.jsx","webpack:///./src/components/event-notifications/event-notification-form/EventNotificationForm.jsx","webpack:///./src/components/event-notifications/event-notification-form/EventNotificationFormContainer.jsx","webpack:///./src/components/event-definitions/event-definition-form/EventConditionForm.css?1a6d","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/CommonFieldValueProviderSummary.css?10e1","webpack:///./src/components/event-definitions/event-definition-form/EventDefinitionSummary.css","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/TemplateFieldValueProviderPreview.css?b8e8","webpack:///./src/components/event-definitions/event-definition-form/field-value-providers/TemplateFieldValueProviderPreview.css","webpack:///./src/components/event-definitions/event-definition-form/FieldsList.css"],"names":["content","module","i","options","transform","undefined","locals","exports","push","EventDefinitionPriorityEnum","LOW","NORMAL","HIGH","properties","1","name","2","3","priorityOptions","lodash","map","value","key","label","upperFirst","EventDetailsForm","event","target","onChange","props","FormsUtils","getValueFromInput","nextPriority","toNumber","this","eventDefinition","validation","md","lg","className","commonStyles","title","id","type","bsStyle","errors","help","get","handleChange","required","description","rows","controlId","toString","priority","handlePriorityChange","clearable","React","Component","PropTypes","object","isRequired","func","EventConditionForm","PluginStore","find","edt","sort","edt1","edt2","edt1Order","sortOrder","edt2Order","defaultTo","Number","MAX_SAFE_INTEGER","naturalSort","displayName","sortedEventDefinitionTypes","nextType","getConditionPlugin","defaultConfig","typeDescriptions","Fragment","eventDefinitionType","config","eventDefinitionTypeComponent","formComponent","createElement","validationState","placeholder","formattedEventDefinitionTypes","handleEventDefinitionTypeChange","lgOffset","HelpPanel","styles","conditionTypesInfo","renderConditionTypeDescriptions","hr","currentUser","EventKeyHelpPopover","otherProps","string","requiredFields","FieldForm","defaultValue","state","isKey","keyPosition","providerType","getConfigProviderType","pluginRequiredFields","getProviderPlugin","forEach","requiredField","isNumber","key_position","errorNumber","Object","keys","length","setState","validate","prevFieldName","fieldName","nextFieldName","nextConfig","nextProvider","providers","handleConfigChange","nextPosition","checked","providerPlugin","keyIndex","indexOf","data_type","onCancel","handleFieldNameChange","placement","trigger","overlay","bsSize","Addon","toggleKey","handleKeySortChange","disabled","Static","ignoreAccents","handleProviderTypeChange","formatFieldValueProviders","matchProp","renderFieldValueProviderForm","onClick","handleSubmit","array","HEADERS","FieldsList","p","onAddFieldClick","onEditFieldClick","onRemoveFieldClick","configKeys","filter","providerOptions","JSON","stringify","fields","fieldProviderPlugin","getFieldValueProviderPlugin","providerFormatter","actions","handleRemoveClick","handleEditClick","fieldNames","addCustomFieldButton","handleAddFieldClick","headers","dataRowFormatter","fieldFormatter","filterKeys","TemplateFieldValueProviderPreview","templatePreview","header","TemplateFieldValueProviderForm","nextProviders","cloneDeep","provider","helpText","href","template","require_values","CommonFieldValueProviderSummary","displayDetails","children","field","toggleDisplayDetails","condensed","hover","fixedTable","includes","element","TemplateFieldValueProviderSummary","LookupTableFieldValueProviderForm","memoize","fieldTypes","ftA","ftB","naturalSortIgnoreCase","fieldType","ft","join","propagateChanges","nextLookupTable","lookupTables","lt1","lt2","table","allFieldTypes","table_name","handleSelectChange","formatLookupTables","key_field","formatMessageFields","allowCreate","CombinedProvider","LookupTablesStore","LookupTablesActions","LOOKUP_PERMISSIONS","LookupTableFieldValueProviderFormContainer","PermissionsMixin","isPermitted","permissions","searchPaginated","all","tables","toJS","text","connect","FieldTypesStore","LookupTableFieldValueProviderSummary","register","PluginManifest","fieldValueProviders","summaryComponent","FieldsForm","editField","showFieldForm","nextFieldSpec","omit","field_spec","key_spec","nextKeySpec","slice","toggleFieldForm","addCustomField","fieldErrors","keyErrors","validationSummary","error","removeCustomField","AddNotificationForm","selectedNotification","displayNewNotificationForm","promise","then","notification","nextNotificationId","notifications","hasCreationPermissions","formattedNotifications","n","unshift","doneButton","form","handleSelectNotificationChange","formatNotifications","EventNotificationFormContainer","action","formId","onSubmit","handleNewNotificationSubmit","embedded","bool","TIME_UNITS","NotificationSettingsForm","onSettingsChange","nextNotificationSettings","notification_settings","nextValue","nextUnit","enabled","durationInMs","moment","duration","max","asMilliseconds","gracePeriodDuration","gracePeriodUnit","camelCase","isBacklogSizeEnabled","backlogSize","backlog_size","gracePeriodMs","grace_period_ms","gracePeriod","extractDurationAndUnit","defaultBacklogSize","defaults","default_backlog_size","effectiveBacklogSize","unit","update","handleGracePeriodChange","defaultEnabled","units","toggleBacklogSize","handleBacklogSizeChange","NotificationList","notificationId","onRemoveNotificationClick","missing","colSpan","plugin","getNotificationPlugin","onAddNotificationClick","definitionNotifications","edn","notification_id","addNotificationButton","sortByKey","notificationFormatter","NotificationsForm","showAddNotificationForm","nextNotification","nextNotifications","toggleAddNotificationForm","without","handleAssignNotification","manageNotifications","to","Routes","ALERTS","NOTIFICATIONS","LIST","handleRemoveNotification","mdOffset","notificationSettings","EventDefinitionValidationSummary","fieldsWithErrors","effectiveError","replace","EventDefinitionSummary","showValidation","conditionPlugin","getPlugin","component","renderField","renderFieldList","definitionNotification","notificationPlugin","formattedDuration","format","trim","formattedGracePeriod","formattedBacklogSize","effectiveDefinitionNotifications","renderNotificationSettings","renderNotification","eventSummary","renderDetails","renderCondition","renderFields","renderNotifications","StyledNav","styled","Nav","theme","color","gray","global","link","STEP_KEYS","EventDefinitionForm","nextStep","activeStep","preventDefault","last","activeStepIndex","previousStep","handleStepChange","entityTypes","defaultStepProps","steps","onStepChange","horizontal","justified","NavigationComponent","containerClassName","hidePreviousNextButtons","renderButtons","oneOf","EventDefinitionsActions","AvailableEventDefinitionTypesStore","EventNotificationsStore","EventNotificationsActions","ConfigurationActions","CurrentUserStore","EventDefinitionFormContainer","listAll","listEventsClusterConfig","eventsClusterConfig","nextEventDefinition","onEventDefinitionChange","isDirty","history","DEFINITIONS","errorResponse","body","additional","status","failed","message","conditions","query_parameters","create","handleSubmitSuccessResponse","handleSubmitFailureResponse","fetchClusterConfig","fetchNotifications","route","events_notification_default_backlog","question","handleCancel","alert","withRouter","EventNotificationForm","onTest","testResult","notificationFormComponent","testButtonText","isLoading","formattedEventNotificationTypes","handleTypeChange","handleTestTrigger","shape","initialValidation","initialTestResult","clone","testPromise","test","response","responseMessage","cancel","handleTest"],"mappings":"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","file":"0fe74163-12.8772c3b88e590016e5d1.js","sourcesContent":["\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./NotificationsForm.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./NotificationsForm.css\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./NotificationsForm.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._15zbknhQAHE3nbc0_uOMdR{margin-top:35px}.tzjb2EiMRtJsLafJVo60w{margin-left:15px;margin-right:15px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"conditionTypesInfo\": \"_15zbknhQAHE3nbc0_uOMdR\",\n\t\"hr\": \"tzjb2EiMRtJsLafJVo60w\"\n};","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./EventDefinitionSummary.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./EventDefinitionSummary.css\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./EventDefinitionSummary.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._1sutHEzFTcXWlc6XqMdYjs{margin-bottom:20px}._3lb9AZDjRck6-Tr4VJxaEJ{table-layout:fixed}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"field\": \"_1sutHEzFTcXWlc6XqMdYjs\",\n\t\"fixedTable\": \"_3lb9AZDjRck6-Tr4VJxaEJ\"\n};","const EventDefinitionPriorityEnum = {\n LOW: 1,\n NORMAL: 2,\n HIGH: 3,\n properties: {\n 1: { name: 'low' },\n 2: { name: 'normal' },\n 3: { name: 'high' },\n },\n};\n\nexport default EventDefinitionPriorityEnum;\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._1zPBgIECxuTPtWfIKEy_pW{float:right;margin-top:10px}._1evWyT2yAMsZGXzvKyo46l{margin-top:35px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"manageNotifications\": \"_1zPBgIECxuTPtWfIKEy_pW\",\n\t\"notificationSettings\": \"_1evWyT2yAMsZGXzvKyo46l\"\n};","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./FieldsList.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./FieldsList.css\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./FieldsList.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/graylog';\n\nimport { Select } from 'components/common';\nimport { Input } from 'components/bootstrap';\n\nimport EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';\nimport FormsUtils from 'util/FormsUtils';\n\nimport commonStyles from '../common/commonStyles.css';\n\nconst priorityOptions = lodash.map(EventDefinitionPriorityEnum.properties, (value, key) => ({ value: key, label: lodash.upperFirst(value.name) }));\n\nclass EventDetailsForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n const { onChange } = this.props;\n onChange(name, FormsUtils.getValueFromInput(event.target));\n };\n\n handlePriorityChange = (nextPriority) => {\n const { onChange } = this.props;\n onChange('priority', lodash.toNumber(nextPriority));\n };\n\n render() {\n const { eventDefinition, validation } = this.props;\n\n return (\n \n \n Event Details
\n \n \n
\n );\n }\n}\n\nexport default EventDetailsForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Clearfix, Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/graylog';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport lodash from 'lodash';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Select } from 'components/common';\nimport HelpPanel from 'components/event-definitions/common/HelpPanel';\n\nimport commonStyles from '../common/commonStyles.css';\nimport styles from './EventConditionForm.css';\n\nclass EventConditionForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n currentUser: PropTypes.object.isRequired, // Prop is passed down to pluggable entities\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n getConditionPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports('eventDefinitionTypes').find((edt) => edt.type === type) || {};\n };\n\n sortedEventDefinitionTypes = () => {\n return PluginStore.exports('eventDefinitionTypes').sort((edt1, edt2) => {\n // Try to sort by given sort order and displayName if possible, otherwise do it by displayName\n const edt1Order = edt1.sortOrder;\n const edt2Order = edt2.sortOrder;\n\n if (edt1Order !== undefined || edt2Order !== undefined) {\n const sort = lodash.defaultTo(edt1Order, Number.MAX_SAFE_INTEGER) - lodash.defaultTo(edt2Order, Number.MAX_SAFE_INTEGER);\n if (sort !== 0) {\n return sort;\n }\n }\n\n return naturalSort(edt1.displayName, edt2.displayName);\n });\n };\n\n formattedEventDefinitionTypes = () => {\n return this.sortedEventDefinitionTypes()\n .map((type) => ({ label: type.displayName, value: type.type }));\n };\n\n handleEventDefinitionTypeChange = (nextType) => {\n const { onChange } = this.props;\n const conditionPlugin = this.getConditionPlugin(nextType);\n const defaultConfig = conditionPlugin.defaultConfig || {};\n onChange('config', { ...defaultConfig, type: nextType });\n };\n\n renderConditionTypeDescriptions = () => {\n const typeDescriptions = this.sortedEventDefinitionTypes()\n .map((type) => {\n return (\n \n {type.displayName} \n {type.description || 'No description available.'} \n \n );\n });\n\n return {typeDescriptions}
;\n };\n\n render() {\n const { eventDefinition, validation } = this.props;\n const eventDefinitionType = this.getConditionPlugin(eventDefinition.config.type);\n\n const eventDefinitionTypeComponent = eventDefinitionType.formComponent\n ? React.createElement(eventDefinitionType.formComponent, {\n ...this.props,\n key: eventDefinition.id,\n })\n : null;\n\n return (\n \n \n Event Condition
\n\n \n Configure how Graylog should create Events of this kind. You can later use those Events as input on other\n Conditions, making it possible to build powerful Conditions based on others.\n
\n\n \n Condition Type \n \n \n {lodash.get(validation, 'errors.config[0]', 'Choose the type of Condition for this Event.')}\n \n \n \n\n \n \n {this.renderConditionTypeDescriptions()}\n \n \n \n\n {eventDefinitionTypeComponent && (\n <>\n
\n \n {eventDefinitionTypeComponent}\n \n >\n )}\n
\n );\n }\n}\n\nexport default EventConditionForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Popover } from 'components/graylog';\n\nclass EventKeyHelpPopover extends React.Component {\n static propTypes = {\n id: PropTypes.string.isRequired,\n };\n\n render() {\n const { id, ...otherProps } = this.props;\n return (\n \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 \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 );\n }\n}\n\nexport default EventKeyHelpPopover;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport lodash from 'lodash';\n\nimport {\n Button,\n ButtonToolbar,\n Col,\n ControlLabel,\n FormControl,\n FormGroup,\n HelpBlock,\n InputGroup,\n OverlayTrigger,\n Row,\n} from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport { Icon, Select } from 'components/common';\nimport EventKeyHelpPopover from 'components/event-definitions/common/EventKeyHelpPopover';\n\nimport FormsUtils from 'util/FormsUtils';\n\nimport commonStyles from '../common/commonStyles.css';\n\nconst requiredFields = [\n 'fieldName',\n 'config.providers[0].type',\n];\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 };\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 getProviderPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports('fieldValueProviders').find((edt) => edt.type === type) || {};\n };\n\n getConfigProviderType = (config, defaultValue) => {\n return lodash.get(config, 'providers[0].type', defaultValue);\n };\n\n validate = () => {\n const { isKey, keyPosition, config } = this.state;\n const errors = {};\n\n const providerType = this.getConfigProviderType(config);\n let pluginRequiredFields = [];\n if (providerType) {\n const providerPlugin = this.getProviderPlugin(providerType);\n pluginRequiredFields = providerPlugin.requiredFields;\n }\n\n requiredFields.forEach((requiredField) => {\n if (!lodash.get(this.state, requiredField)) {\n errors[requiredField] = 'Field cannot be empty.';\n }\n });\n\n if (isKey && (!lodash.isNumber(keyPosition) || Number(keyPosition) < 1)) {\n errors.key_position = 'Field must be a positive number.';\n }\n\n pluginRequiredFields.forEach((requiredField) => {\n if (!lodash.get(config, `providers[0].${requiredField}`)) {\n errors[requiredField] = 'Field cannot be empty.';\n }\n });\n\n const errorNumber = Object.keys(errors).length;\n if (errorNumber > 0) {\n this.setState({ validation: { errors: errors } });\n }\n\n return errorNumber === 0;\n };\n\n handleSubmit = () => {\n if (this.validate()) {\n const { fieldName: prevFieldName, onChange } = this.props;\n const { fieldName, config, isKey, keyPosition } = this.state;\n onChange(prevFieldName, fieldName, config, isKey, keyPosition - 1);\n }\n };\n\n handleFieldNameChange = (event) => {\n const nextFieldName = FormsUtils.getValueFromInput(event.target);\n this.setState({ fieldName: nextFieldName });\n };\n\n handleConfigChange = (nextConfig) => {\n this.setState({ config: nextConfig });\n };\n\n handleProviderTypeChange = (nextProvider) => {\n const { config } = this.state;\n const providerPlugin = this.getProviderPlugin(nextProvider);\n const defaultProviderConfig = providerPlugin.defaultConfig || {};\n const nextConfig = {\n ...config,\n providers: [{\n ...defaultProviderConfig,\n type: nextProvider,\n }],\n };\n this.handleConfigChange(nextConfig);\n };\n\n handleKeySortChange = (event) => {\n const nextPosition = event.target.value === '' ? '' : FormsUtils.getValueFromInput(event.target);\n this.setState({ keyPosition: nextPosition });\n };\n\n toggleKey = (event) => {\n const checked = FormsUtils.getValueFromInput(event.target);\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 = this.getConfigProviderType(config);\n if (!providerType) {\n return null;\n }\n\n const providerPlugin = this.getProviderPlugin(providerType);\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 formatFieldValueProviders = () => {\n return PluginStore.exports('fieldValueProviders')\n .map((type) => ({ label: type.displayName, value: type.type }));\n };\n\n render() {\n const { fieldName: prevFieldName, onCancel } = 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 {validation.errors['config.providers[0].type'] || 'Select a source for the value of this Field.'}\n \n \n \n\n \n {this.renderFieldValueProviderForm()}\n \n\n \n \n \n \n \n \n
\n );\n }\n}\n\nexport default FieldForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport naturalSort from 'javascript-natural-sort';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { ButtonToolbar, Button } from 'components/graylog';\nimport { DataTable } from 'components/common';\n\nimport styles from './FieldsList.css';\n\nconst HEADERS = ['Field Name', 'Is Key?', 'Value Source', 'Data Type', 'Configuration', 'Actions'];\n\nclass FieldsList extends React.Component {\n static propTypes = {\n fields: PropTypes.object.isRequired,\n keys: PropTypes.array.isRequired,\n onAddFieldClick: PropTypes.func.isRequired,\n onEditFieldClick: PropTypes.func.isRequired,\n onRemoveFieldClick: PropTypes.func.isRequired,\n };\n\n getFieldValueProviderPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports('fieldValueProviders').find((p) => p.type === type) || {};\n };\n\n handleAddFieldClick = () => {\n const { onAddFieldClick } = this.props;\n onAddFieldClick();\n };\n\n handleEditClick = (fieldName) => {\n return () => {\n const { onEditFieldClick } = this.props;\n onEditFieldClick(fieldName);\n };\n };\n\n handleRemoveClick = (fieldName) => {\n return () => {\n const { onRemoveFieldClick } = this.props;\n onRemoveFieldClick(fieldName);\n };\n };\n\n providerFormatter = (config) => {\n const configKeys = Object.keys(config).filter((key) => key !== 'type');\n return (\n \n {configKeys.map((key) => {\n return (\n {key}: {JSON.stringify(config[key])}\n );\n })}\n
\n );\n };\n\n fieldFormatter = (fieldName) => {\n const { fields, keys } = this.props;\n const config = fields[fieldName];\n\n const keyIndex = keys.indexOf(fieldName);\n const fieldProviderPlugin = this.getFieldValueProviderPlugin(config.providers[0].type);\n\n return (\n \n {fieldName} \n {keyIndex < 0 ? 'No' : 'Yes'} \n {fieldProviderPlugin.displayName || config.providers[0].type} \n {config.data_type} \n {this.providerFormatter(config.providers[0])} \n \n \n \n \n \n \n \n );\n };\n\n render() {\n const { fields } = this.props;\n\n const fieldNames = Object.keys(fields).sort(naturalSort);\n const addCustomFieldButton = (\n \n );\n\n if (fieldNames.length === 0) {\n return (\n <>\n \n This Event does not have any custom Fields yet.\n
\n {addCustomFieldButton}\n >\n );\n }\n return (\n <>\n \n {addCustomFieldButton}\n >\n );\n }\n}\n\nexport default FieldsList;\n","import React from 'react';\nimport { Panel } from 'components/graylog';\n\nimport styles from './TemplateFieldValueProviderPreview.css';\n\nclass TemplateFieldValueProviderPreview extends React.Component {\n static propTypes = {};\n\n render() {\n return (\n Available Fields in Template}>\n \n Graylog lets you enrich generated Events with dynamic values. You can access Fields from the Event context{' '}\n {/* eslint-disable-next-line no-template-curly-in-string */}\n with {'${source.}'}
.\n
\n Available Fields in the Template depend on the condition that created the Event:\n
\n \n - Filter: All Fields in the original log message
\n - Aggregation: Fields set in Group By with their original names
\n - Correlation: All Fields in the last matched and non-negated Event
\n
\n \n );\n }\n}\n\nexport default TemplateFieldValueProviderPreview;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Checkbox, Col, FormGroup, HelpBlock, Row } from 'components/graylog';\nimport lodash from 'lodash';\n\nimport { Input } from 'components/bootstrap';\nimport { ExternalLink } from 'components/common';\nimport FormsUtils from 'util/FormsUtils';\n\nimport TemplateFieldValueProviderPreview from './TemplateFieldValueProviderPreview';\n\nclass TemplateFieldValueProviderForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n static type = 'template-v1';\n\n static defaultConfig = {\n template: '',\n };\n\n static requiredFields = [\n 'template',\n ];\n\n handleChange = (event) => {\n const { config, onChange } = this.props;\n const { name } = event.target;\n const value = FormsUtils.getValueFromInput(event.target);\n const nextProviders = lodash.cloneDeep(config.providers);\n const templateProvider = nextProviders.find((provider) => provider.type === TemplateFieldValueProviderForm.type);\n templateProvider[name] = value;\n onChange({ ...config, providers: nextProviders });\n };\n\n render() {\n const { config, validation } = this.props;\n const provider = config.providers.find((p) => p.type === TemplateFieldValueProviderForm.type);\n\n const helpText = (\n \n Type a literal text to set to this Field or use{' '}\n \n JMTE syntax\n \n {' '}to add a dynamic Value.\n \n );\n\n return (\n \n \n \n\n \n \n Require all template values to be set\n \n Check this option to validate that all variables used in the Template have values. \n \n \n \n \n \n
\n );\n }\n}\n\nexport default TemplateFieldValueProviderForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Table, Button } from 'components/graylog';\nimport { Icon } from 'components/common';\nimport styles from './CommonFieldValueProviderSummary.css';\n\nclass CommonFieldValueProviderSummary extends React.Component {\n static propTypes = {\n fieldName: PropTypes.string.isRequired,\n config: PropTypes.object.isRequired,\n keys: PropTypes.array.isRequired,\n children: PropTypes.element.isRequired,\n };\n\n state = {\n displayDetails: false,\n };\n\n toggleDisplayDetails = () => {\n const { displayDetails } = this.state;\n this.setState({ displayDetails: !displayDetails });\n };\n\n render() {\n const { fieldName, config, keys, children } = this.props;\n const { displayDetails } = this.state;\n\n return (\n \n - {fieldName}
\n - \n \n {displayDetails && (\n
\n \n \n Is Key? \n {keys.includes(fieldName) ? 'Yes' : 'No'} \n \n \n Data Type \n {config.data_type} \n \n {children}\n \n
\n )}\n \n
\n );\n }\n}\n\nexport default CommonFieldValueProviderSummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CommonFieldValueProviderSummary from './CommonFieldValueProviderSummary';\n\nclass TemplateFieldValueProviderSummary extends React.Component {\n static propTypes = {\n fieldName: PropTypes.string.isRequired,\n config: PropTypes.object.isRequired,\n keys: PropTypes.array.isRequired,\n };\n\n render() {\n const { config } = this.props;\n\n return (\n \n <>\n \n Value source \n Template \n \n \n Template \n {config.providers[0].template} \n \n \n Validate that all Template values are set \n {config.providers[0].require_values ? 'Yes' : 'No'} \n \n >\n \n );\n }\n}\n\nexport default TemplateFieldValueProviderSummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/graylog';\nimport lodash from 'lodash';\n\nimport { Select } from 'components/common';\nimport FormsUtils from 'util/FormsUtils';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\n\nclass LookupTableFieldValueProviderForm extends React.Component {\n static propTypes = {\n allFieldTypes: PropTypes.array.isRequired,\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n lookupTables: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n static type = 'lookup-v1';\n\n static defaultConfig = {\n table_name: '',\n key_field: '',\n };\n\n static requiredFields = [\n 'table_name',\n 'key_field',\n ];\n\n formatMessageFields = lodash.memoize(\n (fieldTypes) => {\n return fieldTypes\n .sort((ftA, ftB) => naturalSortIgnoreCase(ftA.name, ftB.name))\n .map((fieldType) => {\n return {\n label: `${fieldType.name} – ${fieldType.value.type.type}`,\n value: fieldType.name,\n };\n });\n },\n (fieldTypes) => fieldTypes.map((ft) => ft.name).join('-'),\n );\n\n propagateChanges = (key, value) => {\n const { config, onChange } = this.props;\n const nextProviders = lodash.cloneDeep(config.providers);\n const lookupProvider = nextProviders.find((provider) => provider.type === LookupTableFieldValueProviderForm.type);\n lookupProvider[key] = value;\n onChange({ ...config, providers: nextProviders });\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n const value = FormsUtils.getValueFromInput(event.target);\n this.propagateChanges(name, value);\n };\n\n handleSelectChange = (key) => {\n return (nextLookupTable) => {\n this.propagateChanges(key, nextLookupTable);\n };\n };\n\n formatLookupTables = (lookupTables) => {\n return lookupTables\n .sort((lt1, lt2) => naturalSortIgnoreCase(lt1.title, lt2.title))\n .map((table) => ({ label: table.title, value: table.name }));\n };\n\n render() {\n const { allFieldTypes, config, lookupTables, validation } = this.props;\n const provider = config.providers.find((p) => p.type === LookupTableFieldValueProviderForm.type);\n\n return (\n \n \n \n Select Lookup Table \n \n \n {validation.errors.table_name || 'Select the Lookup Table Graylog should use to get the value.'}\n \n \n\n \n Lookup Table Key Field \n \n \n {validation.errors.key_field || 'Message Field name whose value will be used as Lookup Table Key.'}\n \n \n \n
\n );\n }\n}\n\nexport default LookupTableFieldValueProviderForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col, Row } from 'components/graylog';\n\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { FieldTypesStore } from 'views/stores/FieldTypesStore';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport LookupTableFieldValueProviderForm from './LookupTableFieldValueProviderForm';\n\nconst { LookupTablesStore, LookupTablesActions } = CombinedProvider.get('LookupTables');\n\nconst LOOKUP_PERMISSIONS = [\n 'lookuptables:read',\n];\n\nclass LookupTableFieldValueProviderFormContainer extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n fieldTypes: PropTypes.object.isRequired,\n lookupTables: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n const { currentUser } = this.props;\n if (!PermissionsMixin.isPermitted(currentUser.permissions, LOOKUP_PERMISSIONS)) {\n return;\n }\n\n LookupTablesActions.searchPaginated(1, 0, undefined, false);\n }\n\n render() {\n const { lookupTables, fieldTypes, currentUser, ...otherProps } = this.props;\n\n if (!PermissionsMixin.isPermitted(currentUser.permissions, LOOKUP_PERMISSIONS)) {\n return (\n \n \n No Lookup Tables found.
\n \n
\n );\n }\n\n const isLoading = typeof fieldTypes.all !== 'object' || !lookupTables.tables;\n if (isLoading) {\n return ;\n }\n\n return (\n \n );\n }\n}\n\nexport default connect(LookupTableFieldValueProviderFormContainer, {\n fieldTypes: FieldTypesStore,\n lookupTables: LookupTablesStore,\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { IfPermitted } from 'components/common';\n\nimport CommonFieldValueProviderSummary from './CommonFieldValueProviderSummary';\n\nclass LookupTableFieldValueProviderSummary extends React.Component {\n static propTypes = {\n fieldName: PropTypes.string.isRequired,\n config: PropTypes.object.isRequired,\n keys: PropTypes.array.isRequired,\n };\n\n render() {\n const { config } = this.props;\n const provider = config.providers[0];\n\n return (\n \n \n <>\n \n Value source \n Lookup Table \n \n \n Lookup Table \n {provider.table_name} \n \n \n Lookup Table Key Field \n {provider.key_field} \n \n >\n \n \n );\n }\n}\n\nexport default LookupTableFieldValueProviderSummary;\n","import { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport TemplateFieldValueProviderForm from './TemplateFieldValueProviderForm';\nimport TemplateFieldValueProviderSummary from './TemplateFieldValueProviderSummary';\nimport LookupTableFieldValueProviderForm from './LookupTableFieldValueProviderForm';\nimport LookupTableFieldValueProviderFormContainer from './LookupTableFieldValueProviderFormContainer';\nimport LookupTableFieldValueProviderSummary from './LookupTableFieldValueProviderSummary';\n\nPluginStore.register(new PluginManifest({}, {\n fieldValueProviders: [\n {\n type: TemplateFieldValueProviderForm.type,\n displayName: 'Template',\n formComponent: TemplateFieldValueProviderForm,\n summaryComponent: TemplateFieldValueProviderSummary,\n defaultConfig: TemplateFieldValueProviderForm.defaultConfig,\n requiredFields: TemplateFieldValueProviderForm.requiredFields,\n },\n {\n type: LookupTableFieldValueProviderForm.type,\n displayName: 'Lookup Table',\n formComponent: LookupTableFieldValueProviderFormContainer,\n summaryComponent: LookupTableFieldValueProviderSummary,\n defaultConfig: LookupTableFieldValueProviderForm.defaultConfig,\n requiredFields: LookupTableFieldValueProviderForm.requiredFields,\n },\n ],\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Alert, Col, OverlayTrigger, Row, Button } from 'components/graylog';\nimport { Icon } from 'components/common';\nimport EventKeyHelpPopover from 'components/event-definitions/common/EventKeyHelpPopover';\n\nimport FieldForm from './FieldForm';\nimport FieldsList from './FieldsList';\n\n// Import built-in Field Value Providers\nimport {} from './field-value-providers';\n\nimport commonStyles from '../common/commonStyles.css';\n\nclass FieldsForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n state = {\n editField: undefined,\n showFieldForm: false,\n };\n\n removeCustomField = (fieldName) => {\n const { eventDefinition, onChange } = this.props;\n const nextFieldSpec = lodash.omit(eventDefinition.field_spec, fieldName);\n onChange('field_spec', nextFieldSpec);\n\n // Filter out all non-existing field names from key_spec\n const fieldNames = Object.keys(nextFieldSpec);\n const nextKeySpec = eventDefinition.key_spec.filter((key) => fieldNames.includes(key));\n onChange('key_spec', nextKeySpec);\n };\n\n addCustomField = (prevFieldName, fieldName, config, isKey, keyPosition) => {\n const { eventDefinition, onChange } = this.props;\n const nextFieldSpec = (prevFieldName === fieldName\n ? lodash.cloneDeep(eventDefinition.field_spec)\n : lodash.omit(eventDefinition.field_spec, prevFieldName));\n nextFieldSpec[fieldName] = config;\n onChange('field_spec', nextFieldSpec);\n\n // Filter out all non-existing field names from key_spec and the current field name\n const fieldNames = Object.keys(nextFieldSpec);\n let nextKeySpec = eventDefinition.key_spec.filter((key) => fieldNames.includes(key) && key !== fieldName);\n if (isKey) {\n // Add key to its new position\n nextKeySpec = [...nextKeySpec.slice(0, keyPosition), fieldName, ...nextKeySpec.slice(keyPosition)];\n }\n onChange('key_spec', nextKeySpec);\n\n this.toggleFieldForm();\n };\n\n toggleFieldForm = (fieldName) => {\n const { showFieldForm } = this.state;\n this.setState({ showFieldForm: !showFieldForm, editField: showFieldForm ? undefined : fieldName });\n };\n\n render() {\n const { eventDefinition, validation, currentUser } = this.props;\n const { editField, showFieldForm } = this.state;\n\n if (showFieldForm) {\n return (\n \n );\n }\n\n const fieldErrors = lodash.get(validation, 'errors.field_spec', []);\n const keyErrors = lodash.get(validation, 'errors.key_spec', []);\n const errors = [...fieldErrors, ...keyErrors];\n\n return (\n \n \n Event Fields (optional)
\n \n Include additional information in Events generated from this Event Definition by adding custom Fields. That\n can help you search Events or having more context when receiving Notifications.\n
\n\n {errors.length > 0 && (\n \n Fields with errors
\n Please correct the following errors before saving this Event Definition:
\n \n {errors.map((error) => {\n return - {error}
;\n })}\n
\n \n )}\n\n {Object.keys(eventDefinition.field_spec).length > 0 && (\n \n - \n Keys\n
}>\n \n \n \n - {eventDefinition.key_spec.length > 0 ? eventDefinition.key_spec.join(', ') : 'No Keys configured yet.'}
\n
\n )}\n \n \n
\n );\n }\n}\n\nexport default FieldsForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Select } from 'components/common';\nimport { Button, ButtonToolbar, Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/graylog';\nimport EventNotificationFormContainer\n from 'components/event-notifications/event-notification-form/EventNotificationFormContainer';\n\nimport commonStyles from '../common/commonStyles.css';\n\nclass AddNotificationForm extends React.Component {\n static propTypes = {\n notifications: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n hasCreationPermissions: PropTypes.bool,\n };\n\n static defaultProps = {\n hasCreationPermissions: false,\n };\n\n state = {\n selectedNotification: undefined,\n displayNewNotificationForm: false,\n };\n\n handleNewNotificationSubmit = (promise) => {\n const { onChange } = this.props;\n promise.then((notification) => onChange(notification.id));\n };\n\n handleSubmit = () => {\n const { onChange } = this.props;\n const { selectedNotification } = this.state;\n onChange(selectedNotification);\n };\n\n handleSelectNotificationChange = (nextNotificationId) => {\n if (nextNotificationId === 'create') {\n this.setState({ displayNewNotificationForm: true });\n return;\n }\n\n this.setState({ selectedNotification: nextNotificationId, displayNewNotificationForm: false });\n };\n\n formatNotifications = (notifications) => {\n const { hasCreationPermissions } = this.props;\n const formattedNotifications = notifications.map((n) => ({ label: n.title, value: n.id }));\n if (hasCreationPermissions) {\n formattedNotifications.unshift({\n label: 'Create New Notification...',\n value: 'create',\n });\n }\n return formattedNotifications;\n };\n\n render() {\n const { notifications, onCancel } = this.props;\n const { displayNewNotificationForm, selectedNotification } = this.state;\n const doneButton = displayNewNotificationForm\n ? \n : ;\n\n return (\n \n \n Add Notification
\n\n \n\n \n {doneButton}\n \n \n \n
\n );\n }\n}\n\nexport default AddNotificationForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ControlLabel, FormControl, FormGroup, HelpBlock, InputGroup } from 'components/graylog';\nimport lodash from 'lodash';\nimport moment from 'moment';\n\nimport { TimeUnitInput } from 'components/common';\nimport { extractDurationAndUnit } from 'components/common/TimeUnitInput';\nimport FormsUtils from 'util/FormsUtils';\n\nimport commonStyles from '../common/commonStyles.css';\n\nconst TIME_UNITS = ['HOURS', 'MINUTES', 'SECONDS'];\n\nclass NotificationSettingsForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n defaults: PropTypes.object.isRequired,\n onSettingsChange: PropTypes.func.isRequired,\n };\n\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 = lodash.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 = lodash.cloneDeep(eventDefinition.notification_settings);\n nextNotificationSettings[key] = value;\n onSettingsChange('notification_settings', nextNotificationSettings);\n };\n\n handleGracePeriodChange = (nextValue, nextUnit, enabled) => {\n const durationInMs = enabled ? moment.duration(lodash.max([nextValue, 0]), nextUnit).asMilliseconds() : 0;\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 this.setState({ [lodash.camelCase(name)]: value });\n this.propagateChanges(name, lodash.max([Number(value), 0]));\n };\n\n toggleBacklogSize = () => {\n const { isBacklogSizeEnabled, backlogSize } = this.state;\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 Notification Settings
\n \n >\n );\n }\n}\n\nexport default NotificationSettingsForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button } from 'components/graylog';\nimport { DataTable } from 'components/common';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\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 getNotificationPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports('eventNotificationTypes').find((n) => n.type === type) || {};\n };\n\n handleRemoveClick = (notificationId) => {\n return () => {\n const { onRemoveNotificationClick } = this.props;\n onRemoveNotificationClick(notificationId);\n };\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 const plugin = this.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) => {\n return notifications.find((n) => n.id === edn.notification_id) || {\n title: edn.notification_id,\n missing: true,\n };\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 return (\n <>\n \n {addNotificationButton}\n >\n );\n }\n}\n\nexport default NotificationList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport lodash from 'lodash';\n\nimport { Col, Row, Button } from 'components/graylog';\nimport { Icon } from 'components/common';\nimport Routes from 'routing/Routes';\nimport PermissionsMixin from 'util/PermissionsMixin';\n\nimport AddNotificationForm from './AddNotificationForm';\nimport NotificationSettingsForm from './NotificationSettingsForm';\nimport NotificationList from './NotificationList';\n\nimport styles from './NotificationsForm.css';\nimport commonStyles from '../common/commonStyles.css';\n\nclass NotificationsForm extends React.Component {\n static 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 };\n\n state = {\n showAddNotificationForm: false,\n };\n\n toggleAddNotificationForm = () => {\n const { showAddNotificationForm } = this.state;\n this.setState({ showAddNotificationForm: !showAddNotificationForm });\n };\n\n handleAssignNotification = (nextNotification) => {\n const { onChange, eventDefinition } = this.props;\n const nextNotifications = lodash.cloneDeep(eventDefinition.notifications);\n nextNotifications.push({\n notification_id: nextNotification,\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 = lodash.without(eventDefinition.notifications, notification);\n onChange('notifications', nextNotifications);\n };\n\n render() {\n const { eventDefinition, notifications, defaults, currentUser, onChange } = this.props;\n const { showAddNotificationForm } = this.state;\n\n if (!PermissionsMixin.isPermitted(currentUser.permissions, 'eventnotifications:read')) {\n return (\n \n \n No Notifications found.
\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 }\n}\n\nexport default NotificationsForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert, Col, Row } from 'components/graylog';\n\nimport commonStyles from '../common/commonStyles.css';\n\nclass EventDefinitionValidationSummary extends React.Component {\n static propTypes = {\n validation: PropTypes.object.isRequired,\n };\n\n render() {\n const { validation } = this.props;\n const fieldsWithErrors = Object.keys(validation.errors);\n if (fieldsWithErrors.length === 0) {\n return null;\n }\n\n return (\n \n \n \n We found some errors!
\n Please correct the following errors before saving this Event Definition:
\n \n {fieldsWithErrors.map((field) => {\n return validation.errors[field].map((error) => {\n const effectiveError = (field === 'config' ? error.replace('config', 'condition') : error);\n return - {effectiveError}
;\n });\n })}\n
\n \n \n
\n );\n }\n}\n\nexport default EventDefinitionValidationSummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Col, Row } from 'components/graylog';\nimport lodash from 'lodash';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport moment from 'moment';\nimport {} from 'moment-duration-format';\nimport naturalSort from 'javascript-natural-sort';\n\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';\nimport EventDefinitionValidationSummary from './EventDefinitionValidationSummary';\n\nimport styles from './EventDefinitionSummary.css';\nimport commonStyles from '../common/commonStyles.css';\n\nclass EventDefinitionSummary extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n notifications: PropTypes.array.isRequired,\n validation: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n };\n\n state = {\n showValidation: false,\n };\n\n componentDidUpdate() {\n this.showValidation();\n }\n\n showValidation = () => {\n const { showValidation } = this.state;\n if (!showValidation) {\n this.setState({ showValidation: true });\n }\n };\n\n renderDetails = (eventDefinition) => {\n return (\n <>\n Details
\n \n - Title
\n - {eventDefinition.title || 'No title given'}
\n - Description
\n - {eventDefinition.description || 'No description given'}
\n - Priority
\n - {lodash.upperFirst(EventDefinitionPriorityEnum.properties[eventDefinition.priority].name)}
\n
\n >\n );\n };\n\n getPlugin = (name, type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports(name).find((edt) => edt.type === type) || {};\n };\n\n renderCondition = (config) => {\n const { currentUser } = this.props;\n const conditionPlugin = this.getPlugin('eventDefinitionTypes', config.type);\n const component = (conditionPlugin.summaryComponent\n ? React.createElement(conditionPlugin.summaryComponent, {\n config: config,\n currentUser: currentUser,\n })\n : Condition plugin {config.type} does not provide a summary.
\n );\n\n return (\n <>\n {conditionPlugin.displayName || config.type}
\n {component}\n >\n );\n };\n\n renderField = (fieldName, config, keys) => {\n const { currentUser } = this.props;\n if (!config.providers || config.providers.length === 0) {\n return No field value provider configured.;\n }\n const provider = config.providers[0] || {};\n const fieldProviderPlugin = this.getPlugin('fieldValueProviders', provider.type);\n return (fieldProviderPlugin.summaryComponent\n ? React.createElement(fieldProviderPlugin.summaryComponent, {\n fieldName: fieldName,\n config: config,\n keys: keys,\n key: fieldName,\n currentUser: currentUser,\n })\n : Provider plugin {provider.type} does not provide a summary.
\n );\n };\n\n renderFieldList = (fieldNames, fields, keys) => {\n return (\n <>\n \n - Keys
\n - {keys.length > 0 ? keys.join(', ') : 'No Keys configured for Events based on this Definition.'}
\n
\n {fieldNames.sort(naturalSort).map((fieldName) => this.renderField(fieldName, fields[fieldName], keys))}\n >\n );\n };\n\n renderFields = (fields, keys) => {\n const fieldNames = Object.keys(fields);\n return (\n <>\n Fields
\n {fieldNames.length === 0\n ? No Fields configured for Events based on this Definition.
\n : this.renderFieldList(fieldNames, fields, keys)}\n >\n );\n };\n\n renderNotification = (definitionNotification) => {\n const { notifications } = this.props;\n const notification = notifications.find((n) => n.id === definitionNotification.notification_id);\n\n let content;\n\n if (notification) {\n const notificationPlugin = this.getPlugin('eventNotificationTypes', notification.config.type);\n content = (notificationPlugin.summaryComponent\n ? React.createElement(notificationPlugin.summaryComponent, {\n type: notificationPlugin.displayName,\n notification: notification,\n definitionNotification: definitionNotification,\n })\n : Notification plugin {notification.config.type} does not provide a summary.
\n );\n } else {\n content = (\n \n Could not find information for Notification {definitionNotification.notification_id}.\n
\n );\n }\n\n return (\n \n {content}\n \n );\n };\n\n renderNotificationSettings = (notificationSettings) => {\n const formattedDuration = moment.duration(notificationSettings.grace_period_ms)\n .format('d [days] h [hours] m [minutes] s [seconds]', { trim: 'all' });\n\n const formattedGracePeriod = (notificationSettings.grace_period_ms\n ? `Grace Period is set to ${formattedDuration}`\n : 'Grace Period is disabled');\n\n const formattedBacklogSize = (notificationSettings.backlog_size\n ? `Notifications will include ${notificationSettings.backlog_size} messages`\n : 'Notifications will not include any messages.');\n\n return (\n <>\n Settings
\n \n - {formattedGracePeriod}
\n - {formattedBacklogSize}
\n
\n >\n );\n };\n\n renderNotifications = (definitionNotifications, notificationSettings) => {\n const { currentUser } = this.props;\n\n const effectiveDefinitionNotifications = PermissionsMixin.isPermitted(currentUser.permissions,\n 'eventnotifications:read')\n ? definitionNotifications : [];\n\n return (\n <>\n Notifications
\n {effectiveDefinitionNotifications.length === 0\n ? This Event is not configured to trigger any Notifications.
\n : (\n <>\n {this.renderNotificationSettings(notificationSettings)}\n {definitionNotifications.map(this.renderNotification)}\n >\n )}\n >\n );\n };\n\n render() {\n const { eventDefinition, validation } = this.props;\n const { showValidation } = this.state;\n\n return (\n \n \n Event Summary
\n {showValidation && }\n \n \n {this.renderDetails(eventDefinition)}\n \n \n {this.renderCondition(eventDefinition.config)}\n \n
\n \n \n {this.renderFields(eventDefinition.field_spec, eventDefinition.key_spec)}\n \n \n {this.renderNotifications(eventDefinition.notifications, eventDefinition.notification_settings)}\n \n
\n \n
\n );\n }\n}\n\nexport default EventDefinitionSummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport styled from 'styled-components';\n\nimport { Button, ButtonToolbar, Col, Nav, Row } from 'components/graylog';\nimport { Wizard } from 'components/common';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport EventDetailsForm from './EventDetailsForm';\nimport EventConditionForm from './EventConditionForm';\nimport FieldsForm from './FieldsForm';\nimport NotificationsForm from './NotificationsForm';\nimport EventDefinitionSummary from './EventDefinitionSummary';\n\nconst StyledNav = styled(Nav)(({ theme }) => `\n &.nav {\n > li {\n border: 1px solid ${theme.color.gray[80]};\n border-left: 0;\n\n &:first-child {\n border-left: 1px solid ${theme.color.gray[80]};\n border-radius: 4px 0 0 4px;\n\n > a {\n border-radius: 4px 0 0 4px;\n }\n }\n\n &:last-child {\n border-radius: 0 4px 4px 0;\n\n > a {\n border-radius: 0 4px 4px 0;\n }\n }\n\n &:not(:last-child)::after {\n background-color: ${theme.color.gray[100]};\n border-color: ${theme.color.gray[80]};\n border-style: solid;\n border-width: 0 1px 1px 0;\n content: '';\n display: block;\n height: 15px;\n position: absolute;\n right: -1px;\n top: 50%;\n transform: translateY(-50%) translateX(50%) rotate(-45deg);\n width: 15px;\n z-index: 2;\n }\n\n &:hover::after {\n background-color: ${theme.color.gray[90]};\n }\n\n &.active::after {\n background-color: ${theme.color.global.link};\n }\n\n > a {\n border-radius: 0;\n }\n }\n }\n`);\n\nconst STEP_KEYS = ['event-details', 'condition', 'fields', 'notifications', 'summary'];\n\nclass EventDefinitionForm extends React.Component {\n static 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\n static defaultProps = {\n action: 'edit',\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n activeStep: STEP_KEYS[0],\n };\n }\n\n // TODO: Add validation when step changes\n handleStepChange = (nextStep) => {\n this.setState({ activeStep: nextStep });\n };\n\n handleSubmit = (event) => {\n const { activeStep } = this.state;\n\n if (event) {\n event.preventDefault();\n }\n\n if (activeStep === lodash.last(STEP_KEYS)) {\n const { onSubmit } = this.props;\n onSubmit();\n }\n };\n\n getConditionPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports('eventDefinitionTypes').find((edt) => edt.type === type) || {};\n };\n\n renderButtons = (activeStep) => {\n if (activeStep === lodash.last(STEP_KEYS)) {\n const { onCancel } = this.props;\n return (\n \n \n \n \n \n \n );\n }\n\n const activeStepIndex = STEP_KEYS.indexOf(activeStep);\n const previousStep = activeStepIndex > 0 ? STEP_KEYS[activeStepIndex - 1] : undefined;\n const nextStep = STEP_KEYS[activeStepIndex + 1];\n\n return (\n \n \n \n \n \n \n );\n };\n\n render() {\n const {\n action,\n entityTypes,\n eventDefinition,\n notifications,\n onChange,\n validation,\n defaults,\n currentUser,\n } = this.props;\n const { activeStep } = this.state;\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 eventDefinitionType = this.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: lodash.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 return (\n \n \n \n {this.renderButtons(activeStep)}\n \n
\n );\n }\n}\n\nexport default EventDefinitionForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport { withRouter } from 'react-router';\n\nimport history from 'util/History';\nimport Routes from 'routing/Routes';\nimport connect from 'stores/connect';\n\nimport EventDefinitionPriorityEnum from 'logic/alerts/EventDefinitionPriorityEnum';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nimport { ConfirmLeaveDialog, Spinner } from 'components/common';\nimport EventDefinitionForm from './EventDefinitionForm';\n// Import built-in plugins\nimport {} from 'components/event-definitions/event-definition-types';\nimport {} from 'components/event-notifications/event-notification-types';\n\nconst { EventDefinitionsActions } = CombinedProvider.get('EventDefinitions');\nconst { AvailableEventDefinitionTypesStore } = CombinedProvider.get('AvailableEventDefinitionTypes');\nconst { EventNotificationsStore, EventNotificationsActions } = CombinedProvider.get('EventNotifications');\nconst { ConfigurationActions } = CombinedProvider.get('Configuration');\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\n\nclass EventDefinitionFormContainer extends React.Component {\n static propTypes = {\n action: PropTypes.oneOf(['create', 'edit']),\n eventDefinition: PropTypes.object,\n currentUser: PropTypes.object.isRequired,\n entityTypes: PropTypes.object,\n notifications: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n onEventDefinitionChange: PropTypes.func,\n };\n\n static 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: 0,\n // Defaults to system setting for notification backlog size\n backlog_size: null,\n },\n notifications: [],\n alert: false,\n },\n entityTypes: undefined,\n onEventDefinitionChange: () => {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n eventDefinition: props.eventDefinition,\n validation: {\n errors: {},\n },\n eventsClusterConfig: undefined,\n isDirty: false,\n };\n }\n\n componentDidMount() {\n this.fetchClusterConfig();\n this.fetchNotifications();\n }\n\n fetchNotifications = () => {\n EventNotificationsActions.listAll();\n };\n\n fetchClusterConfig = () => {\n ConfigurationActions.listEventsClusterConfig().then((config) => this.setState({ eventsClusterConfig: config }));\n };\n\n handleChange = (key, value) => {\n this.setState((state) => {\n const nextEventDefinition = lodash.cloneDeep(state.eventDefinition);\n nextEventDefinition[key] = value;\n const { onEventDefinitionChange } = this.props;\n onEventDefinitionChange(nextEventDefinition);\n return { eventDefinition: nextEventDefinition, isDirty: true };\n });\n };\n\n handleCancel = () => {\n history.push(Routes.ALERTS.DEFINITIONS.LIST);\n };\n\n handleSubmitSuccessResponse = () => {\n this.setState({ isDirty: false }, () => history.push(Routes.ALERTS.DEFINITIONS.LIST));\n };\n\n handleSubmitFailureResponse = (errorResponse) => {\n const { body } = errorResponse.additional;\n if (errorResponse.status === 400) {\n if (body && body.failed) {\n this.setState({ validation: body });\n return;\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 this.setState({\n validation: {\n errors: { conditions: ['Aggregation condition is not valid'] },\n },\n });\n return;\n }\n if (body.message.includes('embryonic')) {\n this.setState({\n validation: {\n errors: { query_parameters: ['Query parameters must be declared'] },\n },\n });\n }\n }\n }\n };\n\n handleSubmit = () => {\n const { action } = this.props;\n const { eventDefinition } = this.state;\n\n if (action === 'create') {\n EventDefinitionsActions.create(eventDefinition)\n .then(this.handleSubmitSuccessResponse, this.handleSubmitFailureResponse);\n } else {\n EventDefinitionsActions.update(eventDefinition.id, eventDefinition)\n .then(this.handleSubmitSuccessResponse, this.handleSubmitFailureResponse);\n }\n };\n\n render() {\n const { action, entityTypes, notifications, currentUser, route } = this.props;\n const { isDirty, eventDefinition, eventsClusterConfig, validation } = this.state;\n const isLoading = !entityTypes || !notifications.all || !eventsClusterConfig;\n\n if (isLoading) {\n return ;\n }\n\n const defaults = { default_backlog_size: eventsClusterConfig.events_notification_default_backlog };\n\n return (\n <>\n {isDirty && (\n \n )}\n \n >\n );\n }\n}\n\nexport default connect(withRouter(EventDefinitionFormContainer), {\n entityTypes: AvailableEventDefinitionTypesStore,\n notifications: EventNotificationsStore,\n currentUser: CurrentUserStore,\n},\n({ currentUser, ...otherProps }) => ({\n ...otherProps,\n currentUser: currentUser.currentUser,\n}));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport { Alert, Button, ButtonToolbar, Col, ControlLabel, FormControl, FormGroup, HelpBlock, Row } from 'components/graylog';\nimport { Select, Spinner } from 'components/common';\nimport { Input } from 'components/bootstrap';\n\nimport FormsUtils from 'util/FormsUtils';\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 };\n\n static defaultProps = {\n action: 'edit',\n formId: undefined,\n };\n\n handleSubmit = (event) => {\n const { notification, onSubmit } = this.props;\n event.preventDefault();\n\n onSubmit(notification);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n const { onChange } = this.props;\n onChange(name, FormsUtils.getValueFromInput(event.target));\n };\n\n handleConfigChange = (nextConfig) => {\n const { onChange } = this.props;\n onChange('config', nextConfig);\n };\n\n getNotificationPlugin = (type) => {\n if (type === undefined) {\n return {};\n }\n return PluginStore.exports('eventNotificationTypes').find((n) => n.type === type) || {};\n };\n\n handleTypeChange = (nextType) => {\n const notificationPlugin = this.getNotificationPlugin(nextType);\n const defaultConfig = notificationPlugin.defaultConfig || {};\n this.handleConfigChange({ ...defaultConfig, type: nextType });\n };\n\n handleTestTrigger = () => {\n const { notification, onTest } = this.props;\n onTest(notification);\n };\n\n formattedEventNotificationTypes = () => {\n return PluginStore.exports('eventNotificationTypes')\n .map((type) => ({ label: type.displayName, value: type.type }));\n };\n\n render() {\n const { action, embedded, formId, notification, onCancel, validation, testResult } = this.props;\n\n const notificationPlugin = this.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 })\n : null;\n\n const testButtonText = testResult.isLoading ? : 'Execute Test Notification';\n\n return (\n \n \n \n \n
\n );\n }\n}\n\nexport default EventNotificationForm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { ConfirmLeaveDialog } from 'components/common';\nimport history from 'util/History';\nimport Routes from 'routing/Routes';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nimport EventNotificationForm from './EventNotificationForm';\n\n// Import built-in Event Notification Types\nimport {} from '../event-notification-types';\n\nconst { EventNotificationsActions } = CombinedProvider.get('EventNotifications');\n\nconst initialValidation = {\n errors: {},\n};\n\nconst initialTestResult = {\n isLoading: false,\n};\n\nclass EventNotificationFormContainer extends React.Component {\n static propTypes = {\n action: PropTypes.oneOf(['create', 'edit']),\n notification: PropTypes.object,\n /** Controls whether the form should be embedded into another one, and submitted/cancel externally */\n embedded: PropTypes.bool,\n /** Controls the ID of the form, so it can be controlled externally */\n formId: PropTypes.string,\n /** Route needed for ConfirmLeaveDialog to work. This is not needed when embedded in another form. */\n route: PropTypes.object,\n onSubmit: PropTypes.func,\n };\n\n static defaultProps = {\n action: 'edit',\n notification: {\n title: '',\n description: '',\n config: {},\n },\n embedded: false,\n formId: undefined,\n route: undefined,\n onSubmit: () => {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n notification: props.notification,\n validation: initialValidation,\n testResult: initialTestResult,\n isDirty: false,\n };\n }\n\n componentWillUnmount() {\n // Test request may take a while to return a result, cancel the promise before leaving the page.\n if (this.testPromise) {\n this.testPromise.cancel();\n }\n }\n\n handleChange = (key, value) => {\n const { notification } = this.state;\n const nextNotification = lodash.cloneDeep(notification);\n nextNotification[key] = value;\n this.setState({ notification: nextNotification, isDirty: true, testResult: initialTestResult });\n };\n\n handleCancel = () => {\n history.push(Routes.ALERTS.NOTIFICATIONS.LIST);\n };\n\n handleSubmit = () => {\n const { action, embedded, onSubmit } = this.props;\n const { notification } = this.state;\n\n let promise;\n if (action === 'create') {\n promise = EventNotificationsActions.create(notification);\n promise.then(\n () => {\n this.setState({ isDirty: false }, () => {\n if (!embedded) {\n history.push(Routes.ALERTS.NOTIFICATIONS.LIST);\n }\n });\n },\n (errorResponse) => {\n const { body } = errorResponse.additional;\n if (errorResponse.status === 400 && body && body.failed) {\n this.setState({ validation: body });\n }\n },\n );\n } else {\n promise = EventNotificationsActions.update(notification.id, notification);\n promise.then(\n () => {\n this.setState({ isDirty: false }, () => {\n if (!embedded) {\n history.push(Routes.ALERTS.NOTIFICATIONS.LIST);\n }\n });\n },\n (errorResponse) => {\n const { body } = errorResponse.additional;\n if (errorResponse.status === 400 && body && body.failed) {\n this.setState({ validation: body });\n }\n },\n );\n }\n\n onSubmit(promise);\n };\n\n handleTest = () => {\n const { notification } = this.state;\n this.setState({ testResult: { isLoading: true }, validation: initialValidation });\n const testResult = lodash.clone(initialTestResult);\n\n this.testPromise = EventNotificationsActions.test(notification);\n this.testPromise\n .then(\n (response) => {\n testResult.error = false;\n testResult.message = 'Notification was executed successfully.';\n return response;\n },\n (errorResponse) => {\n testResult.error = true;\n const { body } = errorResponse.additional;\n if (errorResponse.status === 400 && body && body.failed) {\n testResult.message = 'Validation failed, please correct any errors in the form before continuing.';\n this.setState({ validation: body });\n } else {\n testResult.message = errorResponse.responseMessage || 'Unknown error, please check your Graylog server logs.';\n }\n },\n )\n .finally(() => {\n this.setState({ testResult: testResult });\n this.testPromise = undefined;\n });\n };\n\n render() {\n const { action, embedded, formId, route } = this.props;\n const { notification, validation, testResult, isDirty } = this.state;\n\n return (\n <>\n {!embedded && isDirty && (\n \n )}\n \n >\n );\n }\n}\n\nexport default EventNotificationFormContainer;\n","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./EventConditionForm.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./EventConditionForm.css\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--10-1!./EventConditionForm.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--10-1!./CommonFieldValueProviderSummary.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--10-1!./CommonFieldValueProviderSummary.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--10-1!./CommonFieldValueProviderSummary.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._2qAX8L-lA-dhBBWkPda3Jv dl dl{padding-left:10px;margin-bottom:5px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"eventSummary\": \"_2qAX8L-lA-dhBBWkPda3Jv\"\n};","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--10-1!./TemplateFieldValueProviderPreview.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--10-1!./TemplateFieldValueProviderPreview.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--10-1!./TemplateFieldValueProviderPreview.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._17zPQPxCoLYjzO9j328c1l .panel-body{padding:20px 10px}._17zPQPxCoLYjzO9j328c1l ul{padding-left:1em}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"templatePreview\": \"_17zPQPxCoLYjzO9j328c1l\"\n};","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"._3VQOORJSVqL7sRp21OrB1O{width:150px}._3tYJ9GvZLvHk0rGRToMnqN:not(:last-child):after{content:\\\", \\\"}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"actions\": \"_3VQOORJSVqL7sRp21OrB1O\",\n\t\"providerOptions\": \"_3tYJ9GvZLvHk0rGRToMnqN\"\n};"],"sourceRoot":""}