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

web-interface.assets.53.746b58959a350aa1ebcf.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.3
Show newest version
{"version":3,"sources":["webpack:///53.746b58959a350aa1ebcf.js","webpack:///./src/pages/SearchPage.jsx"],"names":["webpackJsonp","1322","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_propTypes","_propTypes2","_react","_react2","_reflux","_reflux2","_immutable","_immutable2","_moment","_moment2","_CombinedProvider","_CombinedProvider2","_common","_search","_CombinedProvider$get","get","NodesStore","NodesActions","_CombinedProvider$get2","CurrentUserStore","_CombinedProvider$get3","InputsStore","InputsActions","_CombinedProvider$get4","MessageFieldsStore","_CombinedProvider$get5","RefreshStore","_CombinedProvider$get6","StreamsStore","_CombinedProvider$get7","UniversalSearchStore","_CombinedProvider$get8","SearchStore","_CombinedProvider$get9","DecoratorsStore","SearchPage","createClass","displayName","propTypes","location","object","isRequired","searchConfig","searchInStream","forceFetch","bool","mixins","connect","listenTo","getInitialState","error","undefined","updatingSearch","updatingHistogram","componentDidMount","_this","this","list","triggerPromise","listStreams","then","streams","streamsMap","forEach","stream","id","setState","Map","componentWillReceiveProps","nextProps","props","search","promise","cancel","_refreshData","componentWillUnmount","_stopTimer","_setupTimer","refresh","enabled","timer","setInterval","interval","clearInterval","_refreshDataFromDecoratorStore","_this2","query","originalQuery","streamId","isCancelled","parseInt","originalRangeType","originalRangeParams","toJS","page","sortField","sortOrder","response","isMounted","searchResult","_determineHistogramResolution","histogram","finally","additional","status","_formatInputs","state","inputs","inputsAsMap","_determineSearchDuration","searchTo","to","searchFrom","sortedIndices","used_indices","sort","i1","i2","end","oldestIndex","valueOf","begin","from","queryRangeInMinutes","diff","duration","asHours","asDays","asMonths","asYears","_isLoading","nodes","fields","render","errorPage","createElement","MalformedSearchQuery","SearchExecutionError","DocumentTitle","title","Spinner","all_fields","SearchResult","builtQuery","built_query","result","formattedHistogram","permissions","currentUser","loadingSearch"],"mappings":"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","file":"53.746b58959a350aa1ebcf.js","sourcesContent":["webpackJsonp([53],{\n\n/***/ 1322:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _immutable = __webpack_require__(54);\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _moment = __webpack_require__(35);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _CombinedProvider = __webpack_require__(68);\n\nvar _CombinedProvider2 = _interopRequireDefault(_CombinedProvider);\n\nvar _common = __webpack_require__(46);\n\nvar _search = __webpack_require__(932);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _CombinedProvider$get = _CombinedProvider2.default.get('Nodes'),\n    NodesStore = _CombinedProvider$get.NodesStore,\n    NodesActions = _CombinedProvider$get.NodesActions;\n\nvar _CombinedProvider$get2 = _CombinedProvider2.default.get('CurrentUser'),\n    CurrentUserStore = _CombinedProvider$get2.CurrentUserStore;\n\nvar _CombinedProvider$get3 = _CombinedProvider2.default.get('Inputs'),\n    InputsStore = _CombinedProvider$get3.InputsStore,\n    InputsActions = _CombinedProvider$get3.InputsActions;\n\nvar _CombinedProvider$get4 = _CombinedProvider2.default.get('MessageFields'),\n    MessageFieldsStore = _CombinedProvider$get4.MessageFieldsStore;\n\nvar _CombinedProvider$get5 = _CombinedProvider2.default.get('Refresh'),\n    RefreshStore = _CombinedProvider$get5.RefreshStore;\n\nvar _CombinedProvider$get6 = _CombinedProvider2.default.get('Streams'),\n    StreamsStore = _CombinedProvider$get6.StreamsStore;\n\nvar _CombinedProvider$get7 = _CombinedProvider2.default.get('UniversalSearch'),\n    UniversalSearchStore = _CombinedProvider$get7.UniversalSearchStore;\n\nvar _CombinedProvider$get8 = _CombinedProvider2.default.get('Search'),\n    SearchStore = _CombinedProvider$get8.SearchStore;\n\nvar _CombinedProvider$get9 = _CombinedProvider2.default.get('Decorators'),\n    DecoratorsStore = _CombinedProvider$get9.DecoratorsStore;\n\nvar SearchPage = _react2.default.createClass({\n  displayName: 'SearchPage',\n\n  propTypes: {\n    location: _propTypes2.default.object.isRequired,\n    searchConfig: _propTypes2.default.object.isRequired,\n    searchInStream: _propTypes2.default.object,\n    forceFetch: _propTypes2.default.bool\n  },\n  mixins: [_reflux2.default.connect(NodesStore), _reflux2.default.connect(MessageFieldsStore), _reflux2.default.connect(CurrentUserStore), _reflux2.default.listenTo(InputsStore, '_formatInputs'), _reflux2.default.listenTo(RefreshStore, '_setupTimer', '_setupTimer'), _reflux2.default.listenTo(DecoratorsStore, '_refreshDataFromDecoratorStore', '_refreshDataFromDecoratorStore')],\n  getInitialState: function getInitialState() {\n    return {\n      error: undefined,\n      updatingSearch: false,\n      updatingHistogram: false\n    };\n  },\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    InputsActions.list.triggerPromise();\n\n    StreamsStore.listStreams().then(function (streams) {\n      var streamsMap = {};\n      streams.forEach(function (stream) {\n        streamsMap[stream.id] = stream;\n      });\n      _this.setState({ streams: _immutable2.default.Map(streamsMap) });\n    });\n\n    NodesActions.list();\n  },\n  componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n    var currentLocation = this.props.location || {};\n    var nextLocation = nextProps.location || {};\n\n    if (currentLocation.search !== nextLocation.search || this.props.searchInStream !== nextProps.searchInStream || nextProps.forceFetch) {\n      if (this.promise) {\n        this.promise.cancel();\n      }\n      this._refreshData(nextProps.searchInStream);\n    }\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    this._stopTimer();\n  },\n  _setupTimer: function _setupTimer(refresh) {\n    this._stopTimer();\n    if (refresh.enabled) {\n      this.timer = setInterval(this._refreshData, refresh.interval);\n    }\n  },\n  _stopTimer: function _stopTimer() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n  },\n  _refreshDataFromDecoratorStore: function _refreshDataFromDecoratorStore() {\n    var searchInStream = this.props.searchInStream;\n    this._refreshData(searchInStream);\n  },\n  _refreshData: function _refreshData(searchInStream) {\n    var _this2 = this;\n\n    var query = SearchStore.originalQuery;\n    var stream = searchInStream || this.props.searchInStream || {};\n    var streamId = stream.id;\n    if (this.promise && !this.promise.isCancelled()) {\n      return this.promise;\n    }\n    if (!RefreshStore.enabled || RefreshStore.enabled && parseInt(RefreshStore.interval) > 5000) {\n      this.setState({ updatingSearch: true });\n    }\n    this.promise = UniversalSearchStore.search(SearchStore.originalRangeType, query, SearchStore.originalRangeParams.toJS(), streamId, null, SearchStore.page, SearchStore.sortField, SearchStore.sortOrder).then(function (response) {\n      if (_this2.isMounted()) {\n        _this2.setState({ searchResult: response, error: undefined });\n      }\n\n      var interval = _this2.props.location.query.interval ? _this2.props.location.query.interval : _this2._determineHistogramResolution(response);\n\n      if (!RefreshStore.enabled || RefreshStore.enabled && parseInt(RefreshStore.interval) > 5000) {\n        _this2.setState({ updatingHistogram: true });\n      }\n      UniversalSearchStore.histogram(SearchStore.originalRangeType, query, SearchStore.originalRangeParams.toJS(), interval, streamId).then(function (histogram) {\n        _this2.setState({ histogram: histogram });\n        return histogram;\n      }).finally(function () {\n        return _this2.setState({ updatingHistogram: false });\n      });\n\n      return response;\n    }, function (error) {\n      // Treat searches with a malformed query\n      if (error.additional) {\n        if (error.additional.status) {\n          _this2.setState({ error: error.additional });\n        }\n      }\n    }).finally(function () {\n      _this2.setState({ updatingSearch: false });\n      _this2.promise = undefined;\n    });\n  },\n  _formatInputs: function _formatInputs(state) {\n    var inputs = InputsStore.inputsAsMap(state.inputs);\n    this.setState({ inputs: _immutable2.default.Map(inputs) });\n  },\n  _determineSearchDuration: function _determineSearchDuration(response) {\n    var searchTo = response.to;\n    var searchFrom = void 0;\n    if (SearchStore.originalRangeType === 'relative' && SearchStore.originalRangeParams.get('relative') === 0) {\n      var sortedIndices = response.used_indices.sort(function (i1, i2) {\n        return (0, _moment2.default)(i1.end) - (0, _moment2.default)(i2.end);\n      });\n      // If we didn't calculate index ranges for the oldest index, pick the next one.\n      // This usually happens to the deflector, when index ranges weren't calculated for it yet.\n      var oldestIndex = (0, _moment2.default)(sortedIndices[0].end).valueOf() === 0 ? sortedIndices[1] : sortedIndices[0];\n\n      if (oldestIndex !== undefined) {\n        searchFrom = oldestIndex.begin;\n      } else {\n        // We don't know when we received the first message, assume the search duration is 0.\n        searchFrom = searchTo;\n      }\n    } else {\n      searchFrom = response.from;\n    }\n\n    var queryRangeInMinutes = (0, _moment2.default)(searchTo).diff(searchFrom, 'minutes');\n\n    return _moment2.default.duration(queryRangeInMinutes, 'minutes');\n  },\n  _determineHistogramResolution: function _determineHistogramResolution(response) {\n    var duration = this._determineSearchDuration(response);\n\n    if (duration.asHours() < 12) {\n      return 'minute';\n    }\n\n    if (duration.asDays() < 3) {\n      return 'hour';\n    }\n\n    if (duration.asDays() < 30) {\n      return 'day';\n    }\n\n    if (duration.asMonths() < 2) {\n      return 'week';\n    }\n\n    if (duration.asMonths() < 18) {\n      return 'month';\n    }\n\n    if (duration.asYears() < 3) {\n      return 'quarter';\n    }\n\n    return 'year';\n  },\n  _isLoading: function _isLoading() {\n    return !this.state.searchResult || !this.state.inputs || !this.state.streams || !this.state.nodes || !this.state.fields || !this.state.histogram;\n  },\n  render: function render() {\n    if (this.state.error) {\n      var errorPage = void 0;\n      switch (this.state.error.status) {\n        case 400:\n          errorPage = _react2.default.createElement(_search.MalformedSearchQuery, { error: this.state.error });\n          break;\n        default:\n          errorPage = _react2.default.createElement(_search.SearchExecutionError, { error: this.state.error });\n      }\n\n      return _react2.default.createElement(\n        _common.DocumentTitle,\n        { title: 'Search error' },\n        errorPage\n      );\n    }\n\n    if (this._isLoading()) {\n      return _react2.default.createElement(_common.Spinner, null);\n    }\n\n    var searchResult = this.state.searchResult;\n    searchResult.all_fields = this.state.fields;\n    return _react2.default.createElement(\n      _common.DocumentTitle,\n      { title: 'Search' },\n      _react2.default.createElement(_search.SearchResult, { query: SearchStore.originalQuery, page: SearchStore.page, builtQuery: searchResult.built_query,\n        result: searchResult, histogram: this.state.histogram,\n        formattedHistogram: this.state.histogram.histogram,\n        streams: this.state.streams, inputs: this.state.inputs, nodes: _immutable2.default.Map(this.state.nodes),\n        searchInStream: this.props.searchInStream, permissions: this.state.currentUser.permissions,\n        searchConfig: this.props.searchConfig,\n        loadingSearch: this.state.updatingSearch || this.state.updatingHistogram,\n        forceFetch: this.props.forceFetch })\n    );\n  }\n});\n\nexports.default = SearchPage;\nmodule.exports = exports['default'];\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// 53.746b58959a350aa1ebcf.js","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport Immutable from 'immutable';\nimport moment from 'moment';\n\nimport CombinedProvider from 'injection/CombinedProvider';\nconst { NodesStore, NodesActions } = CombinedProvider.get('Nodes');\nconst { CurrentUserStore } = CombinedProvider.get('CurrentUser');\nconst { InputsStore, InputsActions } = CombinedProvider.get('Inputs');\nconst { MessageFieldsStore } = CombinedProvider.get('MessageFields');\nconst { RefreshStore } = CombinedProvider.get('Refresh');\nconst { StreamsStore } = CombinedProvider.get('Streams');\nconst { UniversalSearchStore } = CombinedProvider.get('UniversalSearch');\nconst { SearchStore } = CombinedProvider.get('Search');\nconst { DecoratorsStore } = CombinedProvider.get('Decorators');\n\nimport { DocumentTitle, Spinner } from 'components/common';\nimport { MalformedSearchQuery, SearchExecutionError, SearchResult } from 'components/search';\n\nconst SearchPage = React.createClass({\n  propTypes: {\n    location: PropTypes.object.isRequired,\n    searchConfig: PropTypes.object.isRequired,\n    searchInStream: PropTypes.object,\n    forceFetch: PropTypes.bool,\n  },\n  mixins: [\n    Reflux.connect(NodesStore),\n    Reflux.connect(MessageFieldsStore),\n    Reflux.connect(CurrentUserStore),\n    Reflux.listenTo(InputsStore, '_formatInputs'),\n    Reflux.listenTo(RefreshStore, '_setupTimer', '_setupTimer'),\n    Reflux.listenTo(DecoratorsStore, '_refreshDataFromDecoratorStore', '_refreshDataFromDecoratorStore'),\n  ],\n  getInitialState() {\n    return {\n      error: undefined,\n      updatingSearch: false,\n      updatingHistogram: false,\n    };\n  },\n  componentDidMount() {\n    InputsActions.list.triggerPromise();\n\n    StreamsStore.listStreams().then((streams) => {\n      const streamsMap = {};\n      streams.forEach((stream) => { streamsMap[stream.id] = stream; });\n      this.setState({ streams: Immutable.Map(streamsMap) });\n    });\n\n    NodesActions.list();\n  },\n  componentWillReceiveProps(nextProps) {\n    const currentLocation = this.props.location || {};\n    const nextLocation = nextProps.location || {};\n\n    if (currentLocation.search !== nextLocation.search || this.props.searchInStream !== nextProps.searchInStream || nextProps.forceFetch) {\n      if (this.promise) {\n        this.promise.cancel();\n      }\n      this._refreshData(nextProps.searchInStream);\n    }\n  },\n  componentWillUnmount() {\n    this._stopTimer();\n  },\n  _setupTimer(refresh) {\n    this._stopTimer();\n    if (refresh.enabled) {\n      this.timer = setInterval(this._refreshData, refresh.interval);\n    }\n  },\n  _stopTimer() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n  },\n  _refreshDataFromDecoratorStore() {\n    const searchInStream = this.props.searchInStream;\n    this._refreshData(searchInStream);\n  },\n  _refreshData(searchInStream) {\n    const query = SearchStore.originalQuery;\n    const stream = searchInStream || this.props.searchInStream || {};\n    const streamId = stream.id;\n    if (this.promise && !this.promise.isCancelled()) {\n      return this.promise;\n    }\n    if (!RefreshStore.enabled || RefreshStore.enabled && parseInt(RefreshStore.interval) > 5000) {\n      this.setState({ updatingSearch: true });\n    }\n    this.promise = UniversalSearchStore.search(SearchStore.originalRangeType, query, SearchStore.originalRangeParams.toJS(), streamId, null, SearchStore.page, SearchStore.sortField, SearchStore.sortOrder)\n      .then(\n        (response) => {\n          if (this.isMounted()) {\n            this.setState({ searchResult: response, error: undefined });\n          }\n\n          const interval = this.props.location.query.interval ? this.props.location.query.interval : this._determineHistogramResolution(response);\n\n          if (!RefreshStore.enabled || RefreshStore.enabled && parseInt(RefreshStore.interval) > 5000) {\n             this.setState({ updatingHistogram: true });\n          }\n          UniversalSearchStore.histogram(SearchStore.originalRangeType, query, SearchStore.originalRangeParams.toJS(), interval, streamId)\n            .then((histogram) => {\n              this.setState({ histogram: histogram });\n              return histogram;\n            })\n            .finally(() => this.setState({ updatingHistogram: false }));\n\n          return response;\n        },\n        (error) => {\n          // Treat searches with a malformed query\n          if (error.additional) {\n            if (error.additional.status) {\n              this.setState({ error: error.additional });\n            }\n          }\n        },\n      )\n      .finally(() => {\n        this.setState({ updatingSearch: false });\n        this.promise = undefined;\n      });\n  },\n  _formatInputs(state) {\n    const inputs = InputsStore.inputsAsMap(state.inputs);\n    this.setState({ inputs: Immutable.Map(inputs) });\n  },\n  _determineSearchDuration(response) {\n    const searchTo = response.to;\n    let searchFrom;\n    if (SearchStore.originalRangeType === 'relative' && SearchStore.originalRangeParams.get('relative') === 0) {\n      const sortedIndices = response.used_indices.sort((i1, i2) => moment(i1.end) - moment(i2.end));\n      // If we didn't calculate index ranges for the oldest index, pick the next one.\n      // This usually happens to the deflector, when index ranges weren't calculated for it yet.\n      const oldestIndex = moment(sortedIndices[0].end).valueOf() === 0 ? sortedIndices[1] : sortedIndices[0];\n\n      if (oldestIndex !== undefined) {\n        searchFrom = oldestIndex.begin;\n      } else {\n        // We don't know when we received the first message, assume the search duration is 0.\n        searchFrom = searchTo;\n      }\n    } else {\n      searchFrom = response.from;\n    }\n\n    const queryRangeInMinutes = moment(searchTo).diff(searchFrom, 'minutes');\n\n    return moment.duration(queryRangeInMinutes, 'minutes');\n  },\n  _determineHistogramResolution(response) {\n    const duration = this._determineSearchDuration(response);\n\n    if (duration.asHours() < 12) {\n      return 'minute';\n    }\n\n    if (duration.asDays() < 3) {\n      return 'hour';\n    }\n\n    if (duration.asDays() < 30) {\n      return 'day';\n    }\n\n    if (duration.asMonths() < 2) {\n      return 'week';\n    }\n\n    if (duration.asMonths() < 18) {\n      return 'month';\n    }\n\n    if (duration.asYears() < 3) {\n      return 'quarter';\n    }\n\n    return 'year';\n  },\n\n  _isLoading() {\n    return !this.state.searchResult || !this.state.inputs || !this.state.streams || !this.state.nodes || !this.state.fields || !this.state.histogram;\n  },\n\n  render() {\n    if (this.state.error) {\n      let errorPage;\n      switch (this.state.error.status) {\n        case 400:\n          errorPage = ;\n          break;\n        default:\n          errorPage = ;\n      }\n\n      return {errorPage};\n    }\n\n    if (this._isLoading()) {\n      return ;\n    }\n\n    const searchResult = this.state.searchResult;\n    searchResult.all_fields = this.state.fields;\n    return (\n      \n        \n      \n    );\n  },\n});\n\nexport default SearchPage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/SearchPage.jsx"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy