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

web-interface.assets.6e61897c-1.472622149827c1587209.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
{"version":3,"sources":["webpack:///./src/components/alerts/Alert.css?d06f","webpack:///./src/components/alerts/Alert.jsx","webpack:///./src/components/alerts/AlertsHeaderToolbar.jsx","webpack:///./src/components/alarmcallbacks/AlarmCallbackHistory.jsx","webpack:///./src/components/alarmcallbacks/AlarmCallbackHistoryOverview.jsx","webpack:///./src/components/alerts/AlertDetails.jsx","webpack:///./src/components/alerts/AlertMessages.jsx","webpack:///./src/components/alerts/AlertsComponent.jsx","webpack:///./src/components/alerts/AlertTimeline.css?204b","webpack:///./src/components/alerts/AlertTimeline.jsx","webpack:///./src/components/alerts/StreamAlerts.jsx","webpack:///./src/components/alerts/StreamAlertsOverviewContainer.jsx","webpack:///./src/components/alertnotifications/AlertNotification.jsx","webpack:///./src/components/alertnotifications/AlertNotificationsComponent.jsx","webpack:///./src/components/alertnotifications/AlertNotificationsList.jsx","webpack:///./src/components/alertnotifications/CreateAlertNotificationInput.jsx","webpack:///./src/components/alertnotifications/StreamAlertNotifications.jsx","webpack:///./src/components/alertnotifications/UnknownAlertNotification.jsx","webpack:///./src/components/alertconditions/AlertConditionTestModal.css","webpack:///./src/components/alerts/AlertTimeline.css","webpack:///./src/util/SortUtils.js","webpack:///./src/components/alertconditions/GracePeriodSummary.jsx","webpack:///./src/components/alertconditions/BacklogSummary.jsx","webpack:///./src/components/alertconditions/RepeatNotificationsSummary.jsx","webpack:///./src/components/alertconditions/fieldcontentcondition/FieldContentConditionSummary.jsx","webpack:///./src/components/alertconditions/fieldvaluecondition/FieldValueConditionSummary.jsx","webpack:///./src/components/alertconditions/messagecountcondition/MessageCountConditionSummary.jsx","webpack:///./src/components/alertconditions/AlertCondition.jsx","webpack:///./src/components/alertconditions/AlertConditionForm.jsx","webpack:///./src/components/alertconditions/AlertConditionSummary.jsx","webpack:///./src/components/alertconditions/AlertConditionsComponent.jsx","webpack:///./src/components/alertconditions/AlertConditionsList.jsx","webpack:///./src/components/alertconditions/AlertConditionTestModal.css?3e16","webpack:///./src/components/alertconditions/AlertConditionTestModal.jsx","webpack:///./src/components/alertconditions/CreateAlertConditionInput.jsx","webpack:///./src/components/alertconditions/EditAlertConditionForm.jsx","webpack:///./src/components/alertconditions/GenericAlertConditionSummary.jsx","webpack:///./src/components/alertconditions/StreamAlertConditions.jsx","webpack:///./src/components/alertconditions/UnknownAlertCondition.jsx","webpack:///./src/components/alertconditions/index.jsx","webpack:///./src/components/alerts/Alert.css"],"names":["options","locals","Alert","showAlarmCallbackHistory","alertTitle","statusBadge","this","props","alert","alertCondition","stream","conditionType","to","Routes","show_alert","id","title","is_interval","resolved_at","bsStyle","alertTime","dateTime","triggered_at","format","DateTime","Formats","DATETIME","content","md","className","styles","alertDescription","description","name","key","titleSuffix","contentRow","React","Component","PropTypes","object","isRequired","AlertsHeaderToolbar","active","route","LEGACY_ALERTS","LIST","_isActive","CONDITIONS","NOTIFICATIONS","string","AlarmCallbackHistory","configurationWell","configurationInfo","history","alarmCallbackHistory","configuration","alarmcallbackconfiguration","type","types","hadError","result","created_at","error","typeDefinition","AlarmCallbackHistoryStore","CombinedProvider","get","AlertNotificationsStore","AlarmCallbackHistoryOverview","createReactClass","displayName","propTypes","alertId","streamId","mixins","Reflux","connect","_formatHistory","state","availableNotifications","_isLoading","histories","render","sort","h1","h2","sortByDate","map","bsNoItemsStyle","noItemsText","items","AlarmCallbackHistoryActions","AlertNotificationsActions","AlertDetails","available","list","stream_id","_loadData","condition","UniversalSearchStore","AlertMessages","messages","undefined","totalMessages","parseFromString","toMoment","subtract","toISOString","add","now","page","searchParams","from","_getFrom","_getTo","search","PAGE_SIZE","then","response","total_results","setState","UserNotification","message","index","formatted_fields","timestamp","timeRange","rangetype","stream_search","_formatAlertTimeRange","length","pageSize","onChange","_onPageChange","totalItems","showPageSizeSelect","_formatMessages","AlertsStore","AlertsActions","AlertConditionsStore","AlertConditionsActions","StreamsStore","AlertsComponent","getInitialState","displayAllAlerts","loading","componentDidMount","loadData","currentPage","interval","setInterval","fetchData","componentWillUnmount","clearInterval","pageNo","limit","promises","Promise","all","listAllPaginated","listAll","listStreams","streams","refreshData","_onToggleAllAlerts","_onChangePaginatedList","size","_formatAlert","allAlertConditions","availableConditions","find","condition_id","s","alerts","onClick","disabled","total","AlertTimeline","_historiesTimeline","lastEventTime","formattedHistories","forEach","push","_resolutionTimeline","formattedResolution","notificationsText","condition_parameters","repeat_notifications","Date","conditionExists","Object","keys","triggeredAtTimestamp","style","alertTimeline","StreamAlerts","alertConditions","array","listPaginated","StreamAlertsOverviewContainer","onConditionUpdate","onConditionDelete","AlarmCallbacksActions","CurrentUserStore","AlertNotification","alertNotification","onNotificationUpdate","func","onNotificationDelete","isStreamView","bool","PermissionsMixin","getDefaultProps","isTestingAlert","isConfigurationShown","_onTestNotification","testAlert","_onEdit","configurationForm","open","_onSubmit","data","update","_onDelete","window","confirm","_toggleIsConfigurationShown","notification","onDelete","toggleConfigurationLink","href","actions","permissions","pullRight","stream_alerts","onSelect","divider","ref","configFields","requested_configuration","typeName","titleValue","submitAction","values","AlertNotificationsComponent","allNotifications","notifications","a1","a2","t1","t2","naturalSort","toLowerCase","NEW_NOTIFICATION","alertNotifications","AlertNotificationsList","slice","_paginatedNotifications","_formatNotification","CreateAlertNotificationInput","initialSelectedStream","selectedStream","PLACEHOLDER","nextState","_findStream","_onChange","evt","target","value","_onStreamChange","nextStream","save","_openForm","_resetForm","_formatNotificationForm","cancelAction","_formatOption","label","notificationForm","availableTypes","formattedStreams","s1","s2","notificationTypeHelp","rel","help","placeholder","StreamAlertNotifications","conditionNotifications","callbacks","new_alert_notification_for_stream","UnknownAlertNotification","___CSS_LOADER_EXPORT___","module","i","d1","d2","sortOrder","effectiveSortOrder","d1Time","moment","d2Time","isBefore","naturalSortIgnoreCase","GracePeriodSummary","time","parameters","grace","_formatTime","BacklogSummary","count","backlog","_formatMessageCount","RepeatNotificationsSummary","repeatNotifications","FieldContentConditionSummary","field","_formatMatcher","FieldValueConditionSummary","threshold","thresholdType","threshold_type","singular","plural","MessageCountConditionSummary","AlertCondition","isDetailsView","onUpdate","updateForm","_onUpdate","request","_openTestModal","modal","currentUser","isPermitted","onSubmit","c","AlertConditionForm","onCancel","getValue","_onCancel","_formatTitle","action","conditionName","helpBlock","Static","human_name","AlertConditionSummary","SummaryComponent","PluginStore","exports","summaryComponent","GenericAlertConditionSummary","show_alert_condition","AlertConditionsComponent","NEW_CONDITION","AlertConditionsList","alert_conditions","_paginatedConditions","_formatCondition","AlertConditionTestModal","testResults","isTesting","testCondition","close","test","status","error_messages","additional","body","errorMessages","testResultIcon","testResultText","renderErroneousCondition","triggered","renderSatisfiedCondition","renderUnsatisfiedCondition","bsSize","Header","closeButton","Title","Body","renderTestResults","text","Footer","CreateAlertConditionInput","_formatConditionForm","conditionForm","EditAlertConditionForm","graceSummary","backlogSummary","StreamAlertConditions","new_alert_condition_for_stream","UnknownAlertCondition","register","PluginManifest"],"mappings":"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","file":"6e61897c-1.472622149827c1587209.js","sourcesContent":["import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./Alert.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Link } from 'components/graylog/router';\nimport { Col, Label } from 'components/graylog';\nimport { EntityListItem, Timestamp } from 'components/common';\nimport Routes from 'routing/Routes';\nimport DateTime from 'logic/datetimes/DateTime';\n\nimport styles from './Alert.css';\n\nclass Alert extends React.Component {\n  static propTypes = {\n    alert: PropTypes.object.isRequired,\n    alertCondition: PropTypes.object,\n    stream: PropTypes.object.isRequired,\n    conditionType: PropTypes.object.isRequired,\n  };\n\n  static defaultProps = {\n    alertCondition: {},\n  };\n\n  state = {\n    showAlarmCallbackHistory: false,\n  };\n\n  render() {\n    const { alert, alertCondition, stream, conditionType } = this.props;\n\n    let alertTitle;\n\n    if (alertCondition) {\n      alertTitle = (\n        \n          \n            {alertCondition.title || 'Untitled alert'}\n          \n          {' '}\n          on stream {stream.title}\n        \n      );\n    } else {\n      alertTitle = (\n        \n          Unknown alert\n        \n      );\n    }\n\n    let statusBadge;\n\n    if (!alert.is_interval || alert.resolved_at) {\n      statusBadge = ;\n    } else {\n      statusBadge = ;\n    }\n\n    let alertTime = ;\n\n    if (alert.is_interval) {\n      alertTime = (\n        \n          Triggered at {alertTime}, \n          {alert.resolved_at\n            ? resolved at .\n            : still ongoing.}\n        \n      );\n    } else {\n      alertTime = (\n        \n          Triggered at {alertTime}\n        \n      );\n    }\n\n    const content = (\n      \n        
\n
Reason:
\n
{alert.description}
\n
Type:
\n
{conditionType.name || 'Unknown type. This usually means that the alert condition was deleted since the alert was triggered.'}
\n
\n \n );\n\n return (\n \n );\n }\n}\n\nexport default Alert;\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';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { ButtonToolbar, Button } from 'components/graylog';\nimport Routes from 'routing/Routes';\n\nclass AlertsHeaderToolbar extends React.Component {\n static propTypes = {\n active: PropTypes.string.isRequired,\n };\n\n _isActive = (active, route) => {\n return active === route ? 'active' : '';\n };\n\n render() {\n const { active } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default AlertsHeaderToolbar;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Alert, Col, Label } from 'components/graylog';\nimport { EntityListItem, Timestamp } from 'components/common';\nimport { ConfigurationWell } from 'components/configurationforms';\nimport DateTime from 'logic/datetimes/DateTime';\n\nclass AlarmCallbackHistory extends React.Component {\n static propTypes = {\n types: PropTypes.object.isRequired,\n alarmCallbackHistory: PropTypes.object.isRequired,\n };\n\n render() {\n const history = this.props.alarmCallbackHistory;\n const configuration = history.alarmcallbackconfiguration;\n const type = this.props.types[configuration.type];\n\n const hadError = history.result.type === 'error';\n const result = (hadError ? : );\n\n const title = (\n \n {type ? configuration.title || 'Untitled notification' : 'Unknown notification'}\n {' '}\n ({type ? type.name : configuration.type})\n \n );\n const description = (hadError\n ? Error sending notification at : {history.result.error}\n : Notification was sent successfully at .);\n\n let configurationWell;\n let configurationInfo;\n\n if (type) {\n configurationWell = ;\n } else {\n configurationInfo = (\n \n The plugin required for this notification is not loaded. Not displaying its configuration.\n \n );\n }\n\n const content = (\n \n {configurationInfo}\n
\n {configurationWell}\n
\n \n );\n\n return (\n \n );\n }\n}\n\nexport default AlarmCallbackHistory;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { sortByDate } from 'util/SortUtils';\nimport { Row, Col } from 'components/graylog';\nimport { EntityList, Spinner } from 'components/common';\nimport { AlarmCallbackHistory } from 'components/alarmcallbacks';\n\nconst { AlarmCallbackHistoryStore } = CombinedProvider.get('AlarmCallbackHistory');\nconst { AlertNotificationsStore } = CombinedProvider.get('AlertNotifications');\n\nconst AlarmCallbackHistoryOverview = createReactClass({\n displayName: 'AlarmCallbackHistoryOverview',\n\n propTypes: {\n alertId: PropTypes.string.isRequired,\n streamId: PropTypes.string.isRequired,\n },\n\n mixins: [Reflux.connect(AlarmCallbackHistoryStore), Reflux.connect(AlertNotificationsStore)],\n\n _formatHistory(history) {\n return (\n \n );\n },\n\n _isLoading() {\n return !(this.state.histories && this.state.availableNotifications);\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const histories = this.state.histories\n .sort((h1, h2) => sortByDate(h1.created_at, h2.created_at))\n .map(this._formatHistory);\n\n return (\n \n \n \n \n \n );\n },\n});\n\nexport default AlarmCallbackHistoryOverview;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Col, Row } from 'components/graylog';\nimport { AlertMessages, AlertTimeline } from 'components/alerts';\nimport { AlarmCallbackHistoryOverview } from 'components/alarmcallbacks';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlarmCallbackHistoryActions } = CombinedProvider.get('AlarmCallbackHistory');\nconst { AlertNotificationsActions } = CombinedProvider.get('AlertNotifications');\n\nclass AlertDetails extends React.Component {\n static propTypes = {\n alert: PropTypes.object.isRequired,\n condition: PropTypes.object,\n conditionType: PropTypes.object,\n stream: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n this._loadData();\n }\n\n _loadData = () => {\n AlertNotificationsActions.available();\n AlarmCallbackHistoryActions.list(this.props.alert.stream_id, this.props.alert.id);\n };\n\n render() {\n const { alert } = this.props;\n const { stream } = this.props;\n\n return (\n
\n \n \n

Alert timeline

\n

\n This is a timeline of events occurred during the alert, you can see more information about some events\n below.\n

\n \n \n
\n\n \n \n

Triggered notifications

\n

\n These are the notifications triggered during the alert, including the configuration they had at the time.\n

\n \n \n
\n\n \n \n \n \n \n
\n );\n }\n}\n\nexport default AlertDetails;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { Alert, Button } from 'components/graylog';\nimport { PaginatedList, Spinner, Timestamp } from 'components/common';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport Routes from 'routing/Routes';\nimport DateTime from 'logic/datetimes/DateTime';\nimport UserNotification from 'util/UserNotification';\n\nconst { UniversalSearchStore } = CombinedProvider.get('UniversalSearch');\n\nclass AlertMessages extends React.Component {\n static propTypes = {\n alert: PropTypes.object.isRequired,\n stream: PropTypes.object.isRequired,\n };\n\n state = {\n messages: undefined,\n totalMessages: 0,\n };\n\n componentDidMount() {\n this._loadData();\n }\n\n PAGE_SIZE = 20;\n\n _getFrom = () => {\n const momentFrom = DateTime.parseFromString(this.props.alert.triggered_at).toMoment();\n\n return momentFrom.subtract(1, 'minute').toISOString();\n };\n\n _getTo = () => {\n const { alert } = this.props;\n let momentTo;\n\n if (alert.is_interval) {\n momentTo = (alert.resolved_at ? DateTime.parseFromString(alert.resolved_at).toMoment().add(1, 'minute') : DateTime.now());\n } else {\n momentTo = DateTime.parseFromString(alert.triggered_at).toMoment().add(1, 'minute');\n }\n\n return momentTo.toISOString();\n };\n\n _loadData = (page) => {\n const searchParams = {\n from: this._getFrom(),\n to: this._getTo(),\n };\n const promise = UniversalSearchStore.search('absolute', '*', searchParams, this.props.stream.id, this.PAGE_SIZE,\n page || 1, 'timestamp', 'asc', undefined, false);\n\n promise.then(\n (response) => {\n if (response.total_results > 0) {\n this.setState({ messages: response.messages, totalMessages: response.total_results });\n } else {\n this.setState({ messages: [], totalMessages: 0 });\n }\n },\n (error) => {\n UserNotification.error(`Fetching messages during alert failed with error: ${error}`,\n 'Could not get messages during alert');\n },\n );\n };\n\n _isLoading = () => {\n return !this.state.messages;\n };\n\n _onPageChange = (page) => {\n this._loadData(page);\n };\n\n _formatMessages = (messages) => {\n return messages\n .map((message) => {\n return (\n \n \n {message.formatted_fields.message}\n \n );\n });\n };\n\n _formatAlertTimeRange = () => {\n return (\n \n (\n  – \n \n )\n \n );\n };\n\n render() {\n const timeRange = {\n rangetype: 'absolute',\n from: this._getFrom(),\n to: this._getTo(),\n };\n\n const title = (\n
\n
\n \n \n \n
\n

Messages evaluated

\n

\n These are the messages evaluated around the time of the alert {this._formatAlertTimeRange()} in stream{' '}\n {this.props.stream.title}.\n

\n
\n );\n\n if (this._isLoading()) {\n return (\n
\n {title}\n \n
\n );\n }\n\n const { messages } = this.state;\n\n if (messages.length === 0) {\n return (\n
\n {title}\n No search results found during the time of the alert.\n
\n );\n }\n\n return (\n
\n {title}\n \n
\n \n \n \n \n \n \n \n \n {this._formatMessages(messages)}\n \n
TimestampMessage
\n
\n
\n
\n );\n }\n}\n\nexport default AlertMessages;\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 createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport Promise from 'bluebird';\n\nimport { Button } from 'components/graylog';\nimport { Alert } from 'components/alerts';\nimport { EntityList, PaginatedList, Spinner } from 'components/common';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertsStore, AlertsActions } = CombinedProvider.get('Alerts');\nconst { AlertConditionsStore, AlertConditionsActions } = CombinedProvider.get('AlertConditions');\nconst { StreamsStore } = CombinedProvider.get('Streams');\n\nconst ALERTS_REFRESH_INTERVAL = 10000;\n\nconst AlertsComponent = createReactClass({\n displayName: 'AlertsComponent',\n mixins: [Reflux.connect(AlertsStore), Reflux.connect(AlertConditionsStore)],\n\n getInitialState() {\n return {\n displayAllAlerts: false,\n loading: false,\n };\n },\n\n componentDidMount() {\n this.loadData(this.currentPage, this.pageSize);\n this.interval = setInterval(() => this.fetchData(this.currentPage, this.pageSize), ALERTS_REFRESH_INTERVAL);\n },\n\n componentWillUnmount() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n },\n\n currentPage: 1,\n pageSize: 10,\n\n loadData(pageNo, limit) {\n this.setState({ loading: true });\n const promises = this.fetchData(pageNo, limit);\n\n Promise.all(promises).finally(() => this.setState({ loading: false }));\n },\n\n fetchData(pageNo, limit) {\n const { displayAllAlerts } = this.state;\n\n return [\n AlertsActions.listAllPaginated((pageNo - 1) * limit, limit, displayAllAlerts ? 'any' : 'unresolved'),\n AlertConditionsActions.listAll(),\n AlertConditionsActions.available(),\n StreamsStore.listStreams().then((streams) => {\n this.setState({ streams: streams });\n }),\n ];\n },\n\n refreshData() {\n this.loadData(this.currentPage, this.pageSize);\n },\n\n _onToggleAllAlerts() {\n const { displayAllAlerts } = this.state;\n\n this.currentPage = 1;\n this.pageSize = 10;\n this.setState({ displayAllAlerts: !displayAllAlerts }, () => this.loadData(this.currentPage, this.pageSize));\n },\n\n _onChangePaginatedList(page, size) {\n this.currentPage = page;\n this.pageSize = size;\n this.loadData(page, size);\n },\n\n _formatAlert(alert) {\n const { allAlertConditions, streams, availableConditions } = this.state;\n\n const condition = allAlertConditions.find((alertCondition) => alertCondition.id === alert.condition_id);\n const stream = streams.find((s) => s.id === alert.stream_id);\n const conditionType = condition ? availableConditions[condition.type] : {};\n\n return (\n \n );\n },\n\n _isLoading() {\n const { alerts, allAlertConditions, streams, availableConditions } = this.state;\n\n return !alerts || !allAlertConditions || !availableConditions || !streams;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { loading, displayAllAlerts, alerts } = this.state;\n\n return (\n
\n
\n \n  \n \n
\n

{displayAllAlerts ? 'Alerts' : 'Unresolved alerts'}

\n

\n Check your alerts status from here. Currently displaying{' '}\n {displayAllAlerts ? 'all' : 'unresolved'} alerts.\n

\n\n \n this._formatAlert(alert))} />\n \n
\n );\n },\n});\n\nexport default AlertsComponent;\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./AlertTimeline.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Spinner, Timestamp } from 'components/common';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { sortByDate } from 'util/SortUtils';\n\nimport style from './AlertTimeline.css';\n\nconst { AlarmCallbackHistoryStore } = CombinedProvider.get('AlarmCallbackHistory');\nconst { AlertNotificationsStore } = CombinedProvider.get('AlertNotifications');\n\nconst AlertTimeline = createReactClass({\n displayName: 'AlertTimeline',\n\n propTypes: {\n alert: PropTypes.object.isRequired,\n stream: PropTypes.object.isRequired,\n condition: PropTypes.object,\n conditionType: PropTypes.object,\n },\n\n mixins: [Reflux.connect(AlertNotificationsStore), Reflux.connect(AlarmCallbackHistoryStore)],\n\n _isLoading() {\n return !this.state.histories || !this.state.availableNotifications;\n },\n\n _historiesTimeline(lastEventTime) {\n const formattedHistories = [];\n\n if (this.state.histories.length === 0) {\n return [\n
,\n
No notifications were configured for this alert
,\n ];\n }\n\n this.state.histories\n .sort((h1, h2) => sortByDate(h1.created_at, h2.created_at))\n .forEach((history) => {\n const configuration = history.alarmcallbackconfiguration;\n const type = this.state.availableNotifications[configuration.type];\n let title;\n\n if (type) {\n title = {configuration.title || 'Untitled notification'} ({type.name});\n } else {\n title = Unknown notification ({configuration.type});\n }\n\n formattedHistories.push(\n
,\n (
\n Graylog {history.result.type === 'error' ? 'could not send' : 'sent'} {title} notification\n
),\n );\n });\n\n return formattedHistories;\n },\n\n _resolutionTimeline() {\n const formattedResolution = [];\n\n if (!this.props.alert.is_interval) {\n // Old alert without a resolution_at field\n formattedResolution.push(\n
,\n
This alert does not support resolution. It was marked as resolved when triggered.
,\n );\n } else if (this.props.alert.resolved_at) {\n formattedResolution.push(\n
,\n
Condition is no longer satisfied, alert is marked as resolved
,\n );\n } else {\n const conditionParameters = this.props.alert.condition_parameters || {};\n const repeatNotifications = conditionParameters.repeat_notifications || false;\n const notificationsText = (repeatNotifications\n ? 'Condition is configured to repeat notifications, Graylog will send notifications when evaluating the condition until it is no longer satisfied'\n : 'Condition is configured to not repeat notifications');\n\n formattedResolution.push(\n
,\n
{notificationsText}
,\n
,\n
Condition is still satisfied, alert is unresolved
,\n );\n }\n\n return formattedResolution;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { alert } = this.props;\n const conditionExists = this.props.condition && Object.keys(this.props.condition).length > 0;\n const condition = this.props.condition || {};\n const type = this.props.conditionType;\n const triggeredAtTimestamp = ;\n\n const title = (\n \n {conditionExists ? condition.title || 'Untitled condition' : 'Unknown condition'}{' '}\n ({type.name || condition.type || 'Unknown condition type'})\n \n );\n\n return (\n
\n
{triggeredAtTimestamp}
\n
Graylog checks {title} condition on stream {this.props.stream.title}
\n
{triggeredAtTimestamp}
\n
{alert.description}
\n
{triggeredAtTimestamp}
\n
Graylog triggers an alert for {title} and starts sending notifications
\n {this._historiesTimeline(alert.triggered_at)}\n {this._resolutionTimeline()}\n
\n );\n },\n});\n\nexport default AlertTimeline;\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 createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport Reflux from 'reflux';\n\nimport { Alert } from 'components/alerts';\nimport { EntityList, PaginatedList, Spinner } from 'components/common';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertsStore, AlertsActions } = CombinedProvider.get('Alerts');\n\nconst ALERTS_REFRESH_INTERVAL = 10000;\n\nconst StreamAlerts = createReactClass({\n displayName: 'StreamAlerts',\n propTypes: {\n stream: PropTypes.object.isRequired,\n alertConditions: PropTypes.array.isRequired,\n availableConditions: PropTypes.object.isRequired,\n },\n mixins: [Reflux.connect(AlertsStore)],\n\n getInitialState() {\n return {\n loading: true,\n };\n },\n\n componentDidMount() {\n this.loadData(this.currentPage, this.pageSize);\n this.interval = setInterval(() => this.fetchData(this.currentPage, this.pageSize), ALERTS_REFRESH_INTERVAL);\n },\n\n componentWillUnmount() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n },\n\n currentPage: 1,\n pageSize: 3,\n\n loadData(pageNo, limit) {\n this.setState({ loading: true });\n this.fetchData(pageNo, limit).finally(() => this.setState({ loading: false }));\n },\n\n // Loads data without setting the loading state, which makes the page jump\n fetchData(pageNo, limit) {\n return AlertsActions.listPaginated(this.props.stream.id, (pageNo - 1) * limit, limit, 'unresolved');\n },\n\n _onChangePaginatedList(page, size) {\n this.currentPage = page;\n this.pageSize = size;\n this.loadData(page, size);\n },\n\n _formatAlert(alert) {\n const condition = this.props.alertConditions.find((alertCondition) => alertCondition.id === alert.condition_id);\n const conditionType = condition ? this.props.availableConditions[condition.type] : {};\n\n return (\n \n );\n },\n\n render() {\n if (this.state.loading) {\n return ;\n }\n\n return (\n
\n

Unresolved Alerts

\n

\n These are the Alerts for this Stream that require your attention. Alerts will be resolved automatically\n when the Condition that triggered them is no longer satisfied.\n

\n\n \n this._formatAlert(alert))} />\n \n
\n );\n },\n});\n\nexport default StreamAlerts;\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 createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport Reflux from 'reflux';\nimport Promise from 'bluebird';\n\nimport { Col, Row } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { StreamAlerts } from 'components/alerts';\nimport { StreamAlertConditions } from 'components/alertconditions';\nimport { StreamAlertNotifications } from 'components/alertnotifications';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertConditionsStore, AlertConditionsActions } = CombinedProvider.get('AlertConditions');\n\nconst StreamAlertsOverviewContainer = createReactClass({\n propTypes: {\n stream: PropTypes.object.isRequired,\n },\n mixins: [Reflux.connect(AlertConditionsStore)],\n\n getInitialState() {\n return {\n loading: true,\n };\n },\n\n componentDidMount() {\n this.loadData();\n },\n\n loadData() {\n this.setState({ loading: true });\n const promises = this.fetchData();\n\n Promise.all(promises).finally(() => this.setState({ loading: false }));\n },\n\n fetchData() {\n return [\n AlertConditionsActions.list(this.props.stream.id),\n AlertConditionsActions.available(),\n ];\n },\n\n render() {\n if (this.state.loading) {\n return ;\n }\n\n const { stream } = this.props;\n const { alertConditions, availableConditions } = this.state;\n\n return (\n <>\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n );\n },\n});\n\nexport default StreamAlertsOverviewContainer;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { Col, DropdownButton, MenuItem, Button } from 'components/graylog';\nimport { EntityListItem, IfPermitted, Spinner } from 'components/common';\nimport { UnknownAlertNotification } from 'components/alertnotifications';\nimport { ConfigurationForm, ConfigurationWell } from 'components/configurationforms';\nimport Routes from 'routing/Routes';\n\nconst { AlertNotificationsStore } = CombinedProvider.get('AlertNotifications');\nconst { AlarmCallbacksActions } = CombinedProvider.get('AlarmCallbacks');\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\n\nconst AlertNotification = createReactClass({\n displayName: 'AlertNotification',\n\n propTypes: {\n alertNotification: PropTypes.object.isRequired,\n stream: PropTypes.object,\n onNotificationUpdate: PropTypes.func.isRequired,\n onNotificationDelete: PropTypes.func.isRequired,\n isStreamView: PropTypes.bool,\n },\n\n mixins: [Reflux.connect(AlertNotificationsStore), Reflux.connect(CurrentUserStore), PermissionsMixin],\n\n getDefaultProps() {\n return {\n stream: undefined,\n isStreamView: false,\n };\n },\n\n getInitialState() {\n return {\n isTestingAlert: false,\n isConfigurationShown: false,\n };\n },\n\n _onTestNotification() {\n const { alertNotification } = this.props;\n\n this.setState({ isTestingAlert: true });\n\n AlertNotificationsStore.testAlert(alertNotification.id)\n .finally(() => this.setState({ isTestingAlert: false }));\n },\n\n _onEdit() {\n this.configurationForm.open();\n },\n\n _onSubmit(data) {\n const { alertNotification, onNotificationUpdate } = this.props;\n\n AlarmCallbacksActions.update(alertNotification.stream_id, alertNotification.id, data)\n .then(onNotificationUpdate);\n },\n\n _onDelete() {\n const { alertNotification, onNotificationDelete } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm('Really delete alert notification?')) {\n AlarmCallbacksActions.delete(alertNotification.stream_id, alertNotification.id)\n .then(onNotificationDelete);\n }\n },\n\n _toggleIsConfigurationShown() {\n const { isConfigurationShown } = this.state;\n\n this.setState({ isConfigurationShown: !isConfigurationShown });\n },\n\n render() {\n const { availableNotifications, isTestingAlert } = this.state;\n const { isStreamView, alertNotification } = this.props;\n\n if (!availableNotifications) {\n return ;\n }\n\n const notification = alertNotification;\n const { stream } = this.props;\n const { isConfigurationShown } = this.state;\n const typeDefinition = availableNotifications[notification.type];\n\n if (!typeDefinition) {\n return ;\n }\n\n const toggleConfigurationLink = (\n \n {isConfigurationShown ? 'Hide' : 'Show'} configuration\n \n );\n\n const description = (stream\n ? Executed once per triggered alert condition in stream {stream.title}. {toggleConfigurationLink}\n : Not executed, as it is not connected to a stream. {toggleConfigurationLink});\n\n const actions = stream && (\n \n <>\n \n \n {!isStreamView && (\n \n Alerting overview for Stream\n \n )}\n Edit\n \n Delete\n \n \n \n );\n\n const content = (\n \n
\n { this.configurationForm = configurationForm; }}\n key={`configuration-form-notification-${notification.id}`}\n configFields={typeDefinition.requested_configuration}\n title=\"Editing alert configuration \"\n typeName={notification.type}\n titleValue={notification.title}\n submitAction={this._onSubmit}\n values={notification.configuration} />\n {isConfigurationShown\n && }\n
\n \n );\n\n return (\n \n );\n },\n});\n\nexport default AlertNotification;\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 createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { Button } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { AlertNotificationsList } from 'components/alertnotifications';\nimport Routes from 'routing/Routes';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertNotificationsStore, AlertNotificationsActions } = CombinedProvider.get('AlertNotifications');\nconst { StreamsStore } = CombinedProvider.get('Streams');\n\nconst AlertNotificationsComponent = createReactClass({\n displayName: 'AlertNotificationsComponent',\n mixins: [Reflux.connect(AlertNotificationsStore)],\n\n getInitialState() {\n return {\n allNotifications: undefined,\n streams: undefined,\n };\n },\n\n componentDidMount() {\n this._loadData();\n },\n\n _loadData() {\n StreamsStore.listStreams().then((streams) => {\n this.setState({ streams });\n });\n\n AlertNotificationsActions.available();\n AlertNotificationsActions.listAll();\n },\n\n _isLoading() {\n const { streams, allNotifications } = this.state;\n\n return !streams || !allNotifications;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { allNotifications, streams } = this.state;\n\n const notifications = allNotifications.sort((a1, a2) => {\n const t1 = a1.title || 'Untitled';\n const t2 = a2.title || 'Untitled';\n\n return naturalSort(t1.toLowerCase(), t2.toLowerCase());\n });\n\n return (\n
\n
\n \n \n \n
\n

Notifications

\n

These are all configured alert notifications.

\n \n
\n );\n },\n});\n\nexport default AlertNotificationsComponent;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { AlertNotification } from 'components/alertnotifications';\nimport { EntityList, PaginatedList } from 'components/common';\n\nclass AlertNotificationsList extends React.Component {\n static propTypes = {\n alertNotifications: PropTypes.array.isRequired,\n streams: PropTypes.array.isRequired,\n onNotificationUpdate: PropTypes.func,\n onNotificationDelete: PropTypes.func,\n isStreamView: PropTypes.bool,\n };\n\n static defaultProps = {\n onNotificationUpdate: () => {},\n onNotificationDelete: () => {},\n isStreamView: false,\n };\n\n state = {\n currentPage: 0,\n };\n\n PAGE_SIZE = 10;\n\n _onChangePaginatedList = (currentPage) => {\n this.setState({ currentPage: currentPage - 1 });\n };\n\n _paginatedNotifications = () => {\n return this.props.alertNotifications.slice(this.state.currentPage * this.PAGE_SIZE, (this.state.currentPage + 1) * this.PAGE_SIZE);\n };\n\n _formatNotification = (notification) => {\n const stream = this.props.streams.find((s) => s.id === notification.stream_id);\n\n return (\n \n );\n };\n\n render() {\n const notifications = this.props.alertNotifications;\n\n return (\n \n this._formatNotification(notification))} />\n \n );\n }\n}\n\nexport default AlertNotificationsList;\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 createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Col, Row, Button } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport { ExternalLinkButton, Select, Spinner } from 'components/common';\nimport { ConfigurationForm } from 'components/configurationforms';\nimport Routes from 'routing/Routes';\nimport UserNotification from 'util/UserNotification';\nimport history from 'util/History';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertNotificationsStore, AlertNotificationsActions } = CombinedProvider.get('AlertNotifications');\nconst { AlarmCallbacksActions } = CombinedProvider.get('AlarmCallbacks');\nconst { StreamsStore } = CombinedProvider.get('Streams');\n\nconst CreateAlertNotificationInput = createReactClass({\n displayName: 'CreateAlertNotificationInput',\n propTypes: {\n initialSelectedStream: PropTypes.string,\n },\n mixins: [Reflux.connect(AlertNotificationsStore)],\n\n getDefaultProps() {\n return {\n initialSelectedStream: undefined,\n };\n },\n\n getInitialState() {\n return {\n streams: undefined,\n selectedStream: undefined,\n type: this.PLACEHOLDER,\n };\n },\n\n componentDidMount() {\n StreamsStore.listStreams().then((streams) => {\n const nextState = { streams: streams };\n const { initialSelectedStream } = this.props;\n\n if (initialSelectedStream) {\n nextState.selectedStream = this._findStream(streams, initialSelectedStream);\n }\n\n this.setState(nextState);\n });\n\n AlertNotificationsActions.available();\n },\n\n PLACEHOLDER: 'placeholder',\n\n _onChange(evt) {\n this.setState({ type: evt.target.value });\n },\n\n _findStream(streams, streamId) {\n return streams.find((s) => s.id === streamId);\n },\n\n _onStreamChange(nextStream) {\n const { streams } = this.state;\n\n this.setState({ selectedStream: this._findStream(streams, nextStream) });\n },\n\n _onSubmit(data) {\n const { selectedStream } = this.state;\n\n if (!selectedStream) {\n UserNotification.error('Please select the stream that the condition should check.', 'Could not save condition');\n }\n\n AlarmCallbacksActions.save(selectedStream.id, data).then(\n () => history.push(Routes.stream_alerts(selectedStream.id)),\n () => this.configurationForm.open(),\n );\n },\n\n _openForm() {\n this.configurationForm.open();\n },\n\n _resetForm() {\n this.setState({ type: this.PLACEHOLDER });\n },\n\n _formatNotificationForm(type) {\n const { availableNotifications } = this.state;\n const typeDefinition = availableNotifications[type];\n\n return (\n { this.configurationForm = configurationForm; }}\n key=\"configuration-form-output\"\n configFields={typeDefinition.requested_configuration}\n title={`Create new ${typeDefinition.name}`}\n typeName={type}\n submitAction={this._onSubmit}\n cancelAction={this._resetForm} />\n );\n },\n\n _formatOption(key, value) {\n return { value: value, label: key };\n },\n\n _isLoading() {\n const { availableNotifications, streams } = this.state;\n\n return !availableNotifications || !streams;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { type, availableNotifications, streams, selectedStream } = this.state;\n\n const notificationForm = (type !== this.PLACEHOLDER ? this._formatNotificationForm(type) : null);\n const availableTypes = Object.keys(availableNotifications).map((value) => {\n return (\n \n );\n });\n const formattedStreams = streams\n .map((stream) => this._formatOption(stream.title, stream.id))\n .sort((s1, s2) => naturalSort(s1.label.toLowerCase(), s2.label.toLowerCase()));\n\n const notificationTypeHelp = (\n \n Select the notification type that will be used. You can find more types in the{' '}\n Graylog Marketplace.\n \n );\n\n return (\n
\n \n Find more notifications\n \n\n

Notification

\n

\n Define the notification that will be triggered from the alert conditions in a stream.\n

\n\n \n \n
\n \n \n \n {availableTypes}\n \n {notificationForm}\n {' '}\n \n
\n \n
\n
\n );\n },\n});\n\nexport default CreateAlertNotificationInput;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { Button } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { AlertNotificationsList } from 'components/alertnotifications';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport Routes from 'routing/Routes';\n\nconst { AlarmCallbacksActions } = CombinedProvider.get('AlarmCallbacks');\nconst { AlertNotificationsActions } = CombinedProvider.get('AlertNotifications');\n\nclass StreamAlertNotifications extends React.Component {\n static propTypes = {\n stream: PropTypes.object.isRequired,\n };\n\n state = {\n conditionNotifications: undefined,\n };\n\n componentDidMount() {\n this._loadData();\n }\n\n _loadData = () => {\n AlertNotificationsActions.available();\n\n AlarmCallbacksActions.list(this.props.stream.id)\n .then((callbacks) => this.setState({ conditionNotifications: callbacks }));\n };\n\n _isLoading = () => {\n return !this.state.conditionNotifications;\n };\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { stream } = this.props;\n\n const notifications = this.state.conditionNotifications.sort((a1, a2) => {\n const t1 = a1.title || 'Untitled';\n const t2 = a2.title || 'Untitled';\n\n return naturalSort(t1.toLowerCase(), t2.toLowerCase());\n });\n\n return (\n
\n
\n \n \n \n
\n

Notifications

\n

\n Alert Notifications will be executed when a Condition belonging to this Stream is satisfied.\n

\n\n \n
\n );\n }\n}\n\nexport default StreamAlertNotifications;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Alert, Col, DropdownButton, MenuItem } from 'components/graylog';\nimport { EntityListItem } from 'components/common';\n\nclass UnknownAlertNotification extends React.Component {\n static propTypes = {\n alertNotification: PropTypes.object.isRequired,\n onDelete: PropTypes.func.isRequired,\n };\n\n render() {\n const notification = this.props.alertNotification;\n\n const actions = [\n \n Delete\n ,\n ];\n\n const content = (\n \n \n Could not resolve notification type. This is most likely caused by a missing plugin in your Graylog setup.\n \n \n );\n\n return (\n \n );\n }\n}\n\nexport default UnknownAlertNotification;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \"ul._2IhEBb1Gh4B4MqFAmP9sgk {\\n list-style-type: disc;\\n}\\n\\n._4NmQdu7SDiPJFUJykkfiR {\\n padding-left: 20px;\\n}\\n\\n._162ZVcz7agWnoObYUGL80_ {\\n float: left;\\n line-height: inherit;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/alertconditions/AlertConditionTestModal.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,qBAAqB;AACzB;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,WAAW;IACX,oBAAoB;AACxB\",\"sourcesContent\":[\"ul:local(.errorMessages) {\\n list-style-type: disc;\\n}\\n\\n:local(.testResultText) {\\n padding-left: 20px;\\n}\\n\\n:local(.testResultIcon) {\\n float: left;\\n line-height: inherit;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"errorMessages\": \"_2IhEBb1Gh4B4MqFAmP9sgk\",\n\t\"testResultText\": \"_4NmQdu7SDiPJFUJykkfiR\",\n\t\"testResultIcon\": \"_162ZVcz7agWnoObYUGL80_\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \"._7ezTv0xiEVSbxVzrU5K7A dt {\\n text-align: left;\\n width: 140px;\\n}\\n\\n._7ezTv0xiEVSbxVzrU5K7A dd {\\n margin-left: 160px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/alerts/AlertTimeline.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;IAChB,YAAY;AAChB;;AAEA;IACI,kBAAkB;AACtB\",\"sourcesContent\":[\":local(.alertTimeline) dt {\\n text-align: left;\\n width: 140px;\\n}\\n\\n:local(.alertTimeline) dd {\\n margin-left: 160px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"alertTimeline\": \"_7ezTv0xiEVSbxVzrU5K7A\"\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 moment from 'moment';\nimport naturalSort from 'javascript-natural-sort';\n\n// sortOrder: \"asc\"|\"desc\"\nexport function sortByDate(d1, d2, sortOrder) {\n const effectiveSortOrder = sortOrder || 'asc';\n const d1Time = moment(d1);\n const d2Time = moment(d2);\n\n if (effectiveSortOrder === 'asc') {\n return (d1Time.isBefore(d2Time) ? -1 : d2Time.isBefore(d1Time) ? 1 : 0);\n }\n\n return (d2Time.isBefore(d1Time) ? -1 : d1Time.isBefore(d2Time) ? 1 : 0);\n}\n\nexport function naturalSortIgnoreCase(s1, s2, sortOrder) {\n const effectiveSortOrder = sortOrder || 'asc';\n\n return (effectiveSortOrder === 'asc' ? naturalSort(s1.toLowerCase(), s2.toLowerCase()) : naturalSort(s2.toLowerCase(), s1.toLowerCase()));\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 */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nclass GracePeriodSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n _formatTime = (time) => {\n if (time === 1) {\n return '1 minute';\n }\n\n return `${time} minutes`;\n };\n\n render() {\n const time = this.props.alertCondition.parameters.grace;\n\n return Grace period: {this._formatTime(time)}.;\n }\n}\n\nexport default GracePeriodSummary;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nclass BacklogSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n _formatMessageCount = (count) => {\n if (count === 0) {\n return 'Not including any messages';\n }\n\n if (count === 1) {\n return 'Including last message';\n }\n\n return `Including last ${count} messages`;\n };\n\n render() {\n const { backlog } = this.props.alertCondition.parameters;\n\n return (\n {this._formatMessageCount(backlog)} in alert notification.\n );\n }\n}\n\nexport default BacklogSummary;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nclass RepeatNotificationsSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n render() {\n const repeatNotifications = this.props.alertCondition.parameters.repeat_notifications || false;\n\n return (\n Configured to {!repeatNotifications && not} repeat notifications.\n );\n }\n}\n\nexport default RepeatNotificationsSummary;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport GracePeriodSummary from 'components/alertconditions/GracePeriodSummary';\nimport BacklogSummary from 'components/alertconditions/BacklogSummary';\nimport RepeatNotificationsSummary from 'components/alertconditions/RepeatNotificationsSummary';\n\nclass FieldContentConditionSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n _formatMatcher = (field, value) => {\n return {`\\<${field}: \"${value}\"\\>`};\n };\n\n render() {\n const { alertCondition } = this.props;\n const { field } = alertCondition.parameters;\n const { value } = alertCondition.parameters;\n\n return (\n \n Alert is triggered when messages matching {this._formatMatcher(field, value)} are received.\n {' '}\n \n {' '}\n \n {' '}\n \n \n );\n }\n}\n\nexport default FieldContentConditionSummary;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport GracePeriodSummary from 'components/alertconditions/GracePeriodSummary';\nimport BacklogSummary from 'components/alertconditions/BacklogSummary';\nimport RepeatNotificationsSummary from 'components/alertconditions/RepeatNotificationsSummary';\nimport { Pluralize } from 'components/common';\n\nclass FieldValueConditionSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n render() {\n const { alertCondition } = this.props;\n const { field } = alertCondition.parameters;\n const { threshold } = alertCondition.parameters;\n const thresholdType = alertCondition.parameters.threshold_type.toLowerCase();\n const type = alertCondition.parameters.type.toLowerCase();\n const { time } = alertCondition.parameters;\n\n return (\n \n Alert is triggered when the field {field} has a {thresholdType}\n {' '}{type} value than {threshold} in the\n {' '}\n .\n {' '}\n \n {' '}\n \n {' '}\n \n \n );\n }\n}\n\nexport default FieldValueConditionSummary;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport GracePeriodSummary from 'components/alertconditions/GracePeriodSummary';\nimport BacklogSummary from 'components/alertconditions/BacklogSummary';\nimport RepeatNotificationsSummary from 'components/alertconditions/RepeatNotificationsSummary';\nimport { Pluralize } from 'components/common';\n\nclass MessageCountConditionSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n render() {\n const { alertCondition } = this.props;\n const { threshold } = alertCondition.parameters;\n const thresholdType = alertCondition.parameters.threshold_type.toLowerCase();\n const { time } = alertCondition.parameters;\n\n return (\n \n Alert is triggered when there\n {' '}\n \n {' '}in the{' '}\n .\n {' '}\n \n {' '}\n \n {' '}\n \n \n );\n }\n}\n\nexport default MessageCountConditionSummary;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { DropdownButton, MenuItem, Button } from 'components/graylog';\nimport { AlertConditionForm, AlertConditionSummary, AlertConditionTestModal, UnknownAlertCondition } from 'components/alertconditions';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport Routes from 'routing/Routes';\n\nconst { AlertConditionsActions } = CombinedProvider.get('AlertConditions');\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\n\nconst AlertCondition = createReactClass({\n displayName: 'AlertCondition',\n\n propTypes: {\n alertCondition: PropTypes.object.isRequired,\n conditionType: PropTypes.object.isRequired,\n stream: PropTypes.object.isRequired,\n isDetailsView: PropTypes.bool,\n isStreamView: PropTypes.bool,\n onUpdate: PropTypes.func,\n onDelete: PropTypes.func,\n },\n mixins: [Reflux.connect(CurrentUserStore), PermissionsMixin],\n\n getDefaultProps() {\n return {\n isDetailsView: false,\n isStreamView: false,\n onUpdate: () => {},\n onDelete: () => {},\n };\n },\n\n _onEdit() {\n this.updateForm.open();\n },\n\n _onUpdate(request) {\n const { stream, alertCondition, onUpdate } = this.props;\n\n AlertConditionsActions.update(stream.id, alertCondition.id, request)\n .then(() => onUpdate(stream.id, alertCondition.id));\n },\n\n _onDelete() {\n const { stream, alertCondition, onDelete } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm('Really delete alert condition?')) {\n AlertConditionsActions.delete(stream.id, alertCondition.id)\n .then(() => onDelete(stream.id, alertCondition.id));\n }\n },\n\n _openTestModal() {\n this.modal.open();\n },\n\n render() {\n const { stream, alertCondition, conditionType, isDetailsView, isStreamView } = this.props;\n const { currentUser: { permissions } } = this.state;\n\n if (!conditionType) {\n return ;\n }\n\n let actions = [];\n\n if (this.isPermitted(permissions, `streams:edit:${stream.id}`)) {\n actions = [\n ,\n \n {!isStreamView && (\n \n Alerting overview for Stream\n \n )}\n Edit\n \n Delete\n ,\n ];\n }\n\n return (\n <>\n { this.updateForm = updateForm; }}\n conditionType={conditionType}\n alertCondition={alertCondition}\n onSubmit={this._onUpdate} />\n { this.modal = c; }}\n stream={stream}\n condition={alertCondition} />\n \n \n );\n },\n});\n\nexport default AlertCondition;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { ControlLabel, FormControl, FormGroup } from 'components/graylog';\nimport { ConfigurationForm } from 'components/configurationforms';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertConditionsStore } = CombinedProvider.get('AlertConditions');\n\nconst AlertConditionForm = createReactClass({\n displayName: 'AlertConditionForm',\n\n propTypes: {\n alertCondition: PropTypes.object,\n conditionType: PropTypes.object.isRequired,\n onCancel: PropTypes.func,\n onSubmit: PropTypes.func.isRequired,\n },\n\n mixins: [Reflux.connect(AlertConditionsStore)],\n\n getDefaultProps() {\n return {\n alertCondition: undefined,\n onCancel: () => {},\n onSubmit: () => {},\n };\n },\n\n getValue() {\n const values = this.configurationForm.getValue();\n\n return {\n title: values.title,\n type: this.props.conditionType.type,\n parameters: values.configuration,\n };\n },\n\n open() {\n this.configurationForm.open();\n },\n\n _onCancel() {\n this.props.onCancel();\n },\n\n _onSubmit() {\n const request = this.getValue();\n\n this.props.onSubmit(request);\n },\n\n _formatTitle(alertCondition, name) {\n const action = alertCondition ? 'Update' : 'Create new';\n const conditionName = alertCondition ? {alertCondition.title || 'Untitled'} : name;\n\n return {action} {conditionName};\n },\n\n render() {\n const { alertCondition } = this.props;\n const { conditionType } = this.props;\n\n return (\n { this.configurationForm = configurationForm; }}\n key=\"configuration-form-alert-condition\"\n configFields={conditionType.requested_configuration}\n title={this._formatTitle(alertCondition, conditionType.name)}\n typeName={conditionType.name}\n submitAction={this._onSubmit}\n cancelAction={this._onCancel}\n titleValue={alertCondition ? alertCondition.title : ''}\n helpBlock=\"The alert condition title\"\n values={alertCondition ? alertCondition.parameters : {}}>\n \n {`${conditionType.name} description`}\n {conditionType.human_name}\n \n \n );\n },\n});\n\nexport default AlertConditionForm;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Link } from 'components/graylog/router';\nimport Routes from 'routing/Routes';\nimport { Col } from 'components/graylog';\nimport { EntityListItem } from 'components/common';\nimport { GenericAlertConditionSummary } from 'components/alertconditions';\n\nclass AlertConditionSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n conditionType: PropTypes.object.isRequired,\n stream: PropTypes.object,\n actions: PropTypes.array.isRequired,\n isDetailsView: PropTypes.bool,\n };\n\n static defaultProps = {\n stream: undefined,\n isDetailsView: false,\n };\n\n render() {\n const { stream } = this.props;\n const condition = this.props.alertCondition;\n const { conditionType } = this.props;\n const conditionPlugin = PluginStore.exports('alertConditions').find((c) => c.type === condition.type) || {};\n const SummaryComponent = conditionPlugin.summaryComponent || GenericAlertConditionSummary;\n\n const description = (stream\n ? Alerting on stream {stream.title} : 'Not alerting on any stream');\n\n const content = (\n \n Configuration: \n \n );\n\n let title;\n\n if (this.props.isDetailsView) {\n title = (condition.title ? condition.title : 'Untitled');\n } else {\n title = (\n \n {condition.title ? condition.title : 'Untitled'}\n \n );\n }\n\n return (\n \n );\n }\n}\n\nexport default AlertConditionSummary;\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 createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { Button } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { AlertConditionsList } from 'components/alertconditions';\nimport Routes from 'routing/Routes';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { StreamsStore } = CombinedProvider.get('Streams');\nconst { AlertConditionsStore, AlertConditionsActions } = CombinedProvider.get('AlertConditions');\n\nconst AlertConditionsComponent = createReactClass({\n displayName: 'AlertConditionsComponent',\n mixins: [Reflux.connect(AlertConditionsStore)],\n\n getInitialState() {\n return {\n streams: undefined,\n };\n },\n\n componentDidMount() {\n this._loadData();\n },\n\n _loadData() {\n StreamsStore.listStreams().then((streams) => {\n this.setState({ streams: streams });\n });\n\n AlertConditionsActions.listAll();\n AlertConditionsActions.available();\n },\n\n _isLoading() {\n const { streams, allAlertConditions, availableConditions } = this.state;\n\n return !streams || !allAlertConditions || !availableConditions;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { streams, allAlertConditions, availableConditions } = this.state;\n\n const alertConditions = allAlertConditions.sort((a1, a2) => {\n const t1 = a1.title || 'Untitled';\n const t2 = a2.title || 'Untitled';\n\n return naturalSort(t1.toLowerCase(), t2.toLowerCase());\n });\n\n return (\n
\n
\n \n \n \n
\n

Conditions

\n

These are all configured alert conditions.

\n \n
\n );\n },\n});\n\nexport default AlertConditionsComponent;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { AlertCondition } from 'components/alertconditions';\nimport { EntityList, PaginatedList } from 'components/common';\n\nclass AlertConditionsList extends React.Component {\n static propTypes = {\n alertConditions: PropTypes.array.isRequired,\n availableConditions: PropTypes.object.isRequired,\n streams: PropTypes.array.isRequired,\n onConditionUpdate: PropTypes.func,\n onConditionDelete: PropTypes.func,\n isStreamView: PropTypes.bool,\n };\n\n static defaultProps = {\n onConditionUpdate: () => {},\n onConditionDelete: () => {},\n isStreamView: false,\n };\n\n state = {\n currentPage: 0,\n };\n\n PAGE_SIZE = 10;\n\n _onChangePaginatedList = (currentPage) => {\n this.setState({ currentPage: currentPage - 1 });\n };\n\n _paginatedConditions = () => {\n return this.props.alertConditions.slice(this.state.currentPage * this.PAGE_SIZE, (this.state.currentPage + 1) * this.PAGE_SIZE);\n };\n\n _formatCondition = (condition) => {\n const stream = this.props.streams.find((s) => s.alert_conditions.find((c) => c.id === condition.id));\n\n // Condition was deleted while rendering, don't render anything at this stage\n if (!stream) {\n return null;\n }\n\n const conditionType = this.props.availableConditions[condition.type];\n\n return (\n \n );\n };\n\n render() {\n const { alertConditions } = this.props;\n\n return (\n \n this._formatCondition(condition))} />\n \n );\n }\n}\n\nexport default AlertConditionsList;\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./AlertConditionTestModal.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\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';\n\nimport { BootstrapModalWrapper } from 'components/bootstrap';\nimport { Spinner, Icon } from 'components/common';\nimport { Alert, Modal, Button } from 'components/graylog';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nimport style from './AlertConditionTestModal.css';\n\nconst { AlertConditionsActions } = CombinedProvider.get('AlertConditions');\n\nclass AlertConditionTestModal extends React.Component {\n static propTypes = {\n stream: PropTypes.object.isRequired,\n condition: PropTypes.object.isRequired,\n };\n\n state = {\n testResults: undefined,\n isTesting: false,\n };\n\n open = () => {\n this.modal.open();\n this.testCondition();\n };\n\n close = () => {\n this.modal.close();\n };\n\n testCondition = () => {\n const { stream, condition } = this.props;\n\n this.setState({ isTesting: true, testResults: undefined });\n\n AlertConditionsActions.test(stream.id, condition.id)\n .then(\n (testResults) => this.setState({ testResults: testResults }),\n (error) => {\n if (error.status === 400) {\n // Condition testing failed but we should still get results in the body\n this.setState({ testResults: error.additional.body });\n\n return;\n }\n\n // Create a default error message to display in frontend\n this.setState({\n testResults: {\n error: true,\n error_messages: [{\n type: 'Unexpected error',\n message: 'Could not test Condition, please try again or check your server logs for more information.',\n }],\n },\n });\n },\n )\n .finally(() => this.setState({ isTesting: false }));\n };\n\n renderErroneousCondition = (testResults) => {\n return (\n \n

There was an error testing the Condition.

\n

\n

    \n {testResults.error_messages.map(({ message, type }) => (\n
  • {message} ({type})
  • \n ))}\n
\n

\n
\n );\n };\n\n renderSatisfiedCondition = (testResults) => {\n return (\n \n \n

Condition was satisfied and an Alert would be triggered.
\n Details: {testResults.description}\n

\n
\n );\n };\n\n renderUnsatisfiedCondition = () => {\n return (\n
\n \n

\n Condition was not satisfied and an Alert would not be triggered.\n

\n
\n );\n };\n\n renderTestResults = (testResults) => {\n if (testResults.error) {\n return this.renderErroneousCondition(testResults);\n }\n\n return testResults.triggered ? this.renderSatisfiedCondition(testResults) : this.renderUnsatisfiedCondition(testResults);\n };\n\n render() {\n const { condition } = this.props;\n const { isTesting, testResults } = this.state;\n\n return (\n { this.modal = c; }} bsSize=\"large\">\n \n Alert Condition {condition.title} test results\n \n \n {testResults ? (\n \n {this.renderTestResults(testResults)}\n \n ) : (\n \n )}\n \n \n \n \n \n \n );\n }\n}\n\nexport default AlertConditionTestModal;\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 createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport Reflux from 'reflux';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Col, Row, Button } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport { Select, Spinner } from 'components/common';\nimport { AlertConditionForm } from 'components/alertconditions';\nimport Routes from 'routing/Routes';\nimport UserNotification from 'util/UserNotification';\nimport history from 'util/History';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { AlertConditionsStore, AlertConditionsActions } = CombinedProvider.get('AlertConditions');\nconst { StreamsStore } = CombinedProvider.get('Streams');\n\nconst CreateAlertConditionInput = createReactClass({\n displayName: 'CreateAlertConditionInput',\n propTypes: {\n initialSelectedStream: PropTypes.string,\n },\n mixins: [Reflux.connect(AlertConditionsStore)],\n\n getDefaultProps() {\n return {\n initialSelectedStream: undefined,\n };\n },\n\n getInitialState() {\n return {\n streams: undefined,\n selectedStream: undefined,\n type: this.PLACEHOLDER,\n };\n },\n\n componentDidMount() {\n StreamsStore.listStreams().then((streams) => {\n const nextState = { streams: streams };\n const { initialSelectedStream } = this.props;\n\n if (initialSelectedStream) {\n nextState.selectedStream = this._findStream(streams, initialSelectedStream);\n }\n\n this.setState(nextState);\n });\n\n AlertConditionsActions.available();\n },\n\n PLACEHOLDER: 'placeholder',\n\n _onChange(evt) {\n this.setState({ type: evt.target.value });\n },\n\n _findStream(streams, streamId) {\n return streams.find((s) => s.id === streamId);\n },\n\n _onStreamChange(nextStream) {\n const { streams } = this.state;\n\n this.setState({ selectedStream: this._findStream(streams, nextStream) });\n },\n\n _onSubmit(data) {\n const { selectedStream } = this.state;\n\n if (!selectedStream) {\n UserNotification.error('Please select the stream that the condition should check.', 'Could not save condition');\n }\n\n AlertConditionsActions.save(selectedStream.id, data).then(() => {\n history.push(Routes.stream_alerts(selectedStream.id));\n });\n },\n\n _openForm() {\n this.configurationForm.open();\n },\n\n _resetForm() {\n this.setState({ type: this.PLACEHOLDER });\n },\n\n _formatConditionForm(type) {\n const { availableConditions } = this.state;\n\n return (\n { this.configurationForm = configurationForm; }}\n onCancel={this._resetForm}\n onSubmit={this._onSubmit}\n conditionType={availableConditions[type]} />\n );\n },\n\n _formatOption(key, value) {\n return { value: value, label: key };\n },\n\n _isLoading() {\n const { availableConditions, streams } = this.state;\n\n return !availableConditions || !streams;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { availableConditions, selectedStream, streams, type } = this.state;\n\n const conditionForm = (type !== this.PLACEHOLDER ? this._formatConditionForm(type) : null);\n const availableTypes = Object.keys(availableConditions).map((value) => {\n return ;\n });\n const formattedStreams = streams\n .map((stream) => this._formatOption(stream.title, stream.id))\n .sort((s1, s2) => naturalSort(s1.label.toLowerCase(), s2.label.toLowerCase()));\n\n return (\n
\n

Condition

\n

Define the condition to evaluate when triggering a new alert.

\n\n \n \n
\n \n \n \n {availableTypes}\n \n {conditionForm}\n {' '}\n \n
\n \n
\n
\n );\n },\n});\n\nexport default CreateAlertConditionInput;\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { EntityList } from 'components/common';\nimport { AlertCondition } from 'components/alertconditions';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\n\nconst EditAlertConditionForm = createReactClass({\n displayName: 'EditAlertConditionForm',\n\n propTypes: {\n alertCondition: PropTypes.object.isRequired,\n conditionType: PropTypes.object.isRequired,\n stream: PropTypes.object.isRequired,\n onUpdate: PropTypes.func,\n onDelete: PropTypes.func,\n },\n\n mixins: [Reflux.connect(CurrentUserStore), PermissionsMixin],\n\n getDefaultProps() {\n return {\n onUpdate: () => {},\n onDelete: () => {},\n };\n },\n\n render() {\n const { alertCondition, conditionType, stream } = this.props;\n\n return (\n
\n

Condition details

\n

Define the condition to evaluate when triggering a new alert.

\n ,\n ]} />\n
\n );\n },\n});\n\nexport default EditAlertConditionForm;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { ConfigurationWell } from 'components/configurationforms';\nimport GracePeriodSummary from 'components/alertconditions/GracePeriodSummary';\nimport BacklogSummary from 'components/alertconditions/BacklogSummary';\n\nclass GenericAlertConditionSummary extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n };\n\n render() {\n const { alertCondition } = this.props;\n const graceSummary = alertCondition.parameters.grace ? : null;\n const backlogSummary = alertCondition.parameters.backlog ? : null;\n\n return (\n \n {graceSummary}\n {' '}\n {backlogSummary}\n \n \n );\n }\n}\n\nexport default GenericAlertConditionSummary;\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 createReactClass from 'create-react-class';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport { Button } from 'components/graylog';\nimport { AlertConditionsList } from 'components/alertconditions';\nimport Routes from 'routing/Routes';\n\nconst StreamAlertConditions = createReactClass({\n displayName: 'StreamAlertConditions',\n propTypes: {\n stream: PropTypes.object.isRequired,\n alertConditions: PropTypes.array.isRequired,\n availableConditions: PropTypes.object.isRequired,\n onConditionUpdate: PropTypes.func,\n onConditionDelete: PropTypes.func,\n },\n\n getDefaultProps() {\n return {\n onConditionUpdate: () => {},\n onConditionDelete: () => {},\n };\n },\n\n render() {\n const alertConditions = this.props.alertConditions.sort((a1, a2) => {\n const t1 = a1.title || 'Untitled';\n const t2 = a2.title || 'Untitled';\n\n return naturalSort(t1.toLowerCase(), t2.toLowerCase());\n });\n\n return (\n
\n
\n \n \n \n
\n

Conditions

\n

Alert Conditions define when an Alert should be triggered for this Stream.

\n \n
\n );\n },\n});\n\nexport default StreamAlertConditions;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Alert, Col, DropdownButton, MenuItem } from 'components/graylog';\nimport { EntityListItem } from 'components/common';\n\nclass UnknownAlertCondition extends React.Component {\n static propTypes = {\n alertCondition: PropTypes.object.isRequired,\n stream: PropTypes.object,\n onDelete: PropTypes.func.isRequired,\n };\n\n render() {\n const condition = this.props.alertCondition;\n const { stream } = this.props;\n\n const actions = [\n \n Delete\n ,\n ];\n\n const content = (\n \n \n Could not resolve condition type. This is most likely caused by a missing plugin in your Graylog setup.\n \n \n );\n\n return (\n Watching stream {stream.title} : 'Not watching any stream'}\n actions={actions}\n contentRow={content} />\n );\n }\n}\n\nexport default UnknownAlertCondition;\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 { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { FieldContentConditionSummary } from 'components/alertconditions/fieldcontentcondition';\nimport { FieldValueConditionSummary } from 'components/alertconditions/fieldvaluecondition';\nimport { MessageCountConditionSummary } from 'components/alertconditions/messagecountcondition';\n\nexport { default as AlertCondition } from './AlertCondition';\nexport { default as AlertConditionForm } from './AlertConditionForm';\nexport { default as AlertConditionSummary } from './AlertConditionSummary';\nexport { default as AlertConditionsComponent } from './AlertConditionsComponent';\nexport { default as AlertConditionsList } from './AlertConditionsList';\nexport { default as AlertConditionTestModal } from './AlertConditionTestModal';\nexport { default as CreateAlertConditionInput } from './CreateAlertConditionInput';\nexport { default as EditAlertConditionForm } from './EditAlertConditionForm';\nexport { default as GenericAlertConditionSummary } from './GenericAlertConditionSummary';\nexport { default as StreamAlertConditions } from './StreamAlertConditions';\nexport { default as UnknownAlertCondition } from './UnknownAlertCondition';\n\nPluginStore.register(new PluginManifest({}, {\n alertConditions: [\n {\n summaryComponent: FieldContentConditionSummary,\n type: 'field_content_value',\n },\n {\n summaryComponent: FieldValueConditionSummary,\n type: 'field_value',\n },\n {\n summaryComponent: MessageCountConditionSummary,\n type: 'message_count',\n },\n ],\n}));\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \"._3kKKVcC0wgtfoefepd0Mwc dt {\\n width: 50px;\\n text-align: left;\\n}\\n\\n._3kKKVcC0wgtfoefepd0Mwc dd {\\n margin-left: 70px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/alerts/Alert.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,WAAW;IACX,gBAAgB;AACpB;;AAEA;IACI,iBAAiB;AACrB\",\"sourcesContent\":[\":local(.alertDescription) dt {\\n width: 50px;\\n text-align: left;\\n}\\n\\n:local(.alertDescription) dd {\\n margin-left: 70px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"alertDescription\": \"_3kKKVcC0wgtfoefepd0Mwc\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy