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

web-interface.assets.bb8c8232-3861.5c075b20178a60bf0631.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"bb8c8232-3861.5c075b20178a60bf0631.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.tsx","webpack://graylog-web-interface/./src/pages/ExtractorsPage.jsx","webpack://graylog-web-interface/./src/routing/withParams.tsx","webpack://graylog-web-interface/./src/stores/extractors/ExtractorsStore.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 { 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, ExtractorsStore } from 'stores/extractors/ExtractorsStore';\nimport type { ExtractorType, InputSummary, NodeSummary } from 'stores/extractors/ExtractorsStore';\nimport { useStore } from 'stores/connect';\n\nimport ExtractorsListItem from './ExtractorsListItem';\nimport ExtractorsSortModal from './ExtractorSortModal';\n\ntype Props = {\n input: InputSummary,\n node: NodeSummary,\n};\n\nconst fetchExtractors = (inputId: string) => {\n ExtractorsActions.list(inputId);\n};\n\nconst ExtractorsList = ({ input, node }: Props) => {\n const [showSortModal, setShowSortModal] = useState(false);\n const extractors = useStore(ExtractorsStore, (state) => state.extractors);\n\n useEffect(() => {\n fetchExtractors(input.id);\n }, [input.id]);\n\n const _formatExtractor = (extractor: ExtractorType) => (\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)} />\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 { 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 Import extractors\n Export extractors\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 type InputSummary = {\n creator_user_id: string;\n node: string;\n name: string;\n created_at: string;\n global: boolean;\n attributes: {\n [_key: string]: Object;\n };\n id: string;\n title: string;\n type: string;\n content_pack: string;\n static_fields: {\n [_key: string]: string;\n };\n};\n\nexport type NodeSummary = {\n cluster_id: string,\n hostname: string,\n is_leader: boolean,\n is_master: boolean,\n last_seen: string,\n node_id: string,\n short_node_id: string,\n transport_address: string,\n type: string,\n};\n\ntype RateMetricsResponse = {\n total: number,\n mean: number,\n five_minute: number,\n fifteen_minute: number,\n one_minute: number,\n};\n\ntype TimerMetricsResponse = {\n min: number,\n max: number,\n std_dev: number,\n mean: number,\n '95th_percentile': number,\n '99th_percentile': number,\n '98th_percentile': number,\n};\n\ntype TimerRateMetricsResponse = {\n rate: RateMetricsResponse,\n rate_unit: string,\n time: TimerMetricsResponse,\n duration_unit: string,\n};\n\nexport type ExtractorMetrics = {\n condition_misses: number,\n execution: TimerRateMetricsResponse,\n total: TimerRateMetricsResponse,\n condition: TimerRateMetricsResponse,\n condition_hits: number,\n converters: TimerRateMetricsResponse,\n};\n\nexport type ExtractorType = {\n creator_user_id: string,\n extractor_type?: string,\n source_field: string,\n condition_type: string,\n converter_exceptions: number,\n title: string,\n type: string,\n cursor_strategy: string,\n exceptions: number,\n target_field: string,\n extractor_config: {\n [_key: string]: Object,\n },\n condition_value: string,\n converters: {\n [_key: string]: Object,\n }[],\n id?: string,\n metrics: ExtractorMetrics,\n order: number,\n};\n\ntype ExtractorsActionsType = {\n list: (inputId: string) => Promise>,\n get: (inputId: string, extractorId: string) => Promise,\n create: (inputId: string, extractor: ExtractorType, calledFromMethod: boolean) => Promise,\n save: (inputId: string, extractor: ExtractorType) => Promise,\n update: (inputId: string, extractor: ExtractorType, calledFromMethod: boolean) => Promise,\n delete: (inputId: string, extractor: ExtractorType) => Promise,\n order: { asyncResult: true },\n import: (inputId: string, orderedExtractors: Array) => Promise,\n};\n\nexport type ExtractorsStoreState = {\n extractors: Array,\n extractor: ExtractorType,\n};\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: { asyncResult: true },\n }),\n);\n\nfunction getExtractorDTO(extractor: ExtractorType) {\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 getInitialState() {\n return this.getState();\n },\n\n init() {\n this.trigger({ extractors: this.extractors, extractor: this.extractor });\n },\n\n getState() {\n return {\n extractors: this.extractors,\n extractor: this.extractor,\n };\n },\n\n propagateState() {\n this.trigger(this.getState());\n },\n\n list(inputId: string) {\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.propagateState();\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: string, field: string) {\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: string, extractorId: string) {\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.propagateState();\n });\n\n ExtractorsActions.get.promise(promise);\n },\n\n save(inputId: string, extractor: ExtractorType) {\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: string, extractor: ExtractorType) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ExtractorsController.create(inputId).url);\n\n return fetch('POST', url, getExtractorDTO(extractor));\n },\n\n create(inputId: string, extractor: ExtractorType, calledFromMethod: boolean) {\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: string, extractor: ExtractorType, calledFromMethod: boolean) {\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: string, extractor: ExtractorType) {\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: string, orderedExtractors: Array) {\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: string, extractors: Array) {\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\n this.propagateState();\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","ExtractorsList","node","showSortModal","setShowSortModal","ExtractorsStore","state","_formatExtractor","_isLoading","_openSortModal","sortExtractorsButton","formattedExtractors","extractor1","extractor2","Spinner","EntityList","ExtractorsPage","NodesStore","params","nodes","newNode","PageHeader","DocsHelper","withParams","Component","ExtractorsActions","getExtractorDTO","conditionValue","promise","response","type","field","extractorId","url","calledFromMethod","error","orderedExtractors","orderedExtractorsMap","idx","successfulImports","failedImports","promises"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy