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

web-interface.assets.1255d548-8905.ec28249651141b909d18.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"1255d548-8905.ec28249651141b909d18.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/event-definitions/common/HelpPanel.css","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpression.css","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterAggregationSummary.css","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterPreview.css","webpack://graylog-web-interface/./src/components/event-definitions/common/HelpPanel.css?8b4d","webpack://graylog-web-interface/./src/components/event-definitions/common/HelpPanel.jsx","webpack://graylog-web-interface/./src/stores/event-definitions/FilterPreviewStore.js","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterPreview.css?436c","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterPreview.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterPreviewContainer.jsx","webpack://graylog-web-interface/./src/logic/alerts/AggregationExpressionConfig.js","webpack://graylog-web-interface/./src/logic/alerts/AggregationExpressionValidation.js","webpack://graylog-web-interface/./src/logic/alerts/AggregationExpressionTypes.js","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/NumberExpression.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/NumberRefExpression.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/BooleanOperatorSelector.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/BooleanExpression.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/ComparisonExpression.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpressions/GroupExpression.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpression.css?a300","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionExpression.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionSummary.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionsFormSummary.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationConditionsForm.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/AggregationForm.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterAggregationForm.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/withStreams.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterAggregationFormContainer.tsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterAggregationSummary.css?9f49","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/FilterAggregationSummary.jsx","webpack://graylog-web-interface/./src/components/event-definitions/event-definition-types/index.js","webpack://graylog-web-interface/./src/components/event-definitions/replay-search/LinkToReplaySearch.tsx","webpack://graylog-web-interface/./src/stores/event-definitions/EventDefinitionsStore.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.z6LAsSk67C9Z9TP6Sw_Z .panel-title {\n    font-size: 1rem; /* theme.fonts.size.body */\n}\n\n.z6LAsSk67C9Z9TP6Sw_Z .panel-title > a {\n    cursor: pointer;\n    display: block;\n}\n\n.z6LAsSk67C9Z9TP6Sw_Z .panel-body {\n    padding: 10px;\n}\n\n.z6LAsSk67C9Z9TP6Sw_Z ul {\n    padding-left: 0;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/common/HelpPanel.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,eAAe,EAAE,0BAA0B;AAC/C;;AAEA;IACI,eAAe;IACf,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,eAAe;AACnB\",\"sourcesContent\":[\":local(.helpPanel) .panel-title {\\n    font-size: 1rem; /* theme.fonts.size.body */\\n}\\n\\n:local(.helpPanel) .panel-title > a {\\n    cursor: pointer;\\n    display: block;\\n}\\n\\n:local(.helpPanel) .panel-body {\\n    padding: 10px;\\n}\\n\\n:local(.helpPanel) ul {\\n    padding-left: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"helpPanel\": `z6LAsSk67C9Z9TP6Sw_Z`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.Rm5RJaCv9xhyX2lY9jI3 {\n    margin-top: 25px;\n    height: 34px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-types/AggregationConditionExpression.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;IAChB,YAAY;AAChB\",\"sourcesContent\":[\":local(.formControlNoLabel) {\\n    margin-top: 25px;\\n    height: 34px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"formControlNoLabel\": `Rm5RJaCv9xhyX2lY9jI3`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.wp9nUw71uYu2kck_XycC span:not(:last-child)::after {\n    content: ', ';\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-types/FilterAggregationSummary.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,aAAa;AACjB\",\"sourcesContent\":[\":local(.streamList) span:not(:last-child)::after {\\n    content: ', ';\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"streamList\": `wp9nUw71uYu2kck_XycC`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.YV9VLhWAF0dOTkZvWqvg .panel-body {\n    max-height: 400px;\n    overflow-y: auto;\n    padding: 20px 10px;\n}\n\n.YV9VLhWAF0dOTkZvWqvg table {\n    table-layout: fixed;\n    word-wrap: break-word;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-definitions/event-definition-types/FilterPreview.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;AACtB;;AAEA;IACI,mBAAmB;IACnB,qBAAqB;AACzB\",\"sourcesContent\":[\":local(.filterPreview) .panel-body {\\n    max-height: 400px;\\n    overflow-y: auto;\\n    padding: 20px 10px;\\n}\\n\\n:local(.filterPreview) table {\\n    table-layout: fixed;\\n    word-wrap: break-word;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filterPreview\": `YV9VLhWAF0dOTkZvWqvg`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./HelpPanel.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./HelpPanel.css\";\n       export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { Panel } from 'components/bootstrap';\nimport { Icon } from 'components/common';\n\nimport styles from './HelpPanel.css';\n\nconst IconHeader = styled(Icon)`\n  margin-right: 9px;\n`;\n\nconst ConditionalCollapse = ({ condition, wrapper, children }) => (condition ? wrapper(children) : children);\n\nexport const HelpPanel = ({ bsStyle, children, className, collapsible, header, title, defaultExpanded }) => {\n  const defaultHeader = 

{title}

;\n\n return (\n \n \n \n {header || defaultHeader}\n \n \n {wrapChild}}>\n \n {children}\n \n \n \n );\n};\n\nHelpPanel.propTypes = {\n bsStyle: PropTypes.oneOf(['success', 'warning', 'danger', 'info', 'default', 'primary']),\n children: PropTypes.node,\n className: PropTypes.string,\n collapsible: PropTypes.bool,\n header: PropTypes.node,\n title: PropTypes.string,\n defaultExpanded: PropTypes.bool,\n};\n\nHelpPanel.defaultProps = {\n bsStyle: 'info',\n children: undefined,\n className: '',\n collapsible: false,\n header: undefined,\n title: '',\n defaultExpanded: false,\n};\n\nexport default HelpPanel;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport concat from 'lodash/concat';\n\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport UserNotification from 'util/UserNotification';\nimport Search from 'views/logic/search/Search';\nimport SearchResult from 'views/logic/SearchResult';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const FilterPreviewActions = singletonActions(\n 'core.FilterPreview',\n () => Reflux.createActions({\n create: { asyncResult: true },\n execute: { asyncResult: true },\n search: { asyncResult: true },\n }),\n);\n\nconst delay = (ms) => new Promise((resolve) => {\n setTimeout(resolve, ms);\n});\n\nexport const FilterPreviewStore = singletonStore(\n 'core.FilterPreview',\n () => Reflux.createStore({\n listenables: [FilterPreviewActions],\n sourceUrl: '/views/search',\n searchJob: undefined,\n result: undefined,\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n searchJob: this.searchJob,\n result: this.result,\n };\n },\n\n resourceUrl({ segments = [], query = {} }) {\n const uri = new URI(this.sourceUrl);\n const nextSegments = concat(uri.segment(), segments);\n\n uri.segmentCoded(nextSegments);\n uri.query(query);\n\n return URLUtils.qualifyUrl(uri.resource());\n },\n\n /**\n * Method that creates a search query in the backend. This method does not execute the search, please call\n * `execute()` once the response of `create()` is resolved to execute the search.\n */\n create(searchRequest) {\n const newSearch = searchRequest.toBuilder()\n .newId()\n .build();\n const promise = fetch('POST', this.resourceUrl({}), JSON.stringify(newSearch));\n\n promise.then((response) => {\n this.searchJob = Search.fromJSON(response);\n this.result = undefined;\n this.propagateChanges();\n\n return response;\n });\n\n FilterPreviewActions.create.promise(promise);\n },\n\n trackJobStatus(job, search) {\n return new Promise((resolve) => {\n if (job && job.execution.done) {\n resolve(new SearchResult(job));\n } else {\n resolve(delay(250)\n .then(() => this.jobStatus(job.id))\n .then((jobStatus) => this.trackJobStatus(jobStatus, search)));\n }\n });\n },\n\n run(search, executionState) {\n return fetch('POST', this.resourceUrl({ segments: [search.id, 'execute'] }), JSON.stringify(executionState));\n },\n\n jobStatus(jobId) {\n return fetch('GET', this.resourceUrl({ segments: ['status', jobId] }));\n },\n\n trackJob(search, executionState) {\n return this.run(search, executionState).then((job) => this.trackJobStatus(job, search));\n },\n\n /**\n * Method that executes a search in the backend and wait until its results are ready.\n * Take into account that you need to create the search before you execute it.\n */\n execute(executionState) {\n if (this.executePromise) {\n this.executePromise.cancel();\n }\n\n if (this.searchJob) {\n this.executePromise = this.trackJob(this.searchJob, executionState)\n .then(\n (result) => {\n this.result = result;\n this.executePromise = undefined;\n this.propagateChanges();\n\n return result;\n },\n () => UserNotification.error('Could not execute search'),\n );\n\n FilterPreviewActions.execute.promise(this.executePromise);\n\n return this.executePromise;\n }\n\n throw new Error('Unable to execute search if no search was created before!');\n },\n\n search(searchRequest, executionState) {\n FilterPreviewActions.create(searchRequest)\n .then(() => FilterPreviewActions.execute(executionState));\n },\n }),\n);\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./FilterPreview.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./FilterPreview.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Panel, Table } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport HelpPanel from 'components/event-definitions/common/HelpPanel';\n\nimport styles from './FilterPreview.css';\n\nclass FilterPreview extends React.Component {\n static propTypes = {\n searchResult: PropTypes.object,\n errors: PropTypes.array,\n isFetchingData: PropTypes.bool,\n displayPreview: PropTypes.bool,\n };\n\n static defaultProps = {\n searchResult: {},\n errors: [],\n isFetchingData: false,\n displayPreview: false,\n };\n\n renderMessages = (messages) => messages.map(({ index, message }) => (\n \n {message.timestamp}\n {message.message}\n \n ));\n\n renderSearchResult = (searchResult = {}) => {\n if (!searchResult.messages || searchResult.messages.length === 0) {\n return

Could not find any messages with the current search criteria.

;\n }\n\n return (\n \n \n \n \n \n \n \n \n {this.renderMessages(searchResult.messages)}\n \n
TimestampMessage
\n );\n };\n\n render() {\n const { isFetchingData, searchResult, errors, displayPreview } = this.props;\n\n const renderedResults = isFetchingData ? : this.renderSearchResult(searchResult);\n\n return (\n <>\n \n

\n The Filter & Aggregation Condition will generate different number of Events, depending on how it is\n configured:\n

\n
    \n
  • Filter: One Event per message matching the filter
  • \n
  • \n Aggregation without groups: One Event every time the aggregation result satisfies\n the condition\n
  • \n
  • \n Aggregation with groups: One Event per group whose aggregation result satisfies\n the condition\n
  • \n
\n
\n\n {displayPreview && (\n \n \n Filter Preview\n \n \n {errors.length > 0 ?

{errors[0].description}

: renderedResults}\n
\n
\n )}\n \n );\n }\n}\n\nexport default FilterPreview;\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 debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\n\nimport Query from 'views/logic/queries/Query';\nimport Search from 'views/logic/search/Search';\nimport connect from 'stores/connect';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { CurrentUserStore } from 'stores/users/CurrentUserStore';\nimport { FilterPreviewActions, FilterPreviewStore } from 'stores/event-definitions/FilterPreviewStore';\nimport generateId from 'logic/generateId';\n\nimport FilterPreview from './FilterPreview';\n\nconst isPermittedToSeePreview = (currentUser, config) => {\n const missingPermissions = config?.streams?.some((stream) => !isPermitted(currentUser.permissions, `streams:read:${stream}`));\n\n return !missingPermissions;\n};\n\nclass FilterPreviewContainer extends React.Component {\n fetchSearch = debounce((config) => {\n const { currentUser } = this.props;\n\n if (!isPermittedToSeePreview(currentUser, config)) {\n return;\n }\n\n const { queryId, searchTypeId } = this.state;\n\n const formattedStreams = config?.streams?.map((stream) => ({ type: 'stream', id: stream })) || [];\n\n const queryBuilder = Query.builder()\n .id(queryId)\n .query({ type: 'elasticsearch', query_string: config?.query || '*' })\n .timerange({ type: 'relative', range: (config?.search_within_ms || 0) / 1000 })\n .filter(formattedStreams.length === 0 ? null : { type: 'or', filters: formattedStreams })\n .searchTypes([{\n id: searchTypeId,\n type: 'messages',\n limit: 10,\n offset: 0,\n }]);\n\n const query = queryBuilder.build();\n\n const search = Search.create().toBuilder()\n .parameters(config?.query_parameters?.filter((param) => (!param.embryonic)) || [])\n .queries([query])\n .build();\n\n FilterPreviewActions.search(search);\n }, 250);\n\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n filterPreview: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n queryId: generateId(),\n searchTypeId: generateId(),\n };\n }\n\n componentDidMount() {\n const { eventDefinition } = this.props;\n\n this.fetchSearch(eventDefinition.config);\n }\n\n componentDidUpdate(prevProps) {\n const { eventDefinition } = this.props;\n\n const {\n query: prevQuery,\n query_parameters: prevQueryParameters,\n streams: prevStreams,\n search_within_ms: prevSearchWithin,\n } = prevProps.eventDefinition.config;\n const {\n query,\n query_parameters: queryParameters,\n streams,\n search_within_ms: searchWithin,\n } = eventDefinition.config;\n\n if (query !== prevQuery || queryParameters !== prevQueryParameters || !isEqual(streams, prevStreams) || searchWithin !== prevSearchWithin) {\n this.fetchSearch(eventDefinition.config);\n }\n }\n\n render() {\n const { eventDefinition, filterPreview, currentUser } = this.props;\n const { queryId, searchTypeId } = this.state;\n const isLoading = !filterPreview.result || !filterPreview.result.forId(queryId);\n let searchResult;\n let errors;\n\n if (!isLoading) {\n searchResult = filterPreview.result.forId(queryId).searchTypes[searchTypeId];\n\n errors = filterPreview.result.errors; // result may not always be set, so I can't use destructuring\n }\n\n return (\n \n );\n }\n}\n\nexport default connect(FilterPreviewContainer, {\n filterPreview: FilterPreviewStore,\n currentUser: CurrentUserStore,\n}, ({ currentUser, ...otherProps }) => ({\n ...otherProps,\n currentUser: currentUser.currentUser,\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 */\nexport const emptyComparisonExpressionConfig = () => ({\n expr: undefined,\n left: {\n expr: 'number-ref',\n ref: undefined,\n },\n right: {\n expr: 'number',\n value: 0,\n },\n});\n\nexport const emptyBooleanExpressionConfig = ({ operator = '&&', left = emptyComparisonExpressionConfig(), right = emptyComparisonExpressionConfig() }) => ({\n expr: operator,\n left: left,\n right: right,\n});\n\nexport const emptyGroupExpressionConfig = ({ operator = '&&', child = emptyComparisonExpressionConfig() }) => ({\n expr: 'group',\n operator: operator,\n child: child,\n});\n\n/**\n * Replaces all boolean expressions inside the current tree, without affecting any internal groups.\n */\nexport const replaceBooleanExpressionOperatorInGroup = (nextOperator, expression) => {\n const nextExpression = { ...expression };\n\n if (expression.expr === '&&' || expression.expr === '||') {\n nextExpression.expr = nextOperator;\n nextExpression.left = replaceBooleanExpressionOperatorInGroup(nextOperator, nextExpression.left);\n nextExpression.right = replaceBooleanExpressionOperatorInGroup(nextOperator, nextExpression.right);\n }\n\n return nextExpression;\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 union from 'lodash/union';\n\nconst flattenValidationTree = (validationTree, errors = []) => {\n if (validationTree.message) {\n return union(errors, [validationTree.message]);\n }\n\n if (validationTree.left) {\n return union(errors, flattenValidationTree(validationTree.left), flattenValidationTree(validationTree.right));\n }\n\n if (validationTree.child) {\n return union(errors, flattenValidationTree(validationTree.child));\n }\n\n return errors;\n};\n\nconst validateExpressionTree = (expression, series, validationTree = {}) => {\n switch (expression.expr) {\n case 'number':\n return (Number.isFinite(expression.value) ? {} : { message: 'Threshold must be a valid number' });\n case 'number-ref':\n /* eslint-disable no-case-declarations */\n const error = { message: 'Function must be set' };\n\n if (!expression.ref) {\n return error;\n }\n\n const selectedSeries = series.find((s) => s.id === expression.ref);\n\n if (selectedSeries?.type === 'percentage' && selectedSeries?.strategy === 'SUM' && !selectedSeries?.field) {\n return { message: 'Field must be set' };\n }\n\n if ((selectedSeries?.type === 'percentile'\n || selectedSeries?.type === 'max'\n || selectedSeries?.type === 'card')\n && !selectedSeries?.field) {\n return { message: 'Field must be set' };\n }\n\n return (selectedSeries?.type ? {} : error);\n /* eslint-enable no-case-declarations */\n case '&&':\n case '||':\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n return {\n left: validateExpressionTree(expression.left, series, validationTree),\n right: validateExpressionTree(expression.right, series, validationTree),\n };\n case 'group':\n return { child: validateExpressionTree(expression.child, series, validationTree) };\n default:\n return { message: 'Condition must be set' };\n }\n};\n\nconst validateExpression = (expression, series) => {\n const validationResults = {};\n\n if (!expression) {\n validationResults.isValid = true;\n\n return validationResults;\n }\n\n validationResults.validationTree = validateExpressionTree(expression, series);\n validationResults.errors = flattenValidationTree(validationResults.validationTree);\n validationResults.isValid = validationResults.errors.length === 0;\n\n return validationResults;\n};\n\nexport default validateExpression;\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';\n\nexport const internalNodePropType = PropTypes.shape({\n expr: PropTypes.string,\n left: PropTypes.object,\n right: PropTypes.object,\n});\n\nexport const numberExpressionNodePropType = PropTypes.shape({\n expr: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), // Accept string to allow clearing field\n});\n\nexport const numberRefNodePropType = PropTypes.shape({\n expr: PropTypes.string,\n ref: PropTypes.string,\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 React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\n\nimport { Input, Col } from 'components/bootstrap';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { numberExpressionNodePropType } from 'logic/alerts/AggregationExpressionTypes';\n\nconst NumberExpression = ({ expression, onChange, renderLabel, validation }) => {\n const handleChange = (event) => {\n const nextExpression = cloneDeep(expression);\n\n nextExpression.value = event.target.value === '' ? '' : FormsUtils.getValueFromInput(event.target);\n onChange({ conditions: nextExpression });\n };\n\n return (\n \n \n \n );\n};\n\nNumberExpression.propTypes = {\n expression: numberExpressionNodePropType.isRequired,\n onChange: PropTypes.func.isRequired,\n renderLabel: PropTypes.bool.isRequired,\n validation: PropTypes.object,\n};\n\nNumberExpression.defaultProps = {\n validation: {},\n};\n\nexport default NumberExpression;\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 * as React from 'react';\nimport { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport { Select } from 'components/common';\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/bootstrap';\nimport { numberRefNodePropType } from 'logic/alerts/AggregationExpressionTypes';\n\nimport { percentileOptions, percentageStrategyOptions } from '../../../../views/Constants';\n\nconst formatFunctions = (functions) => functions\n .sort(naturalSort)\n .map((fn) => ({ label: `${fn.toLowerCase()}()`, value: fn }));\n\nconst getSeriesId = (currentSeries) => `${currentSeries.type}-${currentSeries.field ?? ''}`;\n\nconst NumberRefExpression = ({\n aggregationFunctions,\n formattedFields,\n eventDefinition,\n expression,\n onChange,\n renderLabel,\n validation,\n}) => {\n const getSeries = useCallback((seriesId) => eventDefinition?.config?.series?.find((series) => series.id === seriesId), [eventDefinition?.config?.series]);\n\n const createSeries = useCallback(() => ({ id: expression.ref }), [expression.ref]);\n\n const getOrCreateSeries = useCallback((seriesId) => getSeries(seriesId) || createSeries(), [createSeries, getSeries]);\n\n const handleFieldChange = useCallback((key, value) => {\n const series = cloneDeep(eventDefinition?.config?.series);\n const nextSeries = cloneDeep(getOrCreateSeries(expression.ref));\n\n if (value !== undefined) {\n nextSeries[key] = value;\n }\n\n if (key === 'type' && value !== 'percentage') {\n delete nextSeries.strategy;\n }\n\n if (key === 'type' && value !== 'percentage') {\n delete nextSeries.percentile;\n }\n\n const nextSeriesId = getSeriesId(nextSeries);\n nextSeries.id = nextSeriesId;\n\n const seriesIndex = series.findIndex((s) => s.id === nextSeries.id);\n\n if (seriesIndex >= 0) {\n series[seriesIndex] = nextSeries;\n } else {\n series.push(nextSeries);\n }\n\n const nextExpression = cloneDeep(expression);\n\n nextExpression.ref = nextSeriesId;\n\n onChange({\n series: series,\n conditions: nextExpression,\n });\n }, [eventDefinition?.config?.series, expression, getOrCreateSeries, onChange]);\n\n const handleAggregationFunctionChange = useCallback((nextFunction) => {\n handleFieldChange('type', nextFunction);\n }, [handleFieldChange]);\n\n const handleAggregationFieldChange = useCallback((nextField) => {\n handleFieldChange('field', nextField);\n }, [handleFieldChange]);\n\n const series = getSeries(expression.ref) || {};\n\n const elements = ['percentage', 'percentile'].includes(series.type) ? 3 : 2;\n\n return (\n \n \n {renderLabel && If}\n \n \n handleFieldChange('strategy', newValue)}\n options={percentageStrategyOptions}\n value={series.strategy} />\n \n )}\n \n handleFieldChange('percentile', newValue)}\n options={percentileOptions}\n value={series.percentile} />\n \n )}\n \n {validation.message && {validation.message}}\n \n \n );\n};\n\nNumberRefExpression.propTypes = {\n aggregationFunctions: PropTypes.array.isRequired,\n eventDefinition: PropTypes.object.isRequired,\n expression: numberRefNodePropType.isRequired,\n formattedFields: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n renderLabel: PropTypes.bool.isRequired,\n validation: PropTypes.object,\n};\n\nNumberRefExpression.defaultProps = {\n validation: {},\n};\n\nexport default NumberRefExpression;\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 styled, { css } from 'styled-components';\n\nimport { Col, FormControl, FormGroup } from 'components/bootstrap';\nimport { Select } from 'components/common';\n\nconst OperatorSelector = styled.div(({ theme }) => css`\n margin-bottom: 15px;\n font-size: ${theme.fonts.size.body};\n`);\n\nconst BooleanOperatorSelect = styled(({ isFirstElement, ...props }) => )`\n width: 100px;\n margin-left: ${(props) => (props.isFirstElement ? '' : '1em')};\n margin-right: 1em;\n`;\n\nconst BooleanOperatorSelector = ({ initialText, operator, onOperatorChange }) => (\n \n \n {initialText && (\n \n {initialText} \n \n )}\n \n ', value: '>' },\n { label: '>=', value: '>=' },\n { label: '=', value: '==' },\n ]}\n value={expression.expr}\n clearable={false} />\n {validation.message && {validation.message}}\n \n \n \n \n \n );\n};\n\nComparisonExpression.propTypes = {\n expression: internalNodePropType.isRequired,\n level: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n onChildChange: PropTypes.func.isRequired,\n renderLabel: PropTypes.bool.isRequired,\n validation: PropTypes.object,\n};\n\nComparisonExpression.defaultProps = {\n validation: {},\n};\n\nexport default ComparisonExpression;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport styled from 'styled-components';\n\nimport { Clearfix } from 'components/bootstrap';\nimport { internalNodePropType } from 'logic/alerts/AggregationExpressionTypes';\nimport { replaceBooleanExpressionOperatorInGroup } from 'logic/alerts/AggregationExpressionConfig';\n\nimport BooleanOperatorSelector from './BooleanOperatorSelector';\n\n// eslint-disable-next-line import/no-cycle\nimport AggregationConditionExpression from '../AggregationConditionExpression';\n\nconst Group = styled.div`\n padding-left: 40px;\n`;\n\nconst GroupExpression = (props) => {\n const { expression, level, onChange, onChildChange, validation } = props;\n\n const handleOperatorChange = (nextOperator) => {\n const nextExpression = cloneDeep(expression);\n\n nextExpression.operator = nextOperator;\n nextExpression.child = replaceBooleanExpressionOperatorInGroup(nextOperator, nextExpression.child);\n onChange({ conditions: nextExpression });\n };\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n\nGroupExpression.propTypes = {\n expression: internalNodePropType.isRequired,\n level: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n onChildChange: PropTypes.func.isRequired,\n validation: PropTypes.object,\n};\n\nGroupExpression.defaultProps = {\n validation: {},\n};\n\nexport default GroupExpression;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./AggregationConditionExpression.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./AggregationConditionExpression.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\n\nimport { Icon } from 'components/common';\nimport { Button, ButtonToolbar, Clearfix, Col, FormGroup } from 'components/bootstrap';\nimport { emptyBooleanExpressionConfig, emptyGroupExpressionConfig, replaceBooleanExpressionOperatorInGroup } from 'logic/alerts/AggregationExpressionConfig';\nimport { internalNodePropType } from 'logic/alerts/AggregationExpressionTypes';\n\nimport NumberExpression from './AggregationConditionExpressions/NumberExpression';\nimport NumberRefExpression from './AggregationConditionExpressions/NumberRefExpression';\nimport BooleanOperatorSelector from './AggregationConditionExpressions/BooleanOperatorSelector';\n/* eslint-disable import/no-cycle */\n// We render the expression tree recursively, so complex expressions need to refer back to this component\nimport BooleanExpression from './AggregationConditionExpressions/BooleanExpression';\nimport ComparisonExpression from './AggregationConditionExpressions/ComparisonExpression';\nimport GroupExpression from './AggregationConditionExpressions/GroupExpression';\n/* eslint-enable import/no-cycle */\n\nimport styles from './AggregationConditionExpression.css';\n\nclass AggregationConditionExpression extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object,\n formattedFields: PropTypes.array.isRequired,\n aggregationFunctions: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n expression: internalNodePropType.isRequired,\n parent: internalNodePropType,\n level: PropTypes.number, // Internal use only\n renderLabel: PropTypes.bool,\n };\n\n static defaultProps = {\n level: 0,\n parent: undefined,\n renderLabel: true,\n validation: {},\n };\n\n state = {\n globalGroupOperator: undefined,\n };\n\n getEffectiveGlobalGroupOperator = () => {\n const { globalGroupOperator } = this.state;\n\n if (globalGroupOperator) {\n return globalGroupOperator;\n }\n\n const { expression } = this.props;\n\n return (expression.expr === '&&' || expression.expr === '||' ? expression.expr : '&&');\n };\n\n getBooleanOperator = (expression, defaultOperator) => {\n if (!expression) {\n return defaultOperator;\n }\n\n const key = expression.expr === 'group' ? 'operator' : 'expr';\n\n return get(expression, key, defaultOperator) === '&&' ? '&&' : '||';\n };\n\n handleAddExpression = () => {\n const { expression, onChange, parent } = this.props;\n const defaultOperator = this.getEffectiveGlobalGroupOperator();\n const prevOperator = this.getBooleanOperator(parent, defaultOperator);\n const nextExpression = emptyBooleanExpressionConfig({ operator: prevOperator, left: expression });\n\n onChange({ conditions: nextExpression });\n };\n\n handleAddGroup = () => {\n const { expression, onChange, parent } = this.props;\n const defaultOperator = this.getEffectiveGlobalGroupOperator();\n const prevOperator = this.getBooleanOperator(parent, defaultOperator);\n const groupOperator = prevOperator === '&&' ? '||' : '&&';\n const groupExpression = emptyGroupExpressionConfig({ operator: groupOperator });\n const nextExpression = emptyBooleanExpressionConfig({ operator: prevOperator, left: expression, right: groupExpression });\n\n onChange({ conditions: nextExpression });\n };\n\n handleDeleteExpression = () => {\n const { onChange } = this.props;\n\n onChange({ conditions: null });\n };\n\n handleChildChange = (branch) => (changes) => {\n const { expression, onChange } = this.props;\n\n if (!Object.keys(changes).includes('conditions')) {\n onChange(changes);\n\n return;\n }\n\n const update = changes.conditions;\n let nextUpdate;\n\n // A null update indicates that one of the branches got removed\n if (update === null) {\n if (branch === 'child') {\n // If this is the last branch of a group, remove the group altogether\n nextUpdate = null;\n } else {\n // Otherwise replace the current tree with the still existing branch\n nextUpdate = expression[(branch === 'left' ? 'right' : 'left')];\n }\n } else if (branch === 'child' && update.expr === 'group') {\n // Avoid that a group's child is another group. Groups should at least have one expression\n nextUpdate = update;\n } else {\n // Propagate the update in the expression tree.\n const nextExpression = cloneDeep(expression);\n\n nextExpression[branch] = update;\n nextUpdate = nextExpression;\n }\n\n onChange({ ...changes, conditions: nextUpdate });\n };\n\n handleOperatorChange = (nextOperator) => {\n const { expression, onChange } = this.props;\n\n this.setState({ globalGroupOperator: nextOperator });\n const nextExpression = replaceBooleanExpressionOperatorInGroup(nextOperator, expression);\n\n onChange({ conditions: nextExpression });\n };\n\n render() {\n const { expression, parent, renderLabel } = this.props;\n let expressionComponent;\n\n switch (expression.expr) {\n case 'number-ref':\n expressionComponent = ;\n break;\n case 'number':\n expressionComponent = ;\n break;\n case 'group':\n expressionComponent = ;\n break;\n case '&&':\n case '||':\n expressionComponent = (\n \n );\n\n break;\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n default:\n expressionComponent = (\n <>\n \n \n \n
\n \n \n \n \n \n
\n
\n \n \n );\n }\n\n if (!parent && expression.expr !== 'group') {\n return (\n <>\n \n \n {expressionComponent}\n \n );\n }\n\n return expressionComponent;\n }\n}\n\nexport default AggregationConditionExpression;\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\nconst Expression = ({ expression, series }) => {\n if (!expression) {\n return 'No condition configured';\n }\n\n switch (expression.expr) {\n case 'number':\n return expression.value;\n case 'number-ref':\n // eslint-disable-next-line no-case-declarations\n const selectedSeries = series.find((s) => s.id === expression.ref);\n\n return (selectedSeries && selectedSeries.type\n ? {selectedSeries.type}({selectedSeries.strategy ? `${selectedSeries.strategy}, ` : null}{selectedSeries.field}{selectedSeries.percentile ? `, ${selectedSeries.percentile}` : null})\n : No series selected);\n case '&&':\n case '||':\n return (\n <>\n {' '}\n {expression.expr === '&&' ? 'AND' : 'OR'}{' '}\n \n \n );\n case 'group':\n return [];\n case '<':\n case '<=':\n case '>':\n case '>=':\n case '==':\n return (\n <>\n {' '}\n {expression.expr}{' '}\n \n \n );\n default:\n return 'No condition configured';\n }\n};\n\nExpression.propTypes = {\n expression: PropTypes.object,\n series: PropTypes.array.isRequired,\n};\n\nExpression.defaultProps = {\n expression: null,\n};\n\nconst AggregationConditionSummary = ({ conditions, series }) => ;\n\nAggregationConditionSummary.propTypes = {\n conditions: PropTypes.object.isRequired,\n series: PropTypes.array.isRequired,\n};\n\nexport default AggregationConditionSummary;\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 styled from 'styled-components';\n\nimport { Button, Panel } from 'components/bootstrap';\nimport { Icon } from 'components/common';\n\nimport AggregationConditionSummary from './AggregationConditionSummary';\n\nconst StyledPanel = styled(Panel)`\n margin-top: 10px;\n`;\n\nconst StyledButton = styled(Button)`\n margin-left: 15px;\n vertical-align: baseline;\n`;\n\nconst AggregationConditionsFormSummary = (props) => {\n const { conditions, series, expressionValidation, showInlineValidation, toggleShowValidation } = props;\n\n return (\n
\n \n {expressionValidation.isValid\n ?

 Condition is valid

\n : (\n

\n  Condition is not valid\n \n {showInlineValidation ? 'Hide errors' : 'Show errors'}\n \n

\n )}\n Preview: \n
\n
\n );\n};\n\nAggregationConditionsFormSummary.propTypes = {\n conditions: PropTypes.object.isRequired,\n series: PropTypes.array.isRequired,\n expressionValidation: PropTypes.object,\n showInlineValidation: PropTypes.bool,\n toggleShowValidation: PropTypes.func.isRequired,\n};\n\nAggregationConditionsFormSummary.defaultProps = {\n expressionValidation: { isValid: true },\n showInlineValidation: false,\n};\n\nexport default AggregationConditionsFormSummary;\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 styled from 'styled-components';\nimport get from 'lodash/get';\n\nimport { Alert, Row } from 'components/bootstrap';\nimport { emptyComparisonExpressionConfig } from 'logic/alerts/AggregationExpressionConfig';\nimport validateExpression from 'logic/alerts/AggregationExpressionValidation';\n\nimport AggregationConditionExpression from './AggregationConditionExpression';\nimport AggregationConditionsFormSummary from './AggregationConditionsFormSummary';\n\nimport commonStyles from '../common/commonStyles.css';\n\nconst initialEmptyConditionConfig = emptyComparisonExpressionConfig();\n\nconst extractSeriesReferences = (expression, acc = []) => {\n if (expression.expr === 'number-ref') {\n acc.push(expression.ref);\n }\n\n if (expression.left && expression.right) {\n return extractSeriesReferences(expression.left).concat(extractSeriesReferences(expression.right));\n }\n\n if (expression.child) {\n return extractSeriesReferences(expression.child);\n }\n\n return acc;\n};\n\nconst StyledAlert = styled(Alert)`\n margin-bottom: 10px !important;\n`;\n\nclass AggregationConditionsForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n formattedFields: PropTypes.array.isRequired,\n aggregationFunctions: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showInlineValidation: false,\n };\n }\n\n toggleShowInlineValidation = () => {\n const { showInlineValidation } = this.state;\n\n this.setState({ showInlineValidation: !showInlineValidation });\n };\n\n handleChange = (changes) => {\n const { eventDefinition, onChange } = this.props;\n\n if (!Object.keys(changes).includes('conditions')) {\n onChange(changes);\n\n return;\n }\n\n const nextConditions = changes.conditions;\n\n let nextSeries;\n\n if (nextConditions) {\n // Keep series up-to-date with changes in conditions\n const seriesReferences = extractSeriesReferences(nextConditions);\n\n nextSeries = (changes.series || eventDefinition?.config?.series)?.filter((s) => seriesReferences.includes(s.id)) || [];\n } else {\n nextSeries = [];\n }\n\n onChange({\n ...changes,\n conditions: { expression: nextConditions },\n series: nextSeries,\n });\n };\n\n render() {\n const { showInlineValidation } = this.state;\n const { eventDefinition, validation } = this.props;\n const expression = eventDefinition?.config?.conditions?.expression || initialEmptyConditionConfig;\n const expressionValidation = validateExpression(expression, eventDefinition?.config?.series || []);\n\n return (\n <>\n

Create Events for Definition

\n {validation.errors.conditions && (\n \n

{get(validation, 'errors.conditions[0]')}

\n
\n )}\n\n \n \n \n\n \n \n );\n }\n}\n\nexport default AggregationConditionsForm;\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 * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport defaultTo from 'lodash/defaultTo';\n\nimport { MultiSelect } from 'components/common';\nimport { Col, ControlLabel, FormGroup, HelpBlock, Row } from 'components/bootstrap';\n// TODO: This should be moved to a general place outside of `views`\nimport { defaultCompare } from 'logic/DefaultCompare';\nimport useFieldTypes from 'views/logic/fieldtypes/useFieldTypes';\nimport { ALL_MESSAGES_TIMERANGE } from 'views/Constants';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nimport AggregationConditionsForm from './AggregationConditionsForm';\n\nimport commonStyles from '../common/commonStyles.css';\n\ntype EventDefinitionConfig = {\n group_by: Array,\n streams: Array,\n};\n\ntype EventDefinition = {\n config: EventDefinitionConfig,\n};\n\ntype Props = {\n eventDefinition: EventDefinition,\n validation: {},\n aggregationFunctions: Array<{}>,\n onChange: (key: string, newValue: any) => void,\n};\n\nconst AggregationForm = ({ aggregationFunctions, eventDefinition, validation, onChange }: Props) => {\n const { data: allFieldTypes } = useFieldTypes(eventDefinition?.config?.streams ?? [], ALL_MESSAGES_TIMERANGE);\n // Memoize function to only format fields when they change. Use joined fieldNames as cache key.\n const formattedFields = useMemo(() => (allFieldTypes ?? [])\n .sort((ftA, ftB) => defaultCompare(ftA.name, ftB.name))\n .map((fieldType) => ({\n label: `${fieldType.name} – ${fieldType.value.type.type}`,\n value: fieldType.name,\n })), [allFieldTypes]);\n\n const { pathname } = useLocation();\n const sendTelemetry = useSendTelemetry();\n\n const propagateConfigChange = useCallback((update: Partial) => {\n const nextConfig = { ...eventDefinition.config, ...update };\n\n onChange('config', nextConfig);\n }, [eventDefinition.config, onChange]);\n\n const handleGroupByChange = useCallback((selected: string) => {\n const nextValue = selected === '' ? [] : selected.split(',');\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.EVENTDEFINITION_CONDITION.AGGREGATION_GROUP_BY_FIELD_SELECTED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'event-definition-condition',\n app_action_value: 'group-by-field-select',\n selection_count: nextValue.length,\n });\n\n propagateConfigChange({ group_by: nextValue });\n }, [pathname, propagateConfigChange, sendTelemetry]);\n\n return (\n
\n

Aggregation

\n

\n Summarize log messages matching the Filter defined above by using a function. You can optionally group the\n Filter results by identical field values.\n

\n \n \n \n Group by Field(s) (Optional)\n \n \n Select Fields that Graylog should use to group Filter results when they have identical values.\n {' '}Example:
\n Assuming you created a Filter with all failed log-in attempts in your network, Graylog could alert you\n when there are more than 5 failed log-in attempts overall. Now, add username as Group by\n Field and Graylog will alert you for each username with more than 5 failed\n log-in attempts.\n
\n
\n \n
\n\n
\n\n \n
\n );\n};\n\nAggregationForm.propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n aggregationFunctions: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default AggregationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport { Col, ControlLabel, FormGroup, Input, Radio, Row } from 'components/bootstrap';\nimport * as FormsUtils from 'util/FormsUtils';\n\nimport FilterForm from './FilterForm';\nimport FilterPreviewContainer from './FilterPreviewContainer';\nimport AggregationForm from './AggregationForm';\n\nconst conditionTypes = {\n AGGREGATION: 0,\n FILTER: 1,\n};\n\nconst initialFilterConfig = {\n query: '',\n query_parameters: [],\n streams: [],\n search_within_ms: 5 * 60 * 1000,\n execute_every_ms: 5 * 60 * 1000,\n _is_scheduled: true,\n event_limit: 100,\n};\n\nconst initialAggregationConfig = {\n group_by: [],\n series: [],\n conditions: {},\n};\n\nclass FilterAggregationForm extends React.Component {\n static propTypes = {\n eventDefinition: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n entityTypes: PropTypes.object.isRequired,\n streams: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n currentUser: PropTypes.object.isRequired,\n };\n\n static defaultConfig = {\n ...initialFilterConfig,\n ...initialAggregationConfig,\n };\n\n constructor(props) {\n super(props);\n\n const { group_by, series, conditions } = props.eventDefinition.config;\n const expression = get(conditions, 'expression', {});\n const defaultConditionType = (isEmpty(group_by) && isEmpty(series) && isEmpty(expression)\n ? conditionTypes.FILTER : conditionTypes.AGGREGATION);\n\n this.state = {\n conditionType: defaultConditionType,\n };\n }\n\n handleConfigChange = (event) => {\n const config = cloneDeep(this.props.eventDefinition.config);\n\n config[event.target.name] = FormsUtils.getValueFromInput(event.target);\n this.propagateConfigChange(config);\n };\n\n propagateConfigChange = (config) => {\n this.props.onChange('config', config);\n };\n\n handleTypeChange = (event) => {\n const stateChange = {};\n const nextConditionType = Number(FormsUtils.getValueFromInput(event.target));\n\n stateChange[event.target.name] = nextConditionType;\n\n if (nextConditionType === conditionTypes.FILTER) {\n const { eventDefinition } = this.props;\n\n // Store existing data temporarily in state, to restore it in case the type change was accidental\n const existingAggregationConfig = {};\n\n Object.keys(initialAggregationConfig).forEach((key) => {\n existingAggregationConfig[key] = eventDefinition.config[key];\n });\n\n stateChange.existingAggregationConfig = existingAggregationConfig;\n\n const nextConfig = { ...eventDefinition.config, ...initialAggregationConfig };\n\n this.propagateConfigChange(nextConfig);\n } else {\n // Reset aggregation data from state if it exists\n const { existingAggregationConfig } = this.state;\n\n if (existingAggregationConfig) {\n const { eventDefinition } = this.props;\n const nextConfig = { ...eventDefinition.config, ...existingAggregationConfig };\n\n this.propagateConfigChange(nextConfig);\n stateChange.existingAggregationConfig = undefined;\n }\n }\n\n this.setState(stateChange);\n };\n\n render() {\n const { conditionType } = this.state;\n const { entityTypes, eventDefinition, streams, validation, currentUser } = this.props;\n\n return (\n <>\n \n \n s.is_editable)}\n currentUser={currentUser}\n onChange={this.props.onChange} />\n\n \n Create Events for Definition if...\n \n Filter has results\n \n \n Aggregation of results reaches a threshold\n \n \n {conditionType === conditionTypes.FILTER && (\n \n \n \n \n \n )}\n\n \n \n \n \n \n {conditionType === conditionTypes.AGGREGATION && (\n \n \n \n \n \n )}\n \n );\n }\n}\n\nexport default FilterAggregationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport { Spinner } from 'components/common';\nimport { StreamsStore } from 'stores/streams/StreamsStore';\n\nexport default function withStreams(WrappedComponent, hiddenStreams = []) {\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n class WithStreams extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n streams: undefined,\n };\n }\n\n componentDidMount() {\n StreamsStore.load((streams) => {\n let filteredStreams = streams.filter((s) => s.is_editable);\n\n if (hiddenStreams.length !== 0) {\n filteredStreams = streams.filter((s) => !hiddenStreams.includes(s.id));\n }\n\n this.setState({ streams: filteredStreams });\n });\n }\n\n render() {\n const { streams } = this.state;\n\n if (!streams) {\n return ;\n }\n\n return ;\n }\n }\n\n WithStreams.displayName = `withStreams(${wrappedComponentName})`;\n\n return WithStreams;\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 * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FilterAggregationForm from './FilterAggregationForm';\nimport withStreams from './withStreams';\n\ntype Props = {\n action: 'create' | 'edit',\n validation: {},\n eventDefinition: {},\n fieldTypes: {},\n onChange: () => void,\n currentUser: {\n permissions: Array,\n }\n};\n\nconst FilterAggregationFormContainer = (props: Props) => ;\n\nFilterAggregationFormContainer.propTypes = {\n action: PropTypes.oneOf(['create', 'edit']).isRequired,\n validation: PropTypes.object.isRequired,\n eventDefinition: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n currentUser: PropTypes.object.isRequired, // Prop is passed down to pluggable entities\n};\n\nexport default withStreams(FilterAggregationFormContainer);\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./FilterAggregationSummary.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./FilterAggregationSummary.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport upperFirst from 'lodash/upperFirst';\n\nimport { Link } from 'components/common/router';\nimport { Alert } from 'components/bootstrap';\nimport { extractDurationAndUnit } from 'components/common/TimeUnitInput';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport Routes from 'routing/Routes';\nimport validateExpression from 'logic/alerts/AggregationExpressionValidation';\n\nimport AggregationConditionSummary from './AggregationConditionSummary';\nimport withStreams from './withStreams';\nimport { TIME_UNITS } from './FilterForm';\nimport styles from './FilterAggregationSummary.css';\n\nimport LinkToReplaySearch from '../replay-search/LinkToReplaySearch';\n\nconst formatStreamOrId = (streamOrId) => {\n if (typeof streamOrId === 'string') {\n return {streamOrId};\n }\n\n return (\n \n {streamOrId.title}\n \n );\n};\n\nconst getConditionType = (config) => {\n const { group_by: groupBy, series, conditions } = config;\n\n return (isEmpty(groupBy)\n && (!conditions || isEmpty(conditions) || conditions.expression === null)\n && isEmpty(series)\n ? 'filter' : 'aggregation');\n};\n\nconst renderQueryParameters = (queryParameters) => {\n if (queryParameters.some((p) => p.embryonic)) {\n const undeclaredParameters = queryParameters.filter((p) => p.embryonic)\n .map((p) => p.name)\n .join(', ');\n\n return (\n \n There are undeclared query parameters: {undeclaredParameters}\n \n );\n }\n\n return
{queryParameters.map((p) => p.name).join(', ')}
;\n};\n\nclass FilterAggregationSummary extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n currentUser: PropTypes.object.isRequired,\n streams: PropTypes.array.isRequired,\n };\n\n renderStreams = (streamIds, streamIdsWithMissingPermission) => {\n const { streams } = this.props;\n\n if ((!streamIds || streamIds.length === 0) && streamIdsWithMissingPermission.length <= 0) {\n return 'No Streams selected, searches in all Streams';\n }\n\n const warning = streamIdsWithMissingPermission.length > 0\n ? Missing Stream Permissions for:
{streamIdsWithMissingPermission.join(', ')}
\n : null;\n\n const renderedStreams = streamIds\n .map((id) => streams.find((s) => s.id === id) || id)\n .sort((s1, s2) => naturalSortIgnoreCase(s1.title || s1, s2.title || s2))\n .map(formatStreamOrId);\n\n return (\n <>\n {warning}\n {renderedStreams}\n \n );\n };\n\n render() {\n const { config, currentUser } = this.props;\n const {\n query,\n query_parameters: queryParameters,\n streams,\n search_within_ms: searchWithinMs,\n execute_every_ms: executeEveryMs,\n _is_scheduled: isScheduled,\n event_limit,\n group_by: groupBy,\n series,\n conditions,\n } = config;\n\n const conditionType = getConditionType(config);\n\n const searchWithin = extractDurationAndUnit(searchWithinMs, TIME_UNITS);\n const executeEvery = extractDurationAndUnit(executeEveryMs, TIME_UNITS);\n\n const effectiveStreamIds = streams?.filter((s) => isPermitted(currentUser.permissions, `streams:read:${s}`));\n const streamIdsWithMissingPermission = streams?.filter((s) => !effectiveStreamIds.includes(s));\n\n const validationResults = validateExpression(conditions.expression, series);\n\n return (\n
\n
Type
\n
{upperFirst(conditionType)}
\n
Search Query
\n
{query || '*'}
\n {queryParameters.length > 0 && renderQueryParameters(queryParameters)}\n
Streams
\n
{this.renderStreams(effectiveStreamIds, streamIdsWithMissingPermission)}
\n
Search within
\n
{searchWithin.duration} {searchWithin.unit.toLowerCase()}
\n
Execute search every
\n
{executeEvery.duration} {executeEvery.unit.toLowerCase()}
\n
Enable scheduling
\n
{isScheduled ? 'yes' : 'no'}
\n {conditionType === 'filter' && (\n <>\n
Event limit
\n
{event_limit}
\n \n )}\n {conditionType === 'aggregation' && (\n <>\n
Group by Field(s)
\n
{groupBy && groupBy.length > 0 ? groupBy.join(', ') : 'No Group by configured'}
\n
Create Events if
\n
\n {validationResults.isValid\n ? \n : (\n \n Condition is not valid: {validationResults.errors.join(', ')}\n \n )}\n
\n \n )}\n
Actions
\n
\n \n
\n
\n );\n }\n}\n\nexport default withStreams(FilterAggregationSummary);\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 FilterAggregationFormContainer from './FilterAggregationFormContainer';\nimport FilterAggregationForm from './FilterAggregationForm';\nimport FilterAggregationSummary from './FilterAggregationSummary';\n\nPluginStore.register(new PluginManifest({}, {\n eventDefinitionTypes: [\n {\n type: 'aggregation-v1',\n displayName: 'Filter & Aggregation',\n sortOrder: 0, // Sort before conditions working on events\n description: 'Create Events from log messages by filtering them and (optionally) '\n + 'aggregating their results to match a given condition. These Events can be used as input for a Correlation Rule.',\n formComponent: FilterAggregationFormContainer,\n summaryComponent: FilterAggregationSummary,\n defaultConfig: FilterAggregationForm.defaultConfig,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React from 'react';\n\nimport Routes from 'routing/Routes';\nimport { ReplaySearchButtonComponent } from 'views/components/widgets/ReplaySearchButton';\nimport useParams from 'routing/useParams';\n\nconst LinkToReplaySearch = ({ isEvent, id }: { id?: string, isEvent?: boolean }) => {\n const { definitionId } = useParams<{ alertId?: string, definitionId?: string }>();\n const searchLink = isEvent ? Routes.ALERTS.replay_search(id) : Routes.ALERTS.DEFINITIONS.replay_search(id || definitionId);\n\n return (\n Replay search\n );\n};\n\nLinkToReplaySearch.defaultProps = {\n id: undefined,\n isEvent: false,\n};\n\nexport default LinkToReplaySearch;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport cloneDeep from 'lodash/cloneDeep';\nimport concat from 'lodash/concat';\nimport defaultTo from 'lodash/defaultTo';\nimport pick from 'lodash/pick';\nimport omit from 'lodash/omit';\n\nimport * as URLUtils from 'util/URLUtils';\nimport PaginationURL from 'util/PaginationURL';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const EventDefinitionsActions = singletonActions(\n 'core.EventDefinitions',\n () => Reflux.createActions({\n listAll: { asyncResult: true },\n listPaginated: { asyncResult: true },\n searchPaginated: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n copy: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n enable: { asyncResult: true },\n disable: { asyncResult: true },\n clearNotificationQueue: { asyncResult: true },\n }),\n);\n\nexport const EventDefinitionsStore = singletonStore(\n 'core.EventDefinitions',\n () => Reflux.createStore({\n listenables: [EventDefinitionsActions],\n sourceUrl: '/events/definitions',\n all: undefined,\n eventDefinitions: undefined,\n context: undefined,\n query: undefined,\n pagination: {\n count: undefined,\n page: undefined,\n pageSize: undefined,\n total: undefined,\n grandTotal: undefined,\n },\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n all: this.all,\n eventDefinitions: this.eventDefinitions,\n context: this.context,\n query: this.query,\n pagination: this.pagination,\n };\n },\n\n eventDefinitionsUrl({ segments = [], query = {} }) {\n const uri = new URI(this.sourceUrl);\n const nextSegments = concat(uri.segment(), segments);\n\n uri.segmentCoded(nextSegments);\n uri.query(query);\n\n return URLUtils.qualifyUrl(uri.resource());\n },\n\n refresh() {\n if (this.all) {\n this.listAll();\n }\n\n if (this.pagination.page) {\n this.listPaginated({\n query: this.query,\n page: this.pagination.page,\n pageSize: this.pagination.pageSize,\n });\n }\n },\n\n listAll() {\n const promise = fetch('GET', this.eventDefinitionsUrl({ query: { per_page: 0 } }));\n\n promise.then((response) => {\n this.all = response.event_definitions;\n this.context = response.context;\n this.propagateChanges();\n\n return response;\n });\n\n EventDefinitionsActions.listAll.promise(promise);\n },\n\n listPaginated({ query = '', page = 1, pageSize = 10 }) {\n const promise = fetch('GET', this.eventDefinitionsUrl({\n query: {\n query: query,\n page: page,\n per_page: pageSize,\n },\n }));\n\n promise.then((response) => {\n this.eventDefinitions = response.event_definitions;\n this.context = response.context;\n this.query = response.query;\n\n this.pagination = {\n count: response.count,\n page: response.page,\n pageSize: response.per_page,\n total: response.total,\n grandTotal: response.grand_total,\n };\n\n this.propagateChanges();\n\n return response;\n }).catch((error) => {\n UserNotification.error(`Fetching event definitions failed with status: ${error}`,\n 'Could not retrieve event definitions');\n });\n\n EventDefinitionsActions.listPaginated.promise(promise);\n },\n\n searchPaginated(newPage, newPerPage, newQuery, additional) {\n const url = PaginationURL(`${this.sourceUrl}/paginated`, newPage, newPerPage, newQuery, additional);\n const promise = fetch('GET', URLUtils.qualifyUrl(url)).then((response) => {\n const {\n elements,\n query,\n attributes,\n pagination: {\n count,\n total,\n page,\n per_page: perPage,\n },\n } = response;\n\n return {\n elements,\n attributes,\n pagination: {\n count,\n total,\n page,\n perPage,\n query,\n },\n };\n });\n\n EventDefinitionsActions.searchPaginated.promise(promise);\n\n return promise;\n },\n get(eventDefinitionId) {\n const promise = fetch('GET', this.eventDefinitionsUrl({ segments: [eventDefinitionId, 'with-context'] }));\n\n promise.catch((error) => {\n if (error.status === 404) {\n UserNotification.error(`Unable to find Event Definition with id <${eventDefinitionId}>, please ensure it wasn't deleted.`,\n 'Could not retrieve Event Definition');\n }\n });\n\n EventDefinitionsActions.get.promise(promise);\n },\n\n setAlertFlag(eventDefinition) {\n const isAlert = eventDefinition.notifications.length > 0;\n\n return { ...eventDefinition, alert: isAlert };\n },\n\n extractSchedulerInfo(eventDefinition) {\n // Removes the internal \"_is_scheduled\" field from the event definition data. We only use this to pass-through\n // the flag from the form.\n const clonedEventDefinition = cloneDeep(eventDefinition);\n const { _is_scheduled } = pick(clonedEventDefinition.config, ['_is_scheduled']);\n\n clonedEventDefinition.config = omit(clonedEventDefinition.config, ['_is_scheduled']);\n\n return { eventDefinition: clonedEventDefinition, isScheduled: defaultTo(_is_scheduled, true) };\n },\n\n create(newEventDefinition) {\n const { eventDefinition, isScheduled } = this.extractSchedulerInfo(newEventDefinition);\n const promise = fetch('POST', this.eventDefinitionsUrl({ query: { schedule: isScheduled } }), this.setAlertFlag(eventDefinition));\n\n promise.then(\n (response) => {\n UserNotification.success('Event Definition created successfully',\n `Event Definition \"${eventDefinition.title}\" was created successfully.`);\n\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Creating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not save Event Definition');\n }\n },\n );\n\n EventDefinitionsActions.create.promise(promise);\n },\n\n copy(eventDefinition) {\n const promise = fetch('POST', this.eventDefinitionsUrl({ segments: [eventDefinition.id, 'duplicate'] }));\n\n promise.then(\n (response) => {\n UserNotification.success('Event Definition duplicated successfully',\n `Event Definition \"${response.title}\" was created successfully.`);\n\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Duplicating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not duplicate Event Definition');\n }\n },\n );\n\n EventDefinitionsActions.copy.promise(promise);\n },\n\n update(eventDefinitionId, updatedEventDefinition) {\n const { eventDefinition, isScheduled } = this.extractSchedulerInfo(updatedEventDefinition);\n const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinitionId], query: { schedule: isScheduled } }), this.setAlertFlag(eventDefinition));\n\n promise.then(\n (response) => {\n UserNotification.success('Event Definition updated successfully',\n `Event Definition \"${eventDefinition.title}\" was updated successfully.`);\n\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Updating Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not update Event Definition');\n }\n },\n );\n\n EventDefinitionsActions.update.promise(promise);\n },\n\n delete(eventDefinition) {\n const promise = fetch('DELETE', this.eventDefinitionsUrl({ segments: [eventDefinition.id] }));\n\n EventDefinitionsActions.delete.promise(promise);\n },\n\n enable(eventDefinition) {\n const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinition.id, 'schedule'] }));\n\n promise.then(\n (response) => {\n UserNotification.success('Event Definition successfully enabled',\n `Event Definition \"${eventDefinition.title}\" was successfully enabled.`);\n\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Enabling Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not enable Event Definition');\n }\n },\n );\n\n EventDefinitionsActions.enable.promise(promise);\n },\n\n disable(eventDefinition) {\n const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinition.id, 'unschedule'] }));\n\n promise.then(\n (response) => {\n UserNotification.success('Event Definition successfully disabled',\n `Event Definition \"${eventDefinition.title}\" was successfully disabled.`);\n\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Disabling Event Definition \"${eventDefinition.title}\" failed with status: ${error}`,\n 'Could not disable Event Definition');\n }\n },\n );\n\n EventDefinitionsActions.disable.promise(promise);\n },\n\n clearNotificationQueue(eventDefinition) {\n const promise = fetch('PUT', this.eventDefinitionsUrl({ segments: [eventDefinition.id, 'clear-notification-queue'] }));\n\n promise.then(\n (response) => {\n UserNotification.success('Queued notifications cleared.',\n 'Queued notifications were successfully cleared.');\n\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Clearing queued notifications failed with status: ${error}`,\n 'Could not clear queued notifications');\n }\n },\n );\n\n EventDefinitionsActions.clearNotificationQueue.promise(promise);\n },\n }),\n);\n"],"names":["___CSS_LOADER_EXPORT___","module","options","update","IconHeader","ConditionalCollapse","condition","wrapper","children","bsStyle","className","collapsible","header","title","defaultExpanded","defaultHeader","wrapChild","FilterPreviewActions","singleton","delay","ms","resolve","FilterPreviewStore","segments","query","uri","nextSegments","URLUtils","searchRequest","newSearch","promise","response","Search","job","search","SearchResult","jobStatus","executionState","jobId","result","UserNotification","messages","index","message","searchResult","isFetchingData","errors","displayPreview","renderedResults","HelpPanel","isPermittedToSeePreview","currentUser","config","stream","FilterPreviewContainer","props","queryId","searchTypeId","formattedStreams","Query","param","generateId","eventDefinition","prevProps","prevQuery","prevQueryParameters","prevStreams","prevSearchWithin","queryParameters","streams","searchWithin","filterPreview","isLoading","connect","CurrentUserStore","otherProps","emptyComparisonExpressionConfig","emptyBooleanExpressionConfig","operator","left","right","emptyGroupExpressionConfig","child","replaceBooleanExpressionOperatorInGroup","nextOperator","expression","nextExpression","flattenValidationTree","validationTree","validateExpressionTree","series","error","selectedSeries","s","validationResults","internalNodePropType","numberExpressionNodePropType","numberRefNodePropType","NumberExpression","onChange","renderLabel","validation","handleChange","event","FormsUtils","formatFunctions","functions","fn","getSeriesId","currentSeries","NumberRefExpression","aggregationFunctions","formattedFields","getSeries","seriesId","_a","_b","createSeries","getOrCreateSeries","handleFieldChange","key","value","nextSeries","nextSeriesId","seriesIndex","handleAggregationFunctionChange","nextFunction","handleAggregationFieldChange","nextField","elements","newValue","OperatorSelector","theme","BooleanOperatorSelect","isFirstElement","BooleanOperatorSelector","initialText","onOperatorChange","BooleanExpression","level","onChildChange","ComparisonExpression","handleExpressionOperatorChange","Group","GroupExpression","handleOperatorChange","globalGroupOperator","defaultOperator","parent","prevOperator","groupExpression","branch","changes","nextUpdate","expressionComponent","Expression","AggregationConditionSummary","conditions","StyledPanel","StyledButton","AggregationConditionsFormSummary","expressionValidation","showInlineValidation","toggleShowValidation","initialEmptyConditionConfig","extractSeriesReferences","acc","StyledAlert","AggregationConditionsForm","nextConditions","seriesReferences","commonStyles","AggregationForm","allFieldTypes","useFieldTypes","ftA","ftB","fieldType","pathname","useLocation","sendTelemetry","useSendTelemetry","propagateConfigChange","nextConfig","handleGroupByChange","selected","nextValue","conditionTypes","initialFilterConfig","initialAggregationConfig","FilterAggregationForm","stateChange","nextConditionType","existingAggregationConfig","group_by","defaultConditionType","conditionType","entityTypes","FilterForm","withStreams","WrappedComponent","hiddenStreams","wrappedComponentName","WithStreams","StreamsStore","filteredStreams","FilterAggregationFormContainer","formatStreamOrId","streamOrId","Routes","getConditionType","groupBy","renderQueryParameters","p","undeclaredParameters","streamIds","streamIdsWithMissingPermission","warning","renderedStreams","id","s1","s2","searchWithinMs","executeEveryMs","isScheduled","event_limit","executeEvery","effectiveStreamIds","LinkToReplaySearch","isEvent","definitionId","searchLink","EventDefinitionsActions","EventDefinitionsStore","page","pageSize","newPage","newPerPage","newQuery","additional","url","attributes","count","total","perPage","eventDefinitionId","isAlert","clonedEventDefinition","_is_scheduled","newEventDefinition","updatedEventDefinition"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy