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

web-interface.assets.b999a7e7-0.9472d5d0a285679cf68d.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"sources":["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.jsx","webpack:///./src/components/alerts/StreamAlerts.jsx","webpack:///./src/components/alerts/StreamAlertsOverviewContainer.jsx","webpack:///./src/components/alerts/index.jsx","webpack:///./src/components/alertconditions/AlertConditionTestModal.css","webpack:///./src/components/alerts/AlertTimeline.css","webpack:///./src/components/alertconditions/AlertConditionTestModal.css?c206","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/alertnotifications/index.jsx","webpack:///./src/components/alerts/Alert.css","webpack:///./src/util/SortUtils.js","webpack:///./src/components/alerts/AlertTimeline.css?30cd","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.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?0381"],"names":["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","exports","module","i","locals","options","transform","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","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","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":"b999a7e7-0.9472d5d0a285679cf68d.js","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Link } from 'react-router';\n\nimport { Col, Label } from 'components/graylog';\nimport { EntityListItem, Timestamp } from 'components/common';\n\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    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    if (!alert.is_interval || alert.resolved_at) {\n      statusBadge = ;\n    } else {\n      statusBadge = ;\n    }\n\n    let alertTime = ;\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { LinkContainer } from 'react-router-bootstrap';\n\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","import 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 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","import 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';\n\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 return (\n \n \n \n \n \n );\n },\n});\n\nexport default AlarmCallbackHistoryOverview;\n","import 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';\n\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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport { Alert, Button } from 'components/graylog';\nimport { PaginatedList, Spinner, Timestamp } from 'components/common';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\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 return momentFrom.subtract(1, 'minute').toISOString();\n };\n\n _getTo = () => {\n const { alert } = this.props;\n let momentTo;\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 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 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","import 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 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';\n\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 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","import 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","import 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","export { default as Alert } from './Alert';\nexport { default as AlertsHeaderToolbar } from './AlertsHeaderToolbar';\nexport { default as AlertDetails } from './AlertDetails';\nexport { default as AlertMessages } from './AlertMessages';\nexport { default as AlertsComponent } from './AlertsComponent';\nexport { default as AlertTimeline } from './AlertTimeline';\nexport { default as StreamAlerts } from './StreamAlerts';\nexport { default as StreamAlertsOverviewContainer } from './StreamAlertsOverviewContainer';\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"ul._16zQRTCAtSVZNQD7bYDQTR{list-style-type:disc}._1qYsBoPcDjPwHQrPoqmPG{padding-left:20px}._3Qey3eXr5ZVFXIpyZoR2Ma{float:left;line-height:inherit}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"errorMessages\": \"_16zQRTCAtSVZNQD7bYDQTR\",\n\t\"testResultText\": \"_1qYsBoPcDjPwHQrPoqmPG\",\n\t\"testResultIcon\": \"_3Qey3eXr5ZVFXIpyZoR2Ma\"\n};","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".g95Sn8lHxAA_SpWHyk37X dt{text-align:left;width:140px}.g95Sn8lHxAA_SpWHyk37X dd{margin-left:160px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"alertTimeline\": \"g95Sn8lHxAA_SpWHyk37X\"\n};","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./AlertConditionTestModal.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./AlertConditionTestModal.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./AlertConditionTestModal.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport CombinedProvider from 'injection/CombinedProvider';\n\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 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","import React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Button } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { AlertNotificationsList } from 'components/alertnotifications';\n\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 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","import 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 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","import 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 if (initialSelectedStream) {\n nextState.selectedStream = this._findStream(streams, initialSelectedStream);\n }\n this.setState(nextState);\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 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 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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport naturalSort from 'javascript-natural-sort';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport { Button } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { AlertNotificationsList } from 'components/alertnotifications';\n\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 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 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","import 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 return (\n \n );\n }\n}\n\nexport default UnknownAlertNotification;\n","export { default as AlertNotification } from './AlertNotification';\nexport { default as AlertNotificationsComponent } from './AlertNotificationsComponent';\nexport { default as AlertNotificationsList } from './AlertNotificationsList';\nexport { default as CreateAlertNotificationInput } from './CreateAlertNotificationInput';\nexport { default as StreamAlertNotifications } from './StreamAlertNotifications';\nexport { default as UnknownAlertNotification } from './UnknownAlertNotification';\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".najT6ar9WAygmemWcMjn3 dt{width:50px;text-align:left}.najT6ar9WAygmemWcMjn3 dd{margin-left:70px}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"alertDescription\": \"najT6ar9WAygmemWcMjn3\"\n};","import 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 return (d2Time.isBefore(d1Time) ? -1 : d1Time.isBefore(d2Time) ? 1 : 0);\n}\n\nexport function naturalSortIgnoreCase(s1, s2, sortOrder) {\n const effectiveSortOrder = sortOrder || 'asc';\n return (effectiveSortOrder === 'asc' ? naturalSort(s1.toLowerCase(), s2.toLowerCase()) : naturalSort(s2.toLowerCase(), s1.toLowerCase()));\n}\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./AlertTimeline.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./AlertTimeline.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./AlertTimeline.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import 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 return Grace period: {this._formatTime(time)}.;\n }\n}\n\nexport default GracePeriodSummary;\n","import 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 return (\n {this._formatMessageCount(backlog)} in alert notification.\n );\n }\n}\n\nexport default BacklogSummary;\n","import 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 return (\n Configured to {!repeatNotifications && not} repeat notifications.\n );\n }\n}\n\nexport default RepeatNotificationsSummary;\n","import 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","import 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","import 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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport { DropdownButton, MenuItem, Button } from 'components/graylog';\nimport { LinkContainer } from 'react-router-bootstrap';\n\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 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","import 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';\n\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 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 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 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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Link } from 'react-router';\n\nimport Routes from 'routing/Routes';\nimport { Col } from 'components/graylog';\nimport { EntityListItem } from 'components/common';\nimport { GenericAlertConditionSummary } from 'components/alertconditions';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\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 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","import React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Button } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport { AlertConditionsList } from 'components/alertconditions';\n\nimport Routes from 'routing/Routes';\n\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 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","import 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 // Condition was deleted while rendering, don't render anything at this stage\n if (!stream) {\n return null;\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 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 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 return;\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","import 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';\n\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 if (initialSelectedStream) {\n nextState.selectedStream = this._findStream(streams, initialSelectedStream);\n }\n this.setState(nextState);\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 this.setState({ selectedStream: this._findStream(streams, nextStream) });\n },\n\n _onSubmit(data) {\n const { selectedStream } = this.state;\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 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 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 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","import 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';\n\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","import 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 return (\n \n {graceSummary}\n {' '}\n {backlogSummary}\n \n \n );\n }\n}\n\nexport default GenericAlertConditionSummary;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport createReactClass from 'create-react-class';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Button } from 'components/graylog';\nimport { AlertConditionsList } from 'components/alertconditions';\n\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 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","import 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 return (\n Watching stream {stream.title} : 'Not watching any stream'}\n actions={actions}\n contentRow={content} />\n );\n }\n}\n\nexport default UnknownAlertCondition;\n","import { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\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","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./Alert.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./Alert.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--10-1!./Alert.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy