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

web-interface.assets.1255d548-6800.29ab0d5405adc761e098.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"1255d548-6800.29ab0d5405adc761e098.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/extractors/AddExtractorWizard.jsx","webpack://graylog-web-interface/./src/components/extractors/ExtractorsListItem.jsx","webpack://graylog-web-interface/./src/components/extractors/ExtractorSortModal.jsx","webpack://graylog-web-interface/./src/components/extractors/ExtractorsList.jsx","webpack://graylog-web-interface/./src/pages/ExtractorsPage.jsx","webpack://graylog-web-interface/./src/routing/withParams.tsx","webpack://graylog-web-interface/./src/stores/extractors/ExtractorsStore.js"],"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 { Row, Col, Button } from 'components/bootstrap';\nimport LoaderTabs from 'components/messageloaders/LoaderTabs';\nimport MessageFieldExtractorActions from 'components/search/MessageFieldExtractorActions';\n\nclass AddExtractorWizard extends React.Component {\n  static propTypes = {\n    inputId: PropTypes.string,\n  };\n\n  static defaultProps = {\n    inputId: undefined,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      showExtractorForm: false,\n    };\n  }\n\n  _showAddExtractorForm = () => {\n    this.setState(({ showExtractorForm }) => ({ showExtractorForm: !showExtractorForm }));\n  };\n\n  render() {\n    let extractorForm;\n\n    if (this.state.showExtractorForm) {\n      // Components using this component, will give it a proper fieldName and message\n      const extractorFieldActions = ;\n\n      extractorForm = (\n        
\n \n
\n );\n }\n\n return (\n \n \n

Add extractor

\n\n

\n Start by loading a message to have an example to work on. You can decide whether to load a recent message\n received by this input, or manually select a message giving its ID.\n

\n

\n \n

\n\n {extractorForm}\n \n
\n );\n }\n}\n\nexport default AddExtractorWizard;\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 numeral from 'numeral';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Button, Row, Col, Well } from 'components/bootstrap';\nimport EntityListItem from 'components/common/EntityListItem';\nimport ExtractorUtils from 'util/ExtractorUtils';\nimport Routes from 'routing/Routes';\nimport { ExtractorsActions } from 'stores/extractors/ExtractorsStore';\n\nconst TimingMetrics = ({ timing }) => (\n
\n
95th percentile:
\n
{numeral(timing['95th_percentile']).format('0,0.[00]')}μs
\n\n
98th percentile:
\n
{numeral(timing['98th_percentile']).format('0,0.[00]')}μs
\n\n
99th percentile:
\n
{numeral(timing['99th_percentile']).format('0,0.[00]')}μs
\n\n
Standard deviation:
\n
{numeral(timing.std_dev).format('0,0.[00]')}μs
\n\n
Mean:
\n
{numeral(timing.mean).format('0,0.[00]')}μs
\n\n
Minimum:
\n
{numeral(timing.min).format('0,0.[00]')}μs
\n\n
Maximum:
\n
{numeral(timing.max).format('0,0.[00]')}μs
\n
\n);\n\nTimingMetrics.propTypes = {\n timing: PropTypes.object.isRequired,\n};\n\nconst Metrics = ({ metrics }) => {\n let totalRate;\n\n if (metrics.total.rate) {\n totalRate = (\n
\n {numeral(metrics.total.rate.total).format('0,0')} total invocations since boot,{' '}\n averages:{' '}\n {numeral(metrics.total.rate.one_minute).format('0,0.[00]')},{' '}\n {numeral(metrics.total.rate.five_minute).format('0,0.[00]')},{' '}\n {numeral(metrics.total.rate.fifteen_minute).format('0,0.[00]')}.\n
\n );\n }\n\n const conditionCounts = (\n
\n {metrics.condition_hits} hits,{' '}\n {metrics.condition_misses} misses\n
\n );\n\n let totalTime;\n\n if (metrics.total.time) {\n totalTime = ;\n } else {\n totalTime = 'No message passed through here yet.';\n }\n\n let conditionTime;\n\n if (metrics.condition.time) {\n conditionTime = ;\n } else {\n conditionTime = 'No message passed through here yet.';\n }\n\n let executionTime;\n\n if (metrics.execution.time) {\n executionTime = ;\n } else {\n executionTime = 'No message passed through here yet.';\n }\n\n let convertersTime;\n\n if (metrics.converters.time) {\n convertersTime = ;\n } else {\n convertersTime = 'No message passed through here yet.';\n }\n\n return (\n
\n {totalRate}\n {conditionCounts}\n \n \n

Total time


\n {totalTime}\n \n \n

Condition time


\n {conditionTime}\n \n \n

Execution time


\n {executionTime}\n \n \n

Converter time


\n {convertersTime}\n \n
\n
\n );\n};\n\nMetrics.propTypes = {\n metrics: PropTypes.object.isRequired,\n};\n\nclass ExtractorsListItem extends React.Component {\n static propTypes = {\n extractor: PropTypes.object.isRequired,\n inputId: PropTypes.string.isRequired,\n nodeId: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showDetails: false,\n };\n }\n\n _toggleDetails = () => {\n const { showDetails } = this.state;\n\n this.setState({ showDetails: !showDetails });\n };\n\n _deleteExtractor = () => {\n const { extractor, inputId } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Really remove extractor \"${extractor.title}?\"`)) {\n ExtractorsActions.delete.triggerPromise(inputId, extractor);\n }\n };\n\n _formatExtractorSubtitle = () => {\n const { extractor } = this.props;\n\n return (\n \n Trying to extract data from {extractor.source_field} into{' '}\n {extractor.target_field},{' '}\n {extractor.cursor_strategy === 'cut' && 'not'}{' '}\n leaving the original intact.\n \n );\n };\n\n _formatCondition = () => {\n const { extractor } = this.props;\n\n if (extractor.condition_type === 'none') {\n return
;\n }\n\n return (\n
\n

Condition

\n
    \n
  • \n Will only attempt to run if the message{' '}\n {extractor.condition_type === 'string' ? 'includes the string' : 'matches the regular expression'}{' '}\n {extractor.condition_value}\n
  • \n
\n
\n );\n };\n\n _formatActions = () => {\n const actions = [];\n const { extractor, nodeId, inputId } = this.props;\n\n actions.push(\n ,\n );\n\n actions.push(\n \n \n ,\n );\n\n actions.push();\n\n return actions;\n };\n\n _formatOptions = (options) => {\n const { extractor } = this.props;\n\n const attributes = Object.keys(options);\n\n return attributes.map((attribute) =>
  • {attribute}: {options[attribute]}
  • );\n };\n\n _formatConfiguration = (extractorConfig) => {\n let formattedOptions = this._formatOptions(extractorConfig);\n\n if (formattedOptions.length === 0) {\n formattedOptions =
  • No configuration options
  • ;\n }\n\n return (\n
    \n

    Configuration

    \n
      \n {formattedOptions}\n
    \n
    \n );\n };\n\n _formatConverter = (key, converter) => (\n
  • \n {converter.type}\n {converter.config &&
      {this._formatOptions(converter.config)}
    }\n
  • \n );\n\n _formatConverters = (converters) => {\n const converterKeys = Object.keys(converters);\n const formattedConverters = converterKeys.map((converterKey) => this._formatConverter(converterKey, converters[converterKey]));\n\n if (formattedConverters.length === 0) {\n return
    ;\n }\n\n return (\n
    \n

    Converters

    \n
      \n {formattedConverters}\n
    \n
    \n );\n };\n\n _formatDetails = () => {\n const { extractor } = this.props;\n\n return (\n
    \n \n \n {this._formatCondition()}\n {this._formatConfiguration(extractor.extractor_config)}\n {this._formatConverters(extractor.converters)}\n \n \n \n
    \n

    Metrics

    \n \n
    \n \n
    \n );\n };\n\n render() {\n const { extractor } = this.props;\n const { showDetails } = this.state;\n\n return (\n \n );\n }\n}\n\nexport default ExtractorsListItem;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Row, Col, Modal, BootstrapModalWrapper } from 'components/bootstrap';\nimport SortableList from 'components/common/SortableList';\nimport { ExtractorsActions } from 'stores/extractors/ExtractorsStore';\nimport { ModalSubmit } from 'components/common/index';\n\nclass ExtractorSortModal extends React.Component {\n static propTypes = {\n input: PropTypes.object.isRequired,\n extractors: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n onSort: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n sortedExtractors: props.extractors,\n };\n }\n\n _cancel = () => {\n const { extractors, onClose } = this.props;\n\n onClose();\n\n this.setState({\n sortedExtractors: extractors,\n });\n };\n\n _updateSorting = (newSorting) => {\n this.setState({\n sortedExtractors: newSorting,\n });\n };\n\n _saveSorting = async () => {\n const { input, onClose, onSort } = this.props;\n const { sortedExtractors } = this.state;\n\n if (!sortedExtractors) {\n onClose();\n }\n\n await ExtractorsActions.order.triggerPromise(input.id, sortedExtractors);\n\n onSort();\n onClose();\n };\n\n render() {\n const { sortedExtractors } = this.state;\n const { input } = this.props;\n\n return (\n \n \n \n Sort extractors for {input.title}\n \n \n \n

    Drag and drop the extractors on the list to change the order in which they will be applied.

    \n \n \n \n \n \n
    \n \n \n \n
    \n );\n }\n}\n\nexport default ExtractorSortModal;\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 * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { Row, Col, Button } from 'components/bootstrap';\nimport Spinner from 'components/common/Spinner';\nimport AddExtractorWizard from 'components/extractors/AddExtractorWizard';\nimport EntityList from 'components/common/EntityList';\nimport { ExtractorsActions } from 'stores/extractors/ExtractorsStore';\n\nimport ExtractorsListItem from './ExtractorsListItem';\nimport ExtractorsSortModal from './ExtractorSortModal';\n\nconst fetchExtractors = (inputId, callback) => {\n ExtractorsActions.list.triggerPromise(inputId).then((data) => callback(data?.extractors));\n};\n\nconst ExtractorsList = ({ input, node }) => {\n const [extractors, setExtractors] = useState(null);\n const [showSortModal, setShowSortModal] = useState(false);\n\n useEffect(() => {\n fetchExtractors(input.id, setExtractors);\n }, [input.id]);\n\n const _formatExtractor = (extractor) => (\n \n );\n\n const _isLoading = () => !extractors;\n\n const _openSortModal = () => {\n setShowSortModal(true);\n };\n\n let sortExtractorsButton;\n\n if (extractors?.length > 1) {\n sortExtractorsButton = (\n \n );\n }\n\n const formattedExtractors = extractors\n ?.sort((extractor1, extractor2) => extractor1.order - extractor2.order)\n .map(_formatExtractor);\n\n if (_isLoading()) {\n return ;\n }\n\n return (\n
    \n \n \n \n \n \n

    Configured extractors

    \n \n \n {sortExtractorsButton}\n \n
    \n \n \n
    \n {showSortModal && (\n setShowSortModal(false)}\n onSort={() => fetchExtractors(input.id, setExtractors)} />\n )}\n
    \n );\n};\n\nExtractorsList.propTypes = {\n input: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n};\n\nexport default ExtractorsList;\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// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\n\nimport { LinkContainer } from 'components/common/router';\nimport { DocumentTitle, Spinner } from 'components/common';\nimport PageHeader from 'components/common/PageHeader';\nimport ExtractorsList from 'components/extractors/ExtractorsList';\nimport { DropdownButton, MenuItem } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport DocsHelper from 'util/DocsHelper';\nimport withParams from 'routing/withParams';\nimport { InputsActions } from 'stores/inputs/InputsStore';\nimport { NodesActions, NodesStore } from 'stores/nodes/NodesStore';\n\nconst ExtractorsPage = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n displayName: 'ExtractorsPage',\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n propTypes: {\n params: PropTypes.object.isRequired,\n },\n\n mixins: [Reflux.listenTo(NodesStore, 'onNodesChange')],\n\n getInitialState() {\n return {\n node: undefined,\n };\n },\n\n componentDidMount() {\n const { params } = this.props;\n\n InputsActions.get(params.inputId).then((input) => this.setState({ input }));\n NodesActions.list();\n },\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n onNodesChange(nodes) {\n const { params } = this.props;\n const newNode = params.nodeId ? nodes.nodes[params.nodeId] : Object.values(nodes.nodes).filter((node) => node.is_leader)[0];\n\n const { node } = this.state;\n\n if (!node || node.node_id !== newNode.node_id) {\n this.setState({ node: newNode });\n }\n },\n\n _isLoading() {\n const { node, input } = this.state;\n\n return !(input && node);\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { node, input } = this.state;\n\n return (\n \n
    \n Extractors of {input.title}}\n actions={(\n \n \n Import extractors\n \n \n Export extractors\n \n \n )}\n documentationLink={{\n title: 'Extractors documentation',\n path: DocsHelper.PAGES.EXTRACTORS,\n }}>\n \n Extractors are applied on every message that is received by this input. Use them to extract and transform{' '}\n any text data into fields that allow you easy filtering and analysis later on.{' '}\n Example: Extract the HTTP response code from a log message, transform it to a numeric field and attach it{' '}\n as http_response_code to the message.\n \n \n \n
    \n
    \n );\n },\n});\n\nexport default withParams(ExtractorsPage);\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 { useParams } from 'react-router-dom';\nimport type { Subtract } from 'utility-types';\n\ntype ParamsContext = {\n params: {\n [key: string]: string | null | undefined;\n };\n};\n\nconst withParams = (Component: React.ComponentType): React.ComponentType> => (props) => {\n const params = useParams();\n\n return ;\n};\n\nexport default withParams;\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';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ExtractorUtils from 'util/ExtractorUtils';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const ExtractorsActions = singletonActions(\n 'core.Extractors',\n () => Reflux.createActions({\n list: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n save: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n order: { asyncResult: true },\n import: {},\n }),\n);\n\nfunction getExtractorDTO(extractor) {\n const conditionValue = extractor.condition_type && extractor.condition_type !== 'none' ? extractor.condition_value : '';\n\n return {\n title: extractor.title,\n cursor_strategy: extractor.cursor_strategy || 'copy',\n source_field: extractor.source_field,\n target_field: extractor.target_field,\n extractor_type: extractor.type || extractor.extractor_type, // \"extractor_type\" needed for imports\n extractor_config: extractor.extractor_config,\n converters: extractor.converters,\n condition_type: extractor.condition_type || 'none',\n condition_value: conditionValue,\n order: extractor.order,\n };\n}\n\nexport const ExtractorsStore = singletonStore(\n 'core.Extractors',\n () => Reflux.createStore({\n listenables: [ExtractorsActions],\n sourceUrl: '/system/inputs/',\n extractors: undefined,\n extractor: undefined,\n\n init() {\n this.trigger({ extractors: this.extractors, extractor: this.extractor });\n },\n\n list(inputId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl, inputId, 'extractors')));\n\n promise.then((response) => {\n this.extractors = response.extractors;\n this.trigger({ extractors: this.extractors });\n });\n\n ExtractorsActions.list.promise(promise);\n },\n\n // Creates an basic extractor object that we can use to create new extractors.\n new(type, field) {\n if (ExtractorUtils.EXTRACTOR_TYPES.indexOf(type) === -1) {\n throw new Error(`Invalid extractor type provided: ${type}`);\n }\n\n return {\n type: type,\n source_field: field,\n converters: [],\n extractor_config: {},\n target_field: '',\n };\n },\n\n get(inputId, extractorId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(URLUtils.concatURLPath(this.sourceUrl, inputId, 'extractors', extractorId)));\n\n promise.then((response) => {\n this.extractor = response;\n this.trigger({ extractor: this.extractor });\n });\n\n ExtractorsActions.get.promise(promise);\n },\n\n save(inputId, extractor) {\n let promise;\n\n if (extractor.id) {\n promise = this.update(inputId, extractor, true);\n } else {\n promise = this.create(inputId, extractor, true);\n }\n\n ExtractorsActions.save.promise(promise);\n },\n\n _silentExtractorCreate(inputId, extractor) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.create(inputId).url);\n\n return fetch('POST', url, getExtractorDTO(extractor));\n },\n\n create(inputId, extractor, calledFromMethod) {\n const promise = this._silentExtractorCreate(inputId, extractor);\n\n promise\n .then(() => {\n UserNotification.success(`Extractor ${extractor.title} created successfully`);\n\n if (this.extractor) {\n ExtractorsActions.get.triggerPromise(inputId, extractor.id);\n }\n })\n .catch((error) => {\n UserNotification.error(`Creating extractor failed: ${error}`,\n 'Could not create extractor');\n });\n\n if (!calledFromMethod) {\n ExtractorsActions.create.promise(promise);\n }\n\n return promise;\n },\n\n update(inputId, extractor, calledFromMethod) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.update(inputId, extractor.id).url);\n\n const promise = fetch('PUT', url, getExtractorDTO(extractor));\n\n promise\n .then(() => {\n UserNotification.success(`Extractor \"${extractor.title}\" updated successfully`);\n\n if (this.extractor) {\n ExtractorsActions.get.triggerPromise(inputId, extractor.id);\n }\n })\n .catch((error) => {\n UserNotification.error(`Updating extractor failed: ${error}`,\n 'Could not update extractor');\n });\n\n if (!calledFromMethod) {\n ExtractorsActions.update.promise(promise);\n }\n\n return promise;\n },\n\n delete(inputId, extractor) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.delete(inputId, extractor.id).url);\n\n const promise = fetch('DELETE', url);\n\n promise\n .then(() => {\n UserNotification.success(`Extractor \"${extractor.title}\" deleted successfully`);\n\n if (this.extractors) {\n ExtractorsActions.list.triggerPromise(inputId);\n }\n })\n .catch((error) => {\n UserNotification.error(`Deleting extractor failed: ${error}`,\n `Could not delete extractor ${extractor.title}`);\n });\n\n ExtractorsActions.delete.promise(promise);\n },\n\n order(inputId, orderedExtractors) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.order(inputId).url);\n const orderedExtractorsMap = {};\n\n orderedExtractors.forEach((extractor, idx) => {\n orderedExtractorsMap[idx] = extractor.id;\n });\n\n const promise = fetch('POST', url, { order: orderedExtractorsMap });\n\n promise.then(() => {\n UserNotification.success('Extractor positions updated successfully');\n\n if (this.extractors) {\n ExtractorsActions.list.triggerPromise(inputId);\n }\n });\n\n promise.catch((error) => {\n UserNotification.error(`Changing extractor positions failed: ${error}`,\n 'Could not update extractor positions');\n });\n\n ExtractorsActions.order.promise(promise);\n },\n\n import(inputId, extractors) {\n let successfulImports = 0;\n let failedImports = 0;\n const promises = [];\n\n extractors.forEach((extractor) => {\n const promise = this._silentExtractorCreate(inputId, extractor);\n\n promise\n .then(() => { successfulImports += 1; })\n .catch(() => { failedImports += 1; });\n\n promises.push(promise);\n });\n\n Promise.allSettled(promises).then(() => {\n if (failedImports === 0) {\n UserNotification.success(`Import results: ${successfulImports} extractor(s) imported.`,\n 'Import operation successful');\n } else {\n UserNotification.warning(`Import results: ${successfulImports} extractor(s) imported, ${failedImports} error(s).`,\n 'Import operation completed');\n }\n });\n },\n }),\n);\n"],"names":["AddExtractorWizard","props","showExtractorForm","extractorForm","extractorFieldActions","MessageFieldExtractorActions","LoaderTabs","TimingMetrics","timing","Metrics","metrics","totalRate","conditionCounts","totalTime","conditionTime","executionTime","convertersTime","ExtractorsListItem","showDetails","extractor","inputId","actions","nodeId","Routes","options","attribute","extractorConfig","formattedOptions","key","converter","converters","formattedConverters","converterKey","EntityListItem","ExtractorUtils","ExtractorSortModal","extractors","onClose","newSorting","input","onSort","sortedExtractors","SortableList","fetchExtractors","callback","data","ExtractorsList","node","setExtractors","showSortModal","setShowSortModal","_formatExtractor","_isLoading","_openSortModal","sortExtractorsButton","formattedExtractors","extractor1","extractor2","Spinner","EntityList","ExtractorsPage","NodesStore","params","nodes","newNode","PageHeader","DocsHelper","withParams","Component","ExtractorsActions","getExtractorDTO","conditionValue","ExtractorsStore","promise","response","type","field","extractorId","url","calledFromMethod","error","orderedExtractors","orderedExtractorsMap","idx","successfulImports","failedImports","promises"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy