web-interface.assets.07ba022f-2501.5c77167525f96e2bd977.js.map Maven / Gradle / Ivy
{"version":3,"file":"07ba022f-2501.5c77167525f96e2bd977.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/streamrules/HumanReadableStreamRule.tsx","webpack://graylog-web-interface/./src/components/streamrules/StreamRule.tsx","webpack://graylog-web-interface/./src/components/streamrules/StreamRuleList.tsx","webpack://graylog-web-interface/./src/components/streamrules/StreamRuleModal.tsx","webpack://graylog-web-interface/./src/components/streams/hooks/useStreamRuleTypes.ts","webpack://graylog-web-interface/./src/logic/streams/streamRuleTypes.ts","webpack://graylog-web-interface/./src/components/streams/MatchingTypeSwitcher.jsx","webpack://graylog-web-interface/./src/components/streamrules/StreamRulesEditor.tsx","webpack://graylog-web-interface/./src/pages/StreamEditPage.tsx","webpack://graylog-web-interface/./src/stores/inputs/StreamRulesInputsStore.ts","webpack://graylog-web-interface/./src/stores/streams/StreamRulesStore.ts"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport type { Input } from 'components/messageloaders/Types';\nimport type { StreamRule } from 'stores/streams/StreamsStore';\nimport STREAM_RULE_TYPES from 'logic/streams/streamRuleTypes';\nimport useStreamRuleTypes from 'components/streams/hooks/useStreamRuleTypes';\n\nconst EMPTY_TAG = '';\n\nconst formatRuleValue = (inputs: Array, streamRule: Partial) => {\n if (streamRule.type === STREAM_RULE_TYPES.MATCH_INPUT) {\n const input = inputs.find(({ id }) => id === streamRule.value);\n\n if (input) {\n return `${input.title} (${input.name}: ${input.id})`;\n }\n\n return `: ${streamRule.value})`;\n }\n\n if (streamRule.type !== STREAM_RULE_TYPES.FIELD_PRESENCE) {\n if (streamRule.value) {\n return streamRule.value;\n }\n\n return EMPTY_TAG;\n }\n\n return null;\n};\n\nconst formatRuleField = (streamRule: Partial) => {\n if (streamRule.field) {\n return streamRule.field;\n }\n\n if (streamRule.type === STREAM_RULE_TYPES.MATCH_INPUT) {\n return 'gl_source_input';\n }\n\n return EMPTY_TAG;\n};\n\ntype Props = {\n streamRule: Partial,\n inputs: Array,\n}\n\nconst HumanReadableStreamRule = ({ streamRule, inputs = [] }: Props) => {\n const { data: streamRuleTypes } = useStreamRuleTypes();\n const streamRuleType = streamRuleTypes?.find(({ id }) => id === streamRule.type);\n const negation = (streamRule.inverted ? 'not ' : null);\n const longDesc = (streamRuleType ? streamRuleType.long_desc : null);\n\n if (streamRule.type === STREAM_RULE_TYPES.ALWAYS_MATCHES) {\n return (\n Rule always matches\n );\n }\n\n return (\n \n {formatRuleField(streamRule)} must {negation}{longDesc} {formatRuleValue(inputs, streamRule)}\n \n );\n};\n\nHumanReadableStreamRule.propTypes = {\n streamRule: PropTypes.object.isRequired,\n inputs: PropTypes.array.isRequired,\n};\n\nexport default HumanReadableStreamRule;\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, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport styled from 'styled-components';\n\nimport HumanReadableStreamRule from 'components/streamrules/HumanReadableStreamRule';\nimport { useStore } from 'stores/connect';\nimport { Icon } from 'components/common';\nimport { Button, ListGroupItem } from 'components/bootstrap';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport StreamRuleModal from 'components/streamrules/StreamRuleModal';\nimport UserNotification from 'util/UserNotification';\nimport { StreamRulesInputsActions, StreamRulesInputsStore } from 'stores/inputs/StreamRulesInputsStore';\nimport { StreamRulesStore } from 'stores/streams/StreamRulesStore';\nimport type { StreamRule as StreamRuleTypeDefinition, Stream } from 'stores/streams/StreamsStore';\n\nimport useCurrentUser from '../../hooks/useCurrentUser';\n\nconst ActionButtonsWrap = styled.span`\n margin-right: 6px;\n`;\n\ntype Props = {\n matchData: {\n matches: boolean,\n rules: { [id: string]: false },\n },\n stream: Stream,\n onDelete: (ruleId: string) => void,\n onSubmit: (ruleId: string, data: unknown) => void,\n streamRule: StreamRuleTypeDefinition\n}\n\nconst StreamRule = ({ matchData, stream, streamRule, onSubmit, onDelete }: Props) => {\n const { permissions } = useCurrentUser();\n const [showStreamRuleForm, setShowStreamRuleForm] = useState(false);\n const { inputs } = useStore(StreamRulesInputsStore);\n\n useEffect(() => {\n StreamRulesInputsActions.list();\n }, []);\n\n const _onEdit = (event) => {\n event.preventDefault();\n setShowStreamRuleForm(true);\n };\n\n const _onDelete = (event) => {\n event.preventDefault();\n\n /* TODO: Replace with custom confirmation dialog */\n // eslint-disable-next-line no-alert\n if (window.confirm('Do you really want to delete this stream rule?')) {\n StreamRulesStore.remove(stream.id, streamRule.id, () => {\n if (onDelete) {\n onDelete(streamRule.id);\n }\n\n UserNotification.success('Stream rule has been successfully deleted.', 'Success');\n });\n }\n };\n\n const _onSubmit = (streamRuleId, data) => StreamRulesStore.update(stream.id, streamRuleId, data, () => {\n if (onSubmit) {\n onSubmit(streamRuleId, data);\n }\n\n UserNotification.success('Stream rule has been successfully updated.', 'Success');\n });\n\n const _formatActionItems = () => (\n \n \n \n \n );\n\n const matchDataStyle = () => (matchData.rules[streamRule.id] ? 'success' : 'danger');\n const actionItems = isPermitted(permissions, [`streams:edit:${stream.id}`]) ? _formatActionItems() : null;\n const description = streamRule.description ? {' '}({streamRule.description}) : null;\n const listGroupStyle = !isEmpty(matchData) ? matchDataStyle() : null;\n\n return (\n \n {actionItems}\n \n {showStreamRuleForm && (\n setShowStreamRuleForm(false)}\n title=\"Edit Stream Rule\"\n submitButtonText=\"Update Rule\"\n submitLoadingText=\"Updating Rule...\"\n onSubmit={_onSubmit} />\n )}\n {description}\n \n );\n};\n\nStreamRule.propTypes = {\n matchData: PropTypes.shape({\n matches: PropTypes.bool,\n rules: PropTypes.object,\n }),\n onDelete: PropTypes.func,\n onSubmit: PropTypes.func,\n stream: PropTypes.object.isRequired,\n streamRule: PropTypes.object.isRequired,\n};\n\nStreamRule.defaultProps = {\n matchData: {},\n onSubmit: () => {},\n onDelete: () => {},\n};\n\nexport default StreamRule;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport type { Stream, MatchData } from 'src/stores/streams/StreamsStore';\n\nimport StreamRule from 'components/streamrules/StreamRule';\nimport { Spinner } from 'components/common';\nimport { ListGroup, ListGroupItem } from 'components/bootstrap';\n\ntype Props = {\n matchData: MatchData,\n onDelete: (ruleId: string) => void,\n onSubmit: (ruleId: string, data: unknown) => void,\n stream: Stream | undefined,\n}\n\nconst StreamRuleList = ({\n matchData,\n onDelete,\n onSubmit,\n stream,\n}: Props) => {\n if (!stream) {\n return ;\n }\n\n const hasStreamRules = !!stream.rules.length;\n\n return (\n \n {hasStreamRules && stream.rules.map((streamRule) => (\n \n ))}\n\n {!hasStreamRules && No rules defined. }\n \n );\n};\n\nStreamRuleList.propTypes = {\n matchData: PropTypes.shape({\n matches: PropTypes.bool,\n rules: PropTypes.object,\n }),\n onSubmit: PropTypes.func,\n onDelete: PropTypes.func,\n stream: PropTypes.object.isRequired,\n};\n\nStreamRuleList.defaultProps = {\n matchData: {},\n onSubmit: () => {},\n onDelete: () => {},\n};\n\nexport default StreamRuleList;\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 { Formik, Form, Field } from 'formik';\nimport { useCallback, useMemo, useEffect } from 'react';\n\nimport Version from 'util/Version';\nimport type { StreamRule } from 'stores/streams/StreamsStore';\nimport {\n Icon,\n TypeAheadFieldInput,\n FormikInput,\n Select,\n ModalSubmit,\n InputOptionalInfo,\n Spinner,\n} from 'components/common';\nimport HumanReadableStreamRule from 'components/streamrules//HumanReadableStreamRule';\nimport { Col, Well, Input, Modal, Row } from 'components/bootstrap';\nimport { DocumentationLink } from 'components/support';\nimport DocsHelper from 'util/DocsHelper';\nimport { useStore } from 'stores/connect';\nimport { StreamRulesInputsStore, StreamRulesInputsActions } from 'stores/inputs/StreamRulesInputsStore';\nimport STREAM_RULE_TYPES from 'logic/streams/streamRuleTypes';\nimport useStreamRuleTypes from 'components/streams/hooks/useStreamRuleTypes';\n\ntype FormValues = Partial>\n\nconst shouldDisplayValueInput = (type: number) => type !== STREAM_RULE_TYPES.FIELD_PRESENCE && type !== STREAM_RULE_TYPES.ALWAYS_MATCHES;\nconst shouldDisplayFieldInput = (type: number) => type !== STREAM_RULE_TYPES.ALWAYS_MATCHES && type !== STREAM_RULE_TYPES.MATCH_INPUT;\n\nconst validate = (values: FormValues) => {\n let errors = {};\n\n if (!values.type) {\n errors = { ...errors, type: 'Type is required' };\n }\n\n if (shouldDisplayValueInput(values.type) && !values.value) {\n errors = { ...errors, value: 'Value is required' };\n }\n\n if (shouldDisplayFieldInput(values.type) && !values.field) {\n errors = { ...errors, field: 'Field is required' };\n }\n\n return errors;\n};\n\ntype Props = {\n onSubmit: (streamRuleId: string | undefined | null, currentStreamRule: FormValues) => Promise,\n initialValues?: Partial,\n title: string,\n onClose: () => void,\n submitButtonText: string\n submitLoadingText: string\n};\n\nconst StreamRuleModal = ({\n title,\n onClose,\n submitButtonText,\n submitLoadingText,\n onSubmit,\n initialValues,\n}: Props) => {\n const { inputs } = useStore(StreamRulesInputsStore);\n const { data: streamRuleTypes } = useStreamRuleTypes();\n\n useEffect(() => {\n StreamRulesInputsActions.list();\n }, []);\n\n const _onSubmit = useCallback(\n (values: FormValues) => onSubmit(initialValues?.id, values).then(() => onClose()),\n [onSubmit, initialValues?.id, onClose],\n );\n\n const streamRuleTypesOptions = useMemo(\n () => streamRuleTypes?.map(({ id, short_desc }) => ({\n value: id,\n label: short_desc,\n })),\n\n [streamRuleTypes],\n );\n\n const inputOptions = useMemo(\n () => inputs?.map(({ id, title: inputTitle, name }) => ({ label: `${inputTitle} (${name})`, value: id })),\n [inputs],\n );\n\n return (\n \n initialValues={initialValues} onSubmit={_onSubmit} validate={validate}>\n {({ values, setFieldValue, isSubmitting, isValidating }) => (\n \n )}\n \n \n );\n};\n\nStreamRuleModal.defaultProps = {\n initialValues: {\n field: '',\n type: 1,\n value: '',\n inverted: false,\n description: '',\n },\n};\n\nexport default StreamRuleModal;\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 { useQuery } from '@tanstack/react-query';\n\nimport type { StreamRuleType } from 'stores/streams/StreamsStore';\nimport { StreamRulesStore } from 'stores/streams/StreamRulesStore';\nimport UserNotification from 'util/UserNotification';\n\nconst useStreamRuleTypes = (): { data: Array | undefined } => {\n const { data } = useQuery(\n ['streams', 'rule-types'],\n () => StreamRulesStore.types(),\n {\n onError: (errorThrown) => {\n UserNotification.error(`Loading stream rule types failed with status: ${errorThrown}`,\n 'Could not load stream rule types');\n },\n keepPreviousData: true,\n staleTime: 60 * (60 * 1000), // 1 hour\n },\n );\n\n return ({ data });\n};\n\nexport default useStreamRuleTypes;\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\n// The actual stream types will be provided by the backend.\n// This map is only being used for frontend related logic.\nconst STREAM_RULE_TYPES = {\n FIELD_PRESENCE: 5,\n ALWAYS_MATCHES: 7,\n MATCH_INPUT: 8,\n};\n\nexport default STREAM_RULE_TYPES;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Input } from 'components/bootstrap';\nimport UserNotification from 'util/UserNotification';\nimport StreamsStore from 'stores/streams/StreamsStore';\n\nconst StreamRuleConnector = styled.div(({ theme }) => css`\n margin-top: 10px;\n margin-bottom: 13px;\n\n label {\n font-size: ${theme.fonts.size.small};\n }\n\n .form-group {\n margin-bottom: 5px;\n }\n\n .radio {\n margin-top: 0;\n margin-bottom: 0;\n }\n\n input[type='radio'] {\n margin-top: 2px;\n margin-bottom: 2px;\n }\n`);\n\nclass MatchingTypeSwitcher extends React.Component {\n static propTypes = {\n stream: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n handleTypeChangeToAnd = () => {\n this.handleTypeChange('AND');\n };\n\n handleTypeChangeToOr = () => {\n this.handleTypeChange('OR');\n };\n\n handleTypeChange = (newValue) => {\n const { onChange, stream } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm('You are about to change how rules are applied to this stream, do you want to continue? Changes will take effect immediately.')) {\n StreamsStore.update(stream.id, { matching_type: newValue }, (response) => {\n onChange();\n\n UserNotification.success(`Messages will now be routed into the stream when ${newValue === 'AND' ? 'all' : 'any'} rules are matched`,\n 'Success');\n\n return response;\n });\n }\n };\n\n render() {\n const { stream } = this.props;\n\n return (\n \n \n \n \n \n \n );\n }\n}\n\nexport default MatchingTypeSwitcher;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { LinkContainer } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport { Button, Col, Panel, Row } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport LoaderTabs from 'components/messageloaders/LoaderTabs';\nimport MatchingTypeSwitcher from 'components/streams/MatchingTypeSwitcher';\nimport StreamRuleList from 'components/streamrules/StreamRuleList';\nimport StreamRuleModal from 'components/streamrules/StreamRuleModal';\nimport Spinner from 'components/common/Spinner';\nimport type { MatchData } from 'stores/streams/StreamsStore';\nimport StreamsStore from 'stores/streams/StreamsStore';\nimport { StreamRulesStore } from 'stores/streams/StreamRulesStore';\n\nimport useStream from '../streams/hooks/useStream';\n\nconst StreamAlertHeader = styled(Panel.Heading)`\n font-weight: bold;\n`;\n\nconst MatchIcon = styled(Icon)<{ $empty?: boolean, $matches?: boolean }>(({ theme, $empty, $matches }) => {\n const matchColor = $matches ? theme.colors.variant.success : theme.colors.variant.danger;\n\n return css`\n color: ${$empty ? theme.colors.variant.info : matchColor};\n margin-right: 3px;\n`;\n});\n\nconst StyledSpinner = styled(Spinner)`\n margin-left: 10px;\n`;\n\nconst getListClassName = (matchData) => (matchData.matches ? 'success' : 'danger');\n\ntype Props = {\n streamId: string,\n messageId: string | undefined,\n index: string,\n}\n\nconst StreamRulesEditor = ({ streamId, messageId, index }: Props) => {\n const [showStreamRuleForm, setShowStreamRuleForm] = useState(false);\n const [message, setMessage] = useState<{ [fieldName: string]: unknown } | undefined>();\n const [matchData, setMatchData] = useState();\n const { data: stream, refetch } = useStream(streamId);\n\n useEffect(() => {\n const refetchStrems = () => refetch();\n StreamsStore.onChange(refetchStrems);\n StreamRulesStore.onChange(refetchStrems);\n\n return () => {\n StreamsStore.unregister(refetchStrems);\n StreamRulesStore.unregister(refetchStrems);\n };\n }, [refetch]);\n\n const onMessageLoaded = (newMessage) => {\n setMessage(newMessage);\n\n if (message !== undefined) {\n StreamsStore.testMatch(streamId, { message: message.fields }, (resultData) => {\n setMatchData(resultData);\n });\n } else {\n setMatchData(undefined);\n }\n };\n\n const _onStreamRuleFormSubmit = (_streamRuleId: string, data) => StreamRulesStore.create(streamId, data, () => {});\n\n const _onAddStreamRule = (event) => {\n event.preventDefault();\n setShowStreamRuleForm(true);\n };\n\n const styles = (matchData ? getListClassName(matchData) : 'info');\n\n if (!stream) {\n return (\n \n \n
\n );\n }\n\n return (\n \n \n 1. Load a message to test rules
\n\n \n \n \n\n
\n\n \n \n {showStreamRuleForm && (\n setShowStreamRuleForm(false)}\n submitButtonText=\"Create Rule\"\n submitLoadingText=\"Creating Rule...\"\n onSubmit={_onStreamRuleFormSubmit} />\n )}\n \n\n 2. Manage stream rules
\n\n \n \n \n {matchData?.matches && (\n <>\n This message would be routed to this stream!\n >\n )}\n\n {(matchData && !matchData.matches) && (\n <>\n This message would not be routed to this stream.\n >\n )}\n\n {!matchData && (\n <>\n Please load a message in Step 1 above to check if it would match against these rules.\n >\n )}\n \n \n \n\n \n \n \n \n
\n \n
\n );\n};\n\nStreamRulesEditor.propTypes = {\n streamId: PropTypes.string.isRequired,\n messageId: PropTypes.string,\n index: PropTypes.string,\n};\n\nStreamRulesEditor.defaultProps = {\n messageId: '',\n index: '',\n};\n\nexport default StreamRulesEditor;\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';\nimport { useParams } from 'react-router-dom';\n\nimport { Alert } from 'components/bootstrap';\nimport StreamRulesEditor from 'components/streamrules/StreamRulesEditor';\nimport { DocumentTitle, PageHeader, Spinner } from 'components/common';\nimport useQuery from 'routing/useQuery';\nimport DocsHelper from 'util/DocsHelper';\nimport useStream from 'components/streams/hooks/useStream';\n\nconst StreamEditPage = () => {\n const params = useParams<{ streamId: string }>();\n const query = useQuery() as { index: string, message_id: string };\n const { data: stream } = useStream(params.streamId);\n\n if (!stream) {\n return ;\n }\n\n return (\n \n \n Rules of Stream "{stream.title}"}\n documentationLink={{\n title: 'Streams documentation',\n path: DocsHelper.PAGES.STREAMS,\n }}>\n \n This screen is dedicated to an easy and comfortable creation and manipulation of stream rules. You can{' '}\n see the effect configured stream rules have on message matching here.\n \n \n\n {!stream.is_default && (\n \n )}\n\n {stream.is_default && (\n \n \n \n The default stream cannot be edited.\n \n \n \n )}\n \n \n );\n};\n\nexport default StreamEditPage;\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 Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport type { Input } from 'components/messageloaders/Types';\n\nexport type PaginatedStreamRulesInputs = {\n list: Array,\n};\n\ntype StreamRulesInputsActionsType = {\n list: () => Promise<{ inputs: Array, total: number }>,\n}\n\ntype StreamRulesInputsStoreState = {\n inputs: Array | undefined,\n}\n\nexport const StreamRulesInputsActions = singletonActions(\n 'core.StreamRulesInputs',\n () => Reflux.createActions({\n list: { asyncResult: true },\n }),\n);\n\nexport const StreamRulesInputsStore = singletonStore(\n 'core.StreamRulesInputs',\n () => Reflux.createStore({\n listenables: [StreamRulesInputsActions],\n sourceUrl: '/streams/rules/inputs',\n inputs: undefined,\n\n init() {\n this.list();\n },\n\n _state() {\n return { inputs: this.inputs };\n },\n\n getInitialState() {\n return this._state();\n },\n\n list() {\n const promise = fetch('GET', qualifyUrl(this.sourceUrl));\n\n promise\n .then(\n (response) => {\n this.inputs = response.inputs;\n this.trigger(this._state());\n\n return this.inputs;\n },\n (error) => {\n UserNotification.error(`Fetching Stream Rule Inputs List failed with status: ${error}`,\n 'Could not retrieve Stream Rule Inputs');\n },\n );\n\n StreamRulesInputsActions.list.promise(promise);\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 */\nimport Reflux from 'reflux';\nimport pull from 'lodash/pull';\n\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport { singletonStore } from 'logic/singleton';\n\ntype StreamRule = {\n field: string,\n type: number,\n value: string,\n inverted: boolean,\n description: string,\n};\n\ntype Callback = {\n (): void,\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const StreamRulesStore = singletonStore(\n 'core.StreamRules',\n () => Reflux.createStore({\n callbacks: [],\n\n types() {\n const url = '/streams/null/rules/types';\n const promise = fetch('GET', URLUtils.qualifyUrl(url));\n\n return promise;\n },\n update(streamId: string, streamRuleId: string, data: StreamRule, callback: (() => void)) {\n const failCallback = (error) => {\n UserNotification.error(`Updating Stream Rule failed with status: ${error}`,\n 'Could not update Stream Rule');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.update(streamId, streamRuleId).url);\n const request = {\n field: data.field,\n type: data.type,\n value: data.value,\n inverted: data.inverted,\n description: data.description,\n };\n\n return fetch('PUT', url, request)\n .then(callback, failCallback)\n .then(this._emitChange.bind(this));\n },\n remove(streamId: string, streamRuleId: string, callback: (() => void)) {\n const failCallback = (error) => {\n UserNotification.error(`Deleting Stream Rule failed with status: ${error}`,\n 'Could not delete Stream Rule');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.delete(streamId, streamRuleId).url);\n\n fetch('DELETE', url)\n .then(callback, failCallback)\n .then(this._emitChange.bind(this));\n },\n create(streamId: string, data: StreamRule, callback: (() => void)) {\n const failCallback = (error) => {\n UserNotification.error(`Creating Stream Rule failed with status: ${error}`,\n 'Could not create Stream Rule');\n };\n\n const url = URLUtils.qualifyUrl(ApiRoutes.StreamRulesApiController.create(streamId).url);\n\n return fetch('POST', url, data)\n .then(callback, failCallback)\n .then(this._emitChange.bind(this));\n },\n onChange(callback: Callback) {\n this.callbacks.push(callback);\n },\n _emitChange() {\n this.callbacks.forEach((callback) => callback());\n },\n unregister(callback: Callback) {\n pull(this.callbacks, callback);\n },\n }),\n);\n"],"names":["EMPTY_TAG","formatRuleValue","inputs","streamRule","input","id","formatRuleField","HumanReadableStreamRule","streamRuleTypes","streamRuleType","negation","longDesc","ActionButtonsWrap","StreamRule","matchData","stream","onSubmit","onDelete","permissions","useCurrentUser","showStreamRuleForm","setShowStreamRuleForm","StreamRulesInputsStore","_onEdit","event","_onDelete","StreamRulesStore","UserNotification","_onSubmit","streamRuleId","data","_formatActionItems","matchDataStyle","actionItems","description","listGroupStyle","StreamRuleModal","StreamRuleList","hasStreamRules","shouldDisplayValueInput","type","shouldDisplayFieldInput","validate","values","errors","title","onClose","submitButtonText","submitLoadingText","initialValues","streamRuleTypesOptions","short_desc","inputOptions","inputTitle","name","setFieldValue","isSubmitting","isValidating","value","onChange","onBlur","error","touched","newValue","errorThrown","StreamRuleConnector","theme","MatchingTypeSwitcher","StreamsStore","response","StreamAlertHeader","MatchIcon","$empty","$matches","matchColor","StyledSpinner","Spinner","getListClassName","StreamRulesEditor","streamId","messageId","index","message","setMessage","setMatchData","refetch","useStream","refetchStrems","onMessageLoaded","newMessage","resultData","_onStreamRuleFormSubmit","_streamRuleId","_onAddStreamRule","styles","LoaderTabs","Routes","params","query","useQuery","DocsHelper","StreamRulesInputsActions","promise","url","callback","failCallback","request"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy