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

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

There is a newer version: 6.0.6
Show newest version
{"version":3,"sources":["webpack:///34.746b58959a350aa1ebcf.js","webpack:///./src/pages/ConfigurationsPage.jsx","webpack:///./src/components/configurations/SearchesConfig.jsx","webpack:///./src/components/configurations/TimeRangeOptionsForm.jsx","webpack:///./src/components/configurations/TimeRangeOptionsSummary.jsx","webpack:///./src/components/configurations/MessageProcessorsConfig.jsx","webpack:///./src/components/configurations/ConfigurationStyles.css?c8ca","webpack:///./src/components/configurations/ConfigurationStyles.css"],"names":["webpackJsonp","1474","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_react","_react2","_reflux","_reflux2","_reactBootstrap","_common","_plugin","_StoreProvider","_StoreProvider2","_ActionsProvider","_ActionsProvider2","_SearchesConfig","_SearchesConfig2","_MessageProcessorsConfig","_MessageProcessorsConfig2","ConfigurationsStore","getStore","ConfigurationActions","getActions","ConfigurationsPage","createClass","displayName","mixins","connect","getInitialState","configuration","componentDidMount","this","style","use","list","SEARCHES_CLUSTER_CONFIG","listMessageProcessorsConfig","MESSAGE_PROCESSORS_CONFIG","PluginStore","forEach","systemConfig","configType","componentWillUnmount","unuse","_getConfig","state","_onUpdate","_this","config","updateMessageProcessorsConfig","update","_pluginConfigs","_this2","map","idx","createElement","component","key","undefined","updateConfig","_pluginConfigRows","pluginConfigs","rows","length","push","Row","Col","md","shift","render","searchesConfig","messageProcessorsConfig","searchesConfigComponent","messageProcessorsConfigComponent","Spinner","pluginConfigRows","DocumentTitle","title","PageHeader","className","1475","_propTypes","_propTypes2","_bootstrap","_ObjectUtils","_ObjectUtils2","_moment","_moment2","_TimeRangeOptionsForm","_TimeRangeOptionsForm2","_TimeRangeOptionsSummary","_TimeRangeOptionsSummary2","SearchesConfig","propTypes","object","isRequired","func","queryTimeRangeLimit","_getPropConfigValue","query_time_range_limit","relative_timerange_options","surrounding_timerange_options","surrounding_filter_fields","analysis_disabled_fields","limitEnabled","duration","asMilliseconds","relativeTimeRangeOptionsUpdate","surroundingTimeRangeOptionsUpdate","field","props","newOptions","clone","setState","_onRelativeTimeRangeOptionsUpdate","data","_onSurroundingTimeRangeOptionsUpdate","_buildTimeRangeOptions","options","keys","period","description","_onFilterFieldsUpdate","e","surroundingFilterFields","target","_onAnalysisDisabledFieldsUpdate","analysisDisabledFields","_onChecked","_isEnabled","_splitStringList","stringList","split","f","trim","filter","_saveConfig","entry","then","_closeModal","_resetConfig","_openModal","refs","searchesConfigModal","open","close","queryTimeRangeLimitValidator","milliseconds","relativeTimeRangeValidator","surroundingTimeRangeValidator","limit","format","filterFields","filterFieldsString","join","analysisDisabledFieldsString","IfPermitted","permissions","Button","bsStyle","bsSize","onClick","BootstrapModalForm","ref","onSubmitForm","onModalClose","submitButtonText","Input","type","label","name","checked","onChange","ISODurationInput","help","validator","required","1476","_ISODurationUtils","_ISODurationUtils2","TimeRangeOptionsForm","array","string","any","addButtonTitle","getDefaultProps","_update","_onAdd","_onRemove","removedIdx","splice","_onChange","changedIdx","o","toUpperCase","startsWith","_this3","option","errorStyle","durationStyle","xs","formatDuration","placeholder","cursor","1477","TimeRangeOptionsSummary","timerangeOptionsSummary","1478","_BootstrapModalForm","_BootstrapModalForm2","_javascriptNaturalSort","_javascriptNaturalSort2","MessageProcessorsConfig","disabled_processors","processor_order","configModal","_hasNoActiveProcessor","_updateSorting","newSorting","item","class_name","id","_toggleStatus","disabledProcessors","p","indexOf","_noActiveProcessorWarning","Alert","_summary","processor","status","_sortableItems","_statusForm","_this4","sort","a","b","enabled","Table","striped","bordered","condensed","SortableList","items","onMoveItem","944","dispose","content","i","locals","unref","945"],"mappings":"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","file":"34.746b58959a350aa1ebcf.js","sourcesContent":["webpackJsonp([34],{\n\n/***/ 1474:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(46);\n\nvar _plugin = __webpack_require__(263);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _ActionsProvider = __webpack_require__(8);\n\nvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\nvar _SearchesConfig = __webpack_require__(1475);\n\nvar _SearchesConfig2 = _interopRequireDefault(_SearchesConfig);\n\nvar _MessageProcessorsConfig = __webpack_require__(1478);\n\nvar _MessageProcessorsConfig2 = _interopRequireDefault(_MessageProcessorsConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ConfigurationsStore = _StoreProvider2.default.getStore('Configurations');\n\nvar ConfigurationActions = _ActionsProvider2.default.getActions('Configuration');\n\nvar ConfigurationsPage = _react2.default.createClass({\n  displayName: 'ConfigurationsPage',\n\n  mixins: [_reflux2.default.connect(ConfigurationsStore)],\n\n  getInitialState: function getInitialState() {\n    return {\n      configuration: null\n    };\n  },\n  componentDidMount: function componentDidMount() {\n    this.style.use();\n    ConfigurationActions.list(this.SEARCHES_CLUSTER_CONFIG);\n    ConfigurationActions.listMessageProcessorsConfig(this.MESSAGE_PROCESSORS_CONFIG);\n\n    _plugin.PluginStore.exports('systemConfigurations').forEach(function (systemConfig) {\n      ConfigurationActions.list(systemConfig.configType);\n    });\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    this.style.unuse();\n  },\n\n\n  style: __webpack_require__(944),\n  SEARCHES_CLUSTER_CONFIG: 'org.graylog2.indexer.searches.SearchesClusterConfig',\n  MESSAGE_PROCESSORS_CONFIG: 'org.graylog2.messageprocessors.MessageProcessorsConfig',\n\n  _getConfig: function _getConfig(configType) {\n    if (this.state.configuration && this.state.configuration[configType]) {\n      return this.state.configuration[configType];\n    }\n    return null;\n  },\n  _onUpdate: function _onUpdate(configType) {\n    var _this = this;\n\n    return function (config) {\n      switch (configType) {\n        case _this.MESSAGE_PROCESSORS_CONFIG:\n          return ConfigurationActions.updateMessageProcessorsConfig(configType, config);\n        default:\n          return ConfigurationActions.update(configType, config);\n      }\n    };\n  },\n  _pluginConfigs: function _pluginConfigs() {\n    var _this2 = this;\n\n    return _plugin.PluginStore.exports('systemConfigurations').map(function (systemConfig, idx) {\n      return _react2.default.createElement(systemConfig.component, {\n        key: 'system-configuration-' + idx,\n        config: _this2._getConfig(systemConfig.configType) || undefined,\n        updateConfig: _this2._onUpdate(systemConfig.configType)\n      });\n    });\n  },\n  _pluginConfigRows: function _pluginConfigRows() {\n    var pluginConfigs = this._pluginConfigs();\n    var rows = [];\n    var idx = 0;\n\n    // Put two plugin config components per row.\n    while (pluginConfigs.length > 0) {\n      idx++;\n      rows.push(_react2.default.createElement(\n        _reactBootstrap.Row,\n        { key: 'plugin-config-row-' + idx },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 6 },\n          pluginConfigs.shift()\n        ),\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 6 },\n          pluginConfigs.shift() || _react2.default.createElement(\n            'span',\n            null,\n            '\\xA0'\n          )\n        )\n      ));\n    }\n\n    return rows;\n  },\n  render: function render() {\n    var searchesConfig = this._getConfig(this.SEARCHES_CLUSTER_CONFIG);\n    var messageProcessorsConfig = this._getConfig(this.MESSAGE_PROCESSORS_CONFIG);\n    var searchesConfigComponent = void 0;\n    var messageProcessorsConfigComponent = void 0;\n    if (searchesConfig) {\n      searchesConfigComponent = _react2.default.createElement(_SearchesConfig2.default, { config: searchesConfig,\n        updateConfig: this._onUpdate(this.SEARCHES_CLUSTER_CONFIG) });\n    } else {\n      searchesConfigComponent = _react2.default.createElement(_common.Spinner, null);\n    }\n    if (messageProcessorsConfig) {\n      messageProcessorsConfigComponent = _react2.default.createElement(_MessageProcessorsConfig2.default, { config: messageProcessorsConfig,\n        updateConfig: this._onUpdate(this.MESSAGE_PROCESSORS_CONFIG) });\n    } else {\n      messageProcessorsConfigComponent = _react2.default.createElement(_common.Spinner, null);\n    }\n\n    var pluginConfigRows = this._pluginConfigRows();\n\n    return _react2.default.createElement(\n      _common.DocumentTitle,\n      { title: 'Configurations' },\n      _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement(\n          _common.PageHeader,\n          { title: 'Configurations' },\n          _react2.default.createElement(\n            'span',\n            null,\n            'You can configure system settings for different sub systems on this page.'\n          )\n        ),\n        _react2.default.createElement(\n          _reactBootstrap.Row,\n          { className: 'content' },\n          _react2.default.createElement(\n            _reactBootstrap.Col,\n            { md: 6 },\n            searchesConfigComponent\n          ),\n          _react2.default.createElement(\n            _reactBootstrap.Col,\n            { md: 6 },\n            messageProcessorsConfigComponent\n          )\n        ),\n        pluginConfigRows.length > 0 && _react2.default.createElement(\n          _reactBootstrap.Row,\n          { className: 'content' },\n          _react2.default.createElement(\n            _reactBootstrap.Col,\n            { md: 12 },\n            _react2.default.createElement(\n              'h2',\n              null,\n              'Plugins'\n            ),\n            _react2.default.createElement(\n              'p',\n              { className: 'description' },\n              'Configuration for installed plugins.'\n            ),\n            _react2.default.createElement('hr', { className: 'separator' }),\n            _react2.default.createElement(\n              'div',\n              { className: 'top-margin' },\n              pluginConfigRows\n            )\n          )\n        )\n      )\n    );\n  }\n});\n\nexports.default = ConfigurationsPage;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1475:\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 _reactBootstrap = __webpack_require__(16);\n\nvar _bootstrap = __webpack_require__(47);\n\nvar _common = __webpack_require__(46);\n\nvar _ObjectUtils = __webpack_require__(264);\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _moment = __webpack_require__(35);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(270);\n\nvar _TimeRangeOptionsForm = __webpack_require__(1476);\n\nvar _TimeRangeOptionsForm2 = _interopRequireDefault(_TimeRangeOptionsForm);\n\nvar _TimeRangeOptionsSummary = __webpack_require__(1477);\n\nvar _TimeRangeOptionsSummary2 = _interopRequireDefault(_TimeRangeOptionsSummary);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SearchesConfig = _react2.default.createClass({\n  displayName: 'SearchesConfig',\n\n  propTypes: {\n    config: _propTypes2.default.object.isRequired,\n    updateConfig: _propTypes2.default.func.isRequired\n  },\n\n  getInitialState: function getInitialState() {\n    var queryTimeRangeLimit = this._getPropConfigValue('query_time_range_limit');\n    var relativeTimerangeOptions = this._getPropConfigValue('relative_timerange_options');\n    var surroundingTimerangeOptions = this._getPropConfigValue('surrounding_timerange_options');\n    var surroundingFilterFields = this._getPropConfigValue('surrounding_filter_fields');\n    var analysisDisabledFields = this._getPropConfigValue('analysis_disabled_fields');\n\n    return {\n      config: {\n        query_time_range_limit: queryTimeRangeLimit,\n        relative_timerange_options: relativeTimerangeOptions,\n        surrounding_timerange_options: surroundingTimerangeOptions,\n        surrounding_filter_fields: surroundingFilterFields,\n        analysis_disabled_fields: analysisDisabledFields\n      },\n      limitEnabled: _moment2.default.duration(queryTimeRangeLimit).asMilliseconds() > 0,\n      relativeTimeRangeOptionsUpdate: undefined,\n      surroundingTimeRangeOptionsUpdate: undefined\n    };\n  },\n  _getPropConfigValue: function _getPropConfigValue(field) {\n    return this.props.config ? this.props.config[field] : undefined;\n  },\n  _onUpdate: function _onUpdate(field) {\n    var _this = this;\n\n    return function (newOptions) {\n      var update = _ObjectUtils2.default.clone(_this.state.config);\n\n      update[field] = newOptions;\n\n      _this.setState({ config: update });\n    };\n  },\n  _onRelativeTimeRangeOptionsUpdate: function _onRelativeTimeRangeOptionsUpdate(data) {\n    this.setState({ relativeTimeRangeOptionsUpdate: data });\n  },\n  _onSurroundingTimeRangeOptionsUpdate: function _onSurroundingTimeRangeOptionsUpdate(data) {\n    this.setState({ surroundingTimeRangeOptionsUpdate: data });\n  },\n  _buildTimeRangeOptions: function _buildTimeRangeOptions(options) {\n    return Object.keys(options).map(function (key) {\n      return { period: key, description: options[key] };\n    });\n  },\n  _onFilterFieldsUpdate: function _onFilterFieldsUpdate(e) {\n    this.setState({ surroundingFilterFields: e.target.value });\n  },\n  _onAnalysisDisabledFieldsUpdate: function _onAnalysisDisabledFieldsUpdate(e) {\n    this.setState({ analysisDisabledFields: e.target.value });\n  },\n  _onChecked: function _onChecked() {\n    var config = _ObjectUtils2.default.clone(this.state.config);\n\n    if (this.state.limitEnabled) {\n      // If currently enabled, disable by setting the limit to 0 seconds.\n      config.query_time_range_limit = 'PT0S';\n    } else {\n      // If currently not enabled, set a default of 30 days.\n      config.query_time_range_limit = 'P30D';\n    }\n\n    this.setState({ config: config, limitEnabled: !this.state.limitEnabled });\n  },\n  _isEnabled: function _isEnabled() {\n    return this.state.limitEnabled;\n  },\n  _splitStringList: function _splitStringList(stringList) {\n    return stringList.split(',').map(function (f) {\n      return f.trim();\n    }).filter(function (f) {\n      return f.length > 0;\n    });\n  },\n  _saveConfig: function _saveConfig() {\n    var _this2 = this;\n\n    var update = _ObjectUtils2.default.clone(this.state.config);\n\n    if (this.state.relativeTimeRangeOptionsUpdate) {\n      update.relative_timerange_options = {};\n\n      this.state.relativeTimeRangeOptionsUpdate.forEach(function (entry) {\n        update.relative_timerange_options[entry.period] = entry.description;\n      });\n\n      this.setState({ relativeTimeRangeOptionsUpdate: undefined });\n    }\n\n    if (this.state.surroundingTimeRangeOptionsUpdate) {\n      update.surrounding_timerange_options = {};\n\n      this.state.surroundingTimeRangeOptionsUpdate.forEach(function (entry) {\n        update.surrounding_timerange_options[entry.period] = entry.description;\n      });\n\n      this.setState({ surroundingTimeRangeOptionsUpdate: undefined });\n    }\n\n    // Make sure to update filter fields\n    if (this.state.surroundingFilterFields) {\n      update.surrounding_filter_fields = this._splitStringList(this.state.surroundingFilterFields);\n      this.setState({ surroundingFilterFields: undefined });\n    }\n\n    if (this.state.analysisDisabledFields) {\n      update.analysis_disabled_fields = this._splitStringList(this.state.analysisDisabledFields);\n      this.setState({ analysisDisabledFields: undefined });\n    }\n\n    this.props.updateConfig(update).then(function () {\n      _this2._closeModal();\n    });\n  },\n  _resetConfig: function _resetConfig() {\n    // Reset to initial state when the modal is closed without saving.\n    this.setState(this.getInitialState());\n  },\n  _openModal: function _openModal() {\n    this.refs.searchesConfigModal.open();\n  },\n  _closeModal: function _closeModal() {\n    this.refs.searchesConfigModal.close();\n  },\n  queryTimeRangeLimitValidator: function queryTimeRangeLimitValidator(milliseconds) {\n    return milliseconds >= 1;\n  },\n  relativeTimeRangeValidator: function relativeTimeRangeValidator(milliseconds, duration) {\n    return milliseconds >= 1 || duration === 'PT0S';\n  },\n  surroundingTimeRangeValidator: function surroundingTimeRangeValidator(milliseconds) {\n    return milliseconds >= 1;\n  },\n  render: function render() {\n    var config = this.state.config;\n    var duration = _moment2.default.duration(config.query_time_range_limit);\n    var limit = this._isEnabled() ? config.query_time_range_limit + ' (' + duration.format() + ')' : 'disabled';\n\n    var filterFields = void 0;\n    var filterFieldsString = void 0;\n    if (this.state.config.surrounding_filter_fields) {\n      filterFields = this.state.config.surrounding_filter_fields.map(function (f, idx) {\n        return _react2.default.createElement(\n          'li',\n          { key: idx },\n          f\n        );\n      });\n      filterFieldsString = this.state.config.surrounding_filter_fields.join(', ');\n    }\n\n    var analysisDisabledFields = void 0;\n    var analysisDisabledFieldsString = void 0;\n    if (this.state.config.analysis_disabled_fields) {\n      analysisDisabledFields = this.state.config.analysis_disabled_fields.map(function (f, idx) {\n        return _react2.default.createElement(\n          'li',\n          { key: idx },\n          f\n        );\n      });\n      analysisDisabledFieldsString = this.state.config.analysis_disabled_fields.join(', ');\n    }\n\n    return _react2.default.createElement(\n      'div',\n      null,\n      _react2.default.createElement(\n        'h2',\n        null,\n        'Search Configuration'\n      ),\n      _react2.default.createElement(\n        'dl',\n        { className: 'deflist' },\n        _react2.default.createElement(\n          'dt',\n          null,\n          'Query time range limit'\n        ),\n        _react2.default.createElement(\n          'dd',\n          null,\n          limit\n        ),\n        _react2.default.createElement(\n          'dd',\n          null,\n          'The maximum time users can query data in the past. This prevents users from accidentally creating queries which span a lot of data and would need a long time and many resources to complete (if at all).'\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        null,\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 6 },\n          _react2.default.createElement(\n            'strong',\n            null,\n            'Relative time range options'\n          ),\n          _react2.default.createElement(_TimeRangeOptionsSummary2.default, { options: this.state.config.relative_timerange_options })\n        ),\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 6 },\n          _react2.default.createElement(\n            'strong',\n            null,\n            'Surrounding time range options'\n          ),\n          _react2.default.createElement(_TimeRangeOptionsSummary2.default, { options: this.state.config.surrounding_timerange_options }),\n          _react2.default.createElement(\n            'strong',\n            null,\n            'Surrounding search filter fields'\n          ),\n          _react2.default.createElement(\n            'ul',\n            null,\n            filterFields\n          ),\n          _react2.default.createElement(\n            'strong',\n            null,\n            'UI analysis disabled for fields'\n          ),\n          _react2.default.createElement(\n            'ul',\n            null,\n            analysisDisabledFields\n          )\n        )\n      ),\n      _react2.default.createElement(\n        _common.IfPermitted,\n        { permissions: 'clusterconfigentry:edit' },\n        _react2.default.createElement(\n          _reactBootstrap.Button,\n          { bsStyle: 'info', bsSize: 'xs', onClick: this._openModal },\n          'Update'\n        )\n      ),\n      _react2.default.createElement(\n        _bootstrap.BootstrapModalForm,\n        { ref: 'searchesConfigModal',\n          title: 'Update Search Configuration',\n          onSubmitForm: this._saveConfig,\n          onModalClose: this._resetConfig,\n          submitButtonText: 'Save' },\n        _react2.default.createElement(\n          'fieldset',\n          null,\n          _react2.default.createElement(_bootstrap.Input, { type: 'checkbox', label: 'Enable query limit',\n            name: 'enabled',\n            checked: this._isEnabled(),\n            onChange: this._onChecked }),\n          this._isEnabled() && _react2.default.createElement(_common.ISODurationInput, { duration: config.query_time_range_limit,\n            update: this._onUpdate('query_time_range_limit'),\n            label: 'Query time range limit (ISO8601 Duration)',\n            help: 'The maximum time range for searches. (i.e. \"P30D\" for 30 days, \"PT24H\" for 24 hours)',\n            validator: this.queryTimeRangeLimitValidator,\n            required: true }),\n          _react2.default.createElement(_TimeRangeOptionsForm2.default, { options: this.state.relativeTimeRangeOptionsUpdate || this._buildTimeRangeOptions(this.state.config.relative_timerange_options),\n            update: this._onRelativeTimeRangeOptionsUpdate,\n            validator: this.relativeTimeRangeValidator,\n            title: 'Relative Timerange Options',\n            help: _react2.default.createElement(\n              'span',\n              null,\n              'Configure the available options for the ',\n              _react2.default.createElement(\n                'strong',\n                null,\n                'relative'\n              ),\n              ' time range selector as ',\n              _react2.default.createElement(\n                'strong',\n                null,\n                'ISO8601 duration'\n              )\n            ) }),\n          _react2.default.createElement(_TimeRangeOptionsForm2.default, { options: this.state.surroundingTimeRangeOptionsUpdate || this._buildTimeRangeOptions(this.state.config.surrounding_timerange_options),\n            update: this._onSurroundingTimeRangeOptionsUpdate,\n            validator: this.surroundingTimeRangeValidator,\n            title: 'Surrounding Timerange Options',\n            help: _react2.default.createElement(\n              'span',\n              null,\n              'Configure the available options for the ',\n              _react2.default.createElement(\n                'strong',\n                null,\n                'surrounding'\n              ),\n              ' time range selector as ',\n              _react2.default.createElement(\n                'strong',\n                null,\n                'ISO8601 duration'\n              )\n            ) }),\n          _react2.default.createElement(_bootstrap.Input, { type: 'text',\n            label: 'Surrounding search filter fields',\n            onChange: this._onFilterFieldsUpdate,\n            value: this.state.surroundingFilterFields || filterFieldsString,\n            help: 'A \\',\\' separated list of message fields that will be used as filter for the surrounding messages query.',\n            required: true }),\n          _react2.default.createElement(_bootstrap.Input, { type: 'text',\n            label: 'Disabled analysis fields',\n            onChange: this._onAnalysisDisabledFieldsUpdate,\n            value: this.state.analysisDisabledFields || analysisDisabledFieldsString,\n            help: 'A \\',\\' separated list of message fields for which analysis features like QuickValues will be disabled in the web UI.',\n            required: true })\n        )\n      )\n    );\n  }\n});\n\nexports.default = SearchesConfig;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1476:\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 _reactBootstrap = __webpack_require__(16);\n\nvar _ISODurationUtils = __webpack_require__(290);\n\nvar _ISODurationUtils2 = _interopRequireDefault(_ISODurationUtils);\n\nvar _ObjectUtils = __webpack_require__(264);\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Expects `this.props.options` to be an array of period/description objects. `[{period: 'PT1S', description: 'yo'}]`\n */\nvar TimeRangeOptionsForm = _react2.default.createClass({\n  displayName: 'TimeRangeOptionsForm',\n\n  propTypes: {\n    options: _propTypes2.default.array,\n    title: _propTypes2.default.string.isRequired,\n    help: _propTypes2.default.any.isRequired,\n    addButtonTitle: _propTypes2.default.string,\n    update: _propTypes2.default.func.isRequired,\n    validator: _propTypes2.default.func\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      options: [],\n      addButtonTitle: 'Add option',\n      validator: function validator() {\n        return true;\n      }\n    };\n  },\n  _update: function _update(options) {\n    this.props.update(options);\n  },\n  _onAdd: function _onAdd() {\n    var options = _ObjectUtils2.default.clone(this.props.options);\n\n    if (options) {\n      options.push({ period: '', description: '' });\n      this._update(options);\n    }\n  },\n  _onRemove: function _onRemove(removedIdx) {\n    var _this = this;\n\n    return function () {\n      var options = _ObjectUtils2.default.clone(_this.props.options);\n\n      // Remove element at index\n      options.splice(removedIdx, 1);\n\n      _this._update(options);\n    };\n  },\n  _onChange: function _onChange(changedIdx, field) {\n    var _this2 = this;\n\n    return function (e) {\n      var options = _ObjectUtils2.default.clone(_this2.props.options);\n\n      options.forEach(function (o, idx) {\n        if (idx === changedIdx) {\n          var value = e.target.value;\n\n          if (field === 'period') {\n            value = value.toUpperCase();\n            if (!value.startsWith('P')) {\n              value = 'P' + value;\n            }\n          }\n\n          options[idx][field] = value;\n        }\n      });\n\n      _this2._update(options);\n    };\n  },\n  _buildTimeRangeOptions: function _buildTimeRangeOptions() {\n    var _this3 = this;\n\n    return this.props.options.map(function (option, idx) {\n      var period = option.period;\n      var description = option.description;\n      var errorStyle = _ISODurationUtils2.default.durationStyle(period, _this3.props.validator, 'has-error');\n\n      return _react2.default.createElement(\n        'div',\n        { key: 'timerange-option-' + idx },\n        _react2.default.createElement(\n          _reactBootstrap.Row,\n          null,\n          _react2.default.createElement(\n            _reactBootstrap.Col,\n            { xs: 4 },\n            _react2.default.createElement(\n              'div',\n              { className: 'input-group ' + errorStyle },\n              _react2.default.createElement('input', { type: 'text', className: 'form-control', value: period, onChange: _this3._onChange(idx, 'period') }),\n              _react2.default.createElement(\n                'span',\n                { className: 'input-group-addon' },\n                _ISODurationUtils2.default.formatDuration(period, _this3.props.validator)\n              )\n            )\n          ),\n          _react2.default.createElement(\n            _reactBootstrap.Col,\n            { xs: 8 },\n            _react2.default.createElement(\n              'div',\n              { className: 'input-group' },\n              _react2.default.createElement('input', { type: 'text',\n                className: 'form-control',\n                placeholder: 'Add description...',\n                value: description,\n                onChange: _this3._onChange(idx, 'description') }),\n              _react2.default.createElement(\n                'span',\n                { className: 'input-group-addon' },\n                _react2.default.createElement('i', { className: 'fa fa-trash', style: { cursor: 'pointer' }, onClick: _this3._onRemove(idx) })\n              )\n            )\n          )\n        )\n      );\n    });\n  },\n  render: function render() {\n    return _react2.default.createElement(\n      'div',\n      { className: 'form-group' },\n      _react2.default.createElement(\n        'label',\n        { className: 'control-label' },\n        this.props.title\n      ),\n      _react2.default.createElement(\n        'span',\n        { className: 'help-block' },\n        this.props.help\n      ),\n      _react2.default.createElement(\n        'div',\n        { className: 'wrapper' },\n        this._buildTimeRangeOptions()\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Button,\n        { bsSize: 'xs', onClick: this._onAdd },\n        this.props.addButtonTitle\n      )\n    );\n  }\n});\n\nexports.default = TimeRangeOptionsForm;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1477:\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TimeRangeOptionsSummary = _react2.default.createClass({\n  displayName: 'TimeRangeOptionsSummary',\n\n  propTypes: {\n    options: _propTypes2.default.object.isRequired\n  },\n\n  render: function render() {\n    var _this = this;\n\n    var timerangeOptionsSummary = null;\n    if (this.props.options) {\n      timerangeOptionsSummary = Object.keys(this.props.options).map(function (key, idx) {\n        return _react2.default.createElement(\n          'span',\n          { key: 'timerange-options-summary-' + idx },\n          _react2.default.createElement(\n            'dt',\n            null,\n            key\n          ),\n          _react2.default.createElement(\n            'dd',\n            null,\n            _this.props.options[key]\n          )\n        );\n      });\n    }\n\n    return _react2.default.createElement(\n      'dl',\n      { className: 'deflist' },\n      timerangeOptionsSummary\n    );\n  }\n});\n\nexports.default = TimeRangeOptionsSummary;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1478:\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 _reactBootstrap = __webpack_require__(16);\n\nvar _BootstrapModalForm = __webpack_require__(266);\n\nvar _BootstrapModalForm2 = _interopRequireDefault(_BootstrapModalForm);\n\nvar _common = __webpack_require__(46);\n\nvar _ObjectUtils = __webpack_require__(264);\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _javascriptNaturalSort = __webpack_require__(917);\n\nvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MessageProcessorsConfig = _react2.default.createClass({\n  displayName: 'MessageProcessorsConfig',\n\n  propTypes: {\n    config: _propTypes2.default.object.isRequired,\n    updateConfig: _propTypes2.default.func.isRequired\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      config: {\n        disabled_processors: [],\n        processor_order: []\n      }\n    };\n  },\n  getInitialState: function getInitialState() {\n    return {\n      config: {\n        disabled_processors: this.props.config.disabled_processors,\n        processor_order: this.props.config.processor_order\n      }\n    };\n  },\n  _openModal: function _openModal() {\n    this.refs.configModal.open();\n  },\n  _closeModal: function _closeModal() {\n    this.refs.configModal.close();\n  },\n  _saveConfig: function _saveConfig() {\n    var _this = this;\n\n    if (!this._hasNoActiveProcessor()) {\n      this.props.updateConfig(this.state.config).then(function () {\n        _this._closeModal();\n      });\n    }\n  },\n  _resetConfig: function _resetConfig() {\n    // Reset to initial state when the modal is closed without saving.\n    this.setState(this.getInitialState());\n  },\n  _updateSorting: function _updateSorting(newSorting) {\n    var update = _ObjectUtils2.default.clone(this.state.config);\n\n    update.processor_order = newSorting.map(function (item) {\n      return { class_name: item.id, name: item.title };\n    });\n\n    this.setState({ config: update });\n  },\n  _toggleStatus: function _toggleStatus(className) {\n    var _this2 = this;\n\n    return function () {\n      var disabledProcessors = _this2.state.config.disabled_processors;\n      var update = _ObjectUtils2.default.clone(_this2.state.config);\n      var checked = _this2.refs[className].checked;\n\n      if (checked) {\n        update.disabled_processors = disabledProcessors.filter(function (p) {\n          return p !== className;\n        });\n      } else if (disabledProcessors.indexOf(className) === -1) {\n        update.disabled_processors.push(className);\n      }\n\n      _this2.setState({ config: update });\n    };\n  },\n  _hasNoActiveProcessor: function _hasNoActiveProcessor() {\n    return this.state.config.disabled_processors.length >= this.state.config.processor_order.length;\n  },\n  _noActiveProcessorWarning: function _noActiveProcessorWarning() {\n    if (this._hasNoActiveProcessor()) {\n      return _react2.default.createElement(\n        _reactBootstrap.Alert,\n        { bsStyle: 'danger' },\n        _react2.default.createElement(\n          'strong',\n          null,\n          'ERROR:'\n        ),\n        ' No active message processor!'\n      );\n    }\n  },\n  _summary: function _summary() {\n    var _this3 = this;\n\n    return this.state.config.processor_order.map(function (processor, idx) {\n      var status = _this3.state.config.disabled_processors.filter(function (p) {\n        return p === processor.class_name;\n      }).length > 0 ? 'disabled' : 'active';\n      return _react2.default.createElement(\n        'tr',\n        { key: idx },\n        _react2.default.createElement(\n          'td',\n          null,\n          idx + 1\n        ),\n        _react2.default.createElement(\n          'td',\n          null,\n          processor.name\n        ),\n        _react2.default.createElement(\n          'td',\n          null,\n          status\n        )\n      );\n    });\n  },\n  _sortableItems: function _sortableItems() {\n    return this.state.config.processor_order.map(function (processor) {\n      return { id: processor.class_name, title: processor.name };\n    });\n  },\n  _statusForm: function _statusForm() {\n    var _this4 = this;\n\n    return _ObjectUtils2.default.clone(this.state.config.processor_order).sort(function (a, b) {\n      return (0, _javascriptNaturalSort2.default)(a.name, b.name);\n    }).map(function (processor, idx) {\n      var enabled = _this4.state.config.disabled_processors.filter(function (p) {\n        return p === processor.class_name;\n      }).length < 1;\n\n      return _react2.default.createElement(\n        'tr',\n        { key: idx },\n        _react2.default.createElement(\n          'td',\n          null,\n          processor.name\n        ),\n        _react2.default.createElement(\n          'td',\n          null,\n          _react2.default.createElement('input', { ref: processor.class_name,\n            type: 'checkbox',\n            checked: enabled,\n            onChange: _this4._toggleStatus(processor.class_name) })\n        )\n      );\n    });\n  },\n  render: function render() {\n    return _react2.default.createElement(\n      'div',\n      null,\n      _react2.default.createElement(\n        'h2',\n        null,\n        'Message Processors Configuration'\n      ),\n      _react2.default.createElement(\n        'p',\n        null,\n        'The following message processors are executed in order. Disabled processors will be skipped.'\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Table,\n        { striped: true, bordered: true, condensed: true, className: 'top-margin' },\n        _react2.default.createElement(\n          'thead',\n          null,\n          _react2.default.createElement(\n            'tr',\n            null,\n            _react2.default.createElement(\n              'th',\n              null,\n              '#'\n            ),\n            _react2.default.createElement(\n              'th',\n              null,\n              'Processor'\n            ),\n            _react2.default.createElement(\n              'th',\n              null,\n              'Status'\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'tbody',\n          null,\n          this._summary()\n        )\n      ),\n      _react2.default.createElement(\n        _common.IfPermitted,\n        { permissions: 'clusterconfigentry:edit' },\n        _react2.default.createElement(\n          _reactBootstrap.Button,\n          { bsStyle: 'info', bsSize: 'xs', onClick: this._openModal },\n          'Update'\n        )\n      ),\n      _react2.default.createElement(\n        _BootstrapModalForm2.default,\n        { ref: 'configModal',\n          title: 'Update Message Processors Configuration',\n          onSubmitForm: this._saveConfig,\n          onModalClose: this._resetConfig,\n          submitButtonText: 'Save' },\n        _react2.default.createElement(\n          'h3',\n          null,\n          'Order'\n        ),\n        _react2.default.createElement(\n          'p',\n          null,\n          'Use drag and drop to change the execution order of the message processors.'\n        ),\n        _react2.default.createElement(_common.SortableList, { items: this._sortableItems(), onMoveItem: this._updateSorting }),\n        _react2.default.createElement(\n          'h3',\n          null,\n          'Status'\n        ),\n        _react2.default.createElement(\n          'p',\n          null,\n          'Change the checkboxes to change the status of a message processor.'\n        ),\n        _react2.default.createElement(\n          _reactBootstrap.Table,\n          { striped: true, bordered: true, condensed: true, className: 'top-margin' },\n          _react2.default.createElement(\n            'thead',\n            null,\n            _react2.default.createElement(\n              'tr',\n              null,\n              _react2.default.createElement(\n                'th',\n                null,\n                'Processor'\n              ),\n              _react2.default.createElement(\n                'th',\n                null,\n                'Enabled'\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'tbody',\n            null,\n            this._statusForm()\n          )\n        ),\n        this._noActiveProcessorWarning()\n      )\n    );\n  }\n});\n\nexports.default = MessageProcessorsConfig;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 944:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar refs = 0;\nvar dispose;\nvar content = __webpack_require__(945);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) exports.locals = content.locals;\nexports.use = exports.ref = function() {\n\tif(!(refs++)) {\n\t\tdispose = __webpack_require__(21)(content, {});\n\t}\n\treturn exports;\n};\nexports.unuse = exports.unref = function() {\n       if(refs > 0 && !(--refs)) {\n\t\tdispose();\n\t\tdispose = null;\n\t}\n};\nif(false) {\n\tvar lastRefs = module.hot.data && module.hot.data.refs || 0;\n\tif(lastRefs) {\n\t\texports.ref();\n\t\tif(!content.locals) {\n\t\t\trefs = lastRefs;\n\t\t}\n\t}\n\tif(!content.locals) {\n\t\tmodule.hot.accept();\n\t}\n\tmodule.hot.dispose(function(data) {\n\t\tdata.refs = content.locals ? 0 : refs;\n\t\tif(dispose) {\n\t\t\tdispose();\n\t\t}\n\t});\n}\n\n/***/ }),\n\n/***/ 945:\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(20)(undefined);\n// imports\n\n\n// module\nexports.push([module.i, \".deflist{margin-top:10px}.deflist dt{float:left;clear:left}.deflist dd{margin-left:160px}.top-margin,hr.separator{margin-top:10px}hr.separator{margin-bottom:5px}\", \"\"]);\n\n// exports\n\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// 34.746b58959a350aa1ebcf.js","import React from 'react';\nimport Reflux from 'reflux';\nimport { Row, Col } from 'react-bootstrap';\nimport { DocumentTitle, PageHeader, Spinner } from 'components/common';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst ConfigurationsStore = StoreProvider.getStore('Configurations');\n\nimport ActionsProvider from 'injection/ActionsProvider';\nconst ConfigurationActions = ActionsProvider.getActions('Configuration');\n\nimport SearchesConfig from 'components/configurations/SearchesConfig';\nimport MessageProcessorsConfig from 'components/configurations/MessageProcessorsConfig';\n\nconst ConfigurationsPage = React.createClass({\n  mixins: [Reflux.connect(ConfigurationsStore)],\n\n  getInitialState() {\n    return {\n      configuration: null,\n    };\n  },\n\n  componentDidMount() {\n    this.style.use();\n    ConfigurationActions.list(this.SEARCHES_CLUSTER_CONFIG);\n    ConfigurationActions.listMessageProcessorsConfig(this.MESSAGE_PROCESSORS_CONFIG);\n\n    PluginStore.exports('systemConfigurations').forEach((systemConfig) => {\n      ConfigurationActions.list(systemConfig.configType);\n    });\n  },\n\n  componentWillUnmount() {\n    this.style.unuse();\n  },\n\n  style: require('!style/useable!css!components/configurations/ConfigurationStyles.css'),\n  SEARCHES_CLUSTER_CONFIG: 'org.graylog2.indexer.searches.SearchesClusterConfig',\n  MESSAGE_PROCESSORS_CONFIG: 'org.graylog2.messageprocessors.MessageProcessorsConfig',\n\n  _getConfig(configType) {\n    if (this.state.configuration && this.state.configuration[configType]) {\n      return this.state.configuration[configType];\n    }\n    return null;\n  },\n\n  _onUpdate(configType) {\n    return (config) => {\n      switch (configType) {\n        case this.MESSAGE_PROCESSORS_CONFIG:\n          return ConfigurationActions.updateMessageProcessorsConfig(configType, config);\n        default:\n          return ConfigurationActions.update(configType, config);\n      }\n    };\n  },\n\n  _pluginConfigs() {\n    return PluginStore.exports('systemConfigurations').map((systemConfig, idx) => {\n      return React.createElement(systemConfig.component, {\n        key: `system-configuration-${idx}`,\n        config: this._getConfig(systemConfig.configType) || undefined,\n        updateConfig: this._onUpdate(systemConfig.configType),\n      });\n    });\n  },\n\n  _pluginConfigRows() {\n    const pluginConfigs = this._pluginConfigs();\n    const rows = [];\n    let idx = 0;\n\n    // Put two plugin config components per row.\n    while (pluginConfigs.length > 0) {\n      idx++;\n      rows.push(\n        \n          \n            {pluginConfigs.shift()}\n          \n          \n            {pluginConfigs.shift() || ( )}\n          \n        ,\n      );\n    }\n\n    return rows;\n  },\n\n  render() {\n    const searchesConfig = this._getConfig(this.SEARCHES_CLUSTER_CONFIG);\n    const messageProcessorsConfig = this._getConfig(this.MESSAGE_PROCESSORS_CONFIG);\n    let searchesConfigComponent;\n    let messageProcessorsConfigComponent;\n    if (searchesConfig) {\n      searchesConfigComponent = (\n        \n      );\n    } else {\n      searchesConfigComponent = ();\n    }\n    if (messageProcessorsConfig) {\n      messageProcessorsConfigComponent = (\n        \n      );\n    } else {\n      messageProcessorsConfigComponent = ();\n    }\n\n    const pluginConfigRows = this._pluginConfigRows();\n\n    return (\n      \n        \n          \n            \n              You can configure system settings for different sub systems on this page.\n            \n          \n\n          \n            \n              {searchesConfigComponent}\n            \n            \n              {messageProcessorsConfigComponent}\n            \n          \n\n          {pluginConfigRows.length > 0 && \n            \n              

Plugins

\n

Configuration for installed plugins.

\n
\n
\n {pluginConfigRows}\n
\n \n
}\n
\n
\n );\n },\n});\n\nexport default ConfigurationsPage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/ConfigurationsPage.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { BootstrapModalForm, Input } from 'components/bootstrap';\nimport { IfPermitted, ISODurationInput } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\n\nimport moment from 'moment';\nimport {} from 'moment-duration-format';\n\nimport TimeRangeOptionsForm from './TimeRangeOptionsForm';\nimport TimeRangeOptionsSummary from './TimeRangeOptionsSummary';\n\nconst SearchesConfig = React.createClass({\n propTypes: {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n },\n\n getInitialState() {\n const queryTimeRangeLimit = this._getPropConfigValue('query_time_range_limit');\n const relativeTimerangeOptions = this._getPropConfigValue('relative_timerange_options');\n const surroundingTimerangeOptions = this._getPropConfigValue('surrounding_timerange_options');\n const surroundingFilterFields = this._getPropConfigValue('surrounding_filter_fields');\n const analysisDisabledFields = this._getPropConfigValue('analysis_disabled_fields');\n\n return {\n config: {\n query_time_range_limit: queryTimeRangeLimit,\n relative_timerange_options: relativeTimerangeOptions,\n surrounding_timerange_options: surroundingTimerangeOptions,\n surrounding_filter_fields: surroundingFilterFields,\n analysis_disabled_fields: analysisDisabledFields,\n },\n limitEnabled: moment.duration(queryTimeRangeLimit).asMilliseconds() > 0,\n relativeTimeRangeOptionsUpdate: undefined,\n surroundingTimeRangeOptionsUpdate: undefined,\n };\n },\n\n _getPropConfigValue(field) {\n return this.props.config ? this.props.config[field] : undefined;\n },\n\n _onUpdate(field) {\n return (newOptions) => {\n const update = ObjectUtils.clone(this.state.config);\n\n update[field] = newOptions;\n\n this.setState({ config: update });\n };\n },\n\n _onRelativeTimeRangeOptionsUpdate(data) {\n this.setState({ relativeTimeRangeOptionsUpdate: data });\n },\n\n _onSurroundingTimeRangeOptionsUpdate(data) {\n this.setState({ surroundingTimeRangeOptionsUpdate: data });\n },\n\n _buildTimeRangeOptions(options) {\n return Object.keys(options).map((key) => {\n return { period: key, description: options[key] };\n });\n },\n\n _onFilterFieldsUpdate(e) {\n this.setState({ surroundingFilterFields: e.target.value });\n },\n\n _onAnalysisDisabledFieldsUpdate(e) {\n this.setState({ analysisDisabledFields: e.target.value });\n },\n\n _onChecked() {\n const config = ObjectUtils.clone(this.state.config);\n\n if (this.state.limitEnabled) {\n // If currently enabled, disable by setting the limit to 0 seconds.\n config.query_time_range_limit = 'PT0S';\n } else {\n // If currently not enabled, set a default of 30 days.\n config.query_time_range_limit = 'P30D';\n }\n\n this.setState({ config: config, limitEnabled: !this.state.limitEnabled });\n },\n\n _isEnabled() {\n return this.state.limitEnabled;\n },\n\n _splitStringList(stringList) {\n return stringList.split(',').map(f => f.trim()).filter(f => f.length > 0);\n },\n\n _saveConfig() {\n const update = ObjectUtils.clone(this.state.config);\n\n if (this.state.relativeTimeRangeOptionsUpdate) {\n update.relative_timerange_options = {};\n\n this.state.relativeTimeRangeOptionsUpdate.forEach((entry) => {\n update.relative_timerange_options[entry.period] = entry.description;\n });\n\n this.setState({ relativeTimeRangeOptionsUpdate: undefined });\n }\n\n if (this.state.surroundingTimeRangeOptionsUpdate) {\n update.surrounding_timerange_options = {};\n\n this.state.surroundingTimeRangeOptionsUpdate.forEach((entry) => {\n update.surrounding_timerange_options[entry.period] = entry.description;\n });\n\n this.setState({ surroundingTimeRangeOptionsUpdate: undefined });\n }\n\n // Make sure to update filter fields\n if (this.state.surroundingFilterFields) {\n update.surrounding_filter_fields = this._splitStringList(this.state.surroundingFilterFields);\n this.setState({ surroundingFilterFields: undefined });\n }\n\n if (this.state.analysisDisabledFields) {\n update.analysis_disabled_fields = this._splitStringList(this.state.analysisDisabledFields);\n this.setState({ analysisDisabledFields: undefined });\n }\n\n this.props.updateConfig(update).then(() => {\n this._closeModal();\n });\n },\n\n _resetConfig() {\n // Reset to initial state when the modal is closed without saving.\n this.setState(this.getInitialState());\n },\n\n _openModal() {\n this.refs.searchesConfigModal.open();\n },\n\n _closeModal() {\n this.refs.searchesConfigModal.close();\n },\n\n queryTimeRangeLimitValidator(milliseconds) {\n return milliseconds >= 1;\n },\n\n relativeTimeRangeValidator(milliseconds, duration) {\n return milliseconds >= 1 || duration === 'PT0S';\n },\n\n surroundingTimeRangeValidator(milliseconds) {\n return milliseconds >= 1;\n },\n\n render() {\n const config = this.state.config;\n const duration = moment.duration(config.query_time_range_limit);\n const limit = this._isEnabled() ? `${config.query_time_range_limit} (${duration.format()})` : 'disabled';\n\n let filterFields;\n let filterFieldsString;\n if (this.state.config.surrounding_filter_fields) {\n filterFields = this.state.config.surrounding_filter_fields.map((f, idx) =>
  • {f}
  • );\n filterFieldsString = this.state.config.surrounding_filter_fields.join(', ');\n }\n\n let analysisDisabledFields;\n let analysisDisabledFieldsString;\n if (this.state.config.analysis_disabled_fields) {\n analysisDisabledFields = this.state.config.analysis_disabled_fields.map((f, idx) =>
  • {f}
  • );\n analysisDisabledFieldsString = this.state.config.analysis_disabled_fields.join(', ');\n }\n\n return (\n
    \n

    Search Configuration

    \n\n
    \n
    Query time range limit
    \n
    {limit}
    \n
    The maximum time users can query data in the past. This prevents users from accidentally creating queries which\n span a lot of data and would need a long time and many resources to complete (if at all).
    \n
    \n\n \n \n Relative time range options\n \n \n \n Surrounding time range options\n \n\n Surrounding search filter fields\n
      \n {filterFields}\n
    \n\n UI analysis disabled for fields\n
      \n {analysisDisabledFields}\n
    \n \n
    \n \n \n \n\n \n
    \n \n {this._isEnabled() &&\n \n }\n\n Configure the available options for the relative time range selector as ISO8601 duration} />\n\n Configure the available options for the surrounding time range selector as ISO8601 duration} />\n\n \n\n \n
    \n
    \n
    \n );\n },\n});\n\nexport default SearchesConfig;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/configurations/SearchesConfig.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport ISODurationUtils from 'util/ISODurationUtils';\n\nimport ObjectUtils from 'util/ObjectUtils';\n\n/**\n * Expects `this.props.options` to be an array of period/description objects. `[{period: 'PT1S', description: 'yo'}]`\n */\nconst TimeRangeOptionsForm = React.createClass({\n propTypes: {\n options: PropTypes.array,\n title: PropTypes.string.isRequired,\n help: PropTypes.any.isRequired,\n addButtonTitle: PropTypes.string,\n update: PropTypes.func.isRequired,\n validator: PropTypes.func,\n },\n\n getDefaultProps() {\n return {\n options: [],\n addButtonTitle: 'Add option',\n validator: () => true,\n };\n },\n\n _update(options) {\n this.props.update(options);\n },\n\n _onAdd() {\n const options = ObjectUtils.clone(this.props.options);\n\n if (options) {\n options.push({ period: '', description: '' });\n this._update(options);\n }\n },\n\n _onRemove(removedIdx) {\n return () => {\n const options = ObjectUtils.clone(this.props.options);\n\n // Remove element at index\n options.splice(removedIdx, 1);\n\n this._update(options);\n };\n },\n\n _onChange(changedIdx, field) {\n return (e) => {\n const options = ObjectUtils.clone(this.props.options);\n\n options.forEach((o, idx) => {\n if (idx === changedIdx) {\n let value = e.target.value;\n\n if (field === 'period') {\n value = value.toUpperCase();\n if (!value.startsWith('P')) {\n value = `P${value}`;\n }\n }\n\n options[idx][field] = value;\n }\n });\n\n this._update(options);\n };\n },\n\n\n _buildTimeRangeOptions() {\n return this.props.options.map((option, idx) => {\n const period = option.period;\n const description = option.description;\n const errorStyle = ISODurationUtils.durationStyle(period, this.props.validator, 'has-error');\n\n return (\n
    \n \n \n
    \n \n \n {ISODurationUtils.formatDuration(period, this.props.validator)}\n \n
    \n \n \n
    \n \n \n \n \n
    \n \n
    \n
    \n );\n });\n },\n\n render() {\n return (\n
    \n \n {this.props.help}\n
    \n {this._buildTimeRangeOptions()}\n
    \n \n
    \n );\n },\n});\n\nexport default TimeRangeOptionsForm;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/configurations/TimeRangeOptionsForm.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst TimeRangeOptionsSummary = React.createClass({\n propTypes: {\n options: PropTypes.object.isRequired,\n },\n\n render() {\n let timerangeOptionsSummary = null;\n if (this.props.options) {\n timerangeOptionsSummary = Object.keys(this.props.options).map((key, idx) => {\n return (\n \n
    {key}
    \n
    {this.props.options[key]}
    \n
    \n );\n });\n }\n\n return (\n
    \n {timerangeOptionsSummary}\n
    \n );\n },\n});\n\nexport default TimeRangeOptionsSummary;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/configurations/TimeRangeOptionsSummary.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Button, Alert, Table } from 'react-bootstrap';\nimport BootstrapModalForm from 'components/bootstrap/BootstrapModalForm';\nimport { IfPermitted, SortableList } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\nimport naturalSort from 'javascript-natural-sort';\n\nconst MessageProcessorsConfig = React.createClass({\n propTypes: {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n config: {\n disabled_processors: [],\n processor_order: [],\n },\n };\n },\n\n getInitialState() {\n return {\n config: {\n disabled_processors: this.props.config.disabled_processors,\n processor_order: this.props.config.processor_order,\n },\n };\n },\n\n _openModal() {\n this.refs.configModal.open();\n },\n\n _closeModal() {\n this.refs.configModal.close();\n },\n\n _saveConfig() {\n if (!this._hasNoActiveProcessor()) {\n this.props.updateConfig(this.state.config).then(() => {\n this._closeModal();\n });\n }\n },\n\n _resetConfig() {\n // Reset to initial state when the modal is closed without saving.\n this.setState(this.getInitialState());\n },\n\n _updateSorting(newSorting) {\n const update = ObjectUtils.clone(this.state.config);\n\n update.processor_order = newSorting.map((item) => {\n return { class_name: item.id, name: item.title };\n });\n\n this.setState({ config: update });\n },\n\n _toggleStatus(className) {\n return () => {\n const disabledProcessors = this.state.config.disabled_processors;\n const update = ObjectUtils.clone(this.state.config);\n const checked = this.refs[className].checked;\n\n if (checked) {\n update.disabled_processors = disabledProcessors.filter(p => p !== className);\n } else if (disabledProcessors.indexOf(className) === -1) {\n update.disabled_processors.push(className);\n }\n\n this.setState({ config: update });\n };\n },\n\n _hasNoActiveProcessor() {\n return this.state.config.disabled_processors.length >= this.state.config.processor_order.length;\n },\n\n _noActiveProcessorWarning() {\n if (this._hasNoActiveProcessor()) {\n return (\n \n ERROR: No active message processor!\n \n );\n }\n },\n\n _summary() {\n return this.state.config.processor_order.map((processor, idx) => {\n const status = this.state.config.disabled_processors.filter(p => p === processor.class_name).length > 0 ? 'disabled' : 'active';\n return (\n \n {idx + 1}\n {processor.name}\n {status}\n \n );\n });\n },\n\n _sortableItems() {\n return this.state.config.processor_order.map((processor) => {\n return { id: processor.class_name, title: processor.name };\n });\n },\n\n _statusForm() {\n return ObjectUtils.clone(this.state.config.processor_order).sort((a, b) => naturalSort(a.name, b.name)).map((processor, idx) => {\n const enabled = this.state.config.disabled_processors.filter(p => p === processor.class_name).length < 1;\n\n return (\n \n {processor.name}\n \n \n \n \n );\n });\n },\n\n render() {\n return (\n
    \n

    Message Processors Configuration

    \n

    The following message processors are executed in order. Disabled processors will be skipped.

    \n\n \n \n \n \n \n \n \n \n \n {this._summary()}\n \n
    #ProcessorStatus
    \n\n \n \n \n\n \n

    Order

    \n

    Use drag and drop to change the execution order of the message processors.

    \n \n\n

    Status

    \n

    Change the checkboxes to change the status of a message processor.

    \n \n \n \n \n \n \n \n \n {this._statusForm()}\n \n
    ProcessorEnabled
    \n {this._noActiveProcessorWarning()}\n
    \n
    \n );\n },\n});\n\nexport default MessageProcessorsConfig;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/configurations/MessageProcessorsConfig.jsx","var refs = 0;\nvar dispose;\nvar content = require(\"!!../../../node_modules/css-loader/index.js!./ConfigurationStyles.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) exports.locals = content.locals;\nexports.use = exports.ref = function() {\n\tif(!(refs++)) {\n\t\tdispose = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, {});\n\t}\n\treturn exports;\n};\nexports.unuse = exports.unref = function() {\n if(refs > 0 && !(--refs)) {\n\t\tdispose();\n\t\tdispose = null;\n\t}\n};\nif(module.hot) {\n\tvar lastRefs = module.hot.data && module.hot.data.refs || 0;\n\tif(lastRefs) {\n\t\texports.ref();\n\t\tif(!content.locals) {\n\t\t\trefs = lastRefs;\n\t\t}\n\t}\n\tif(!content.locals) {\n\t\tmodule.hot.accept();\n\t}\n\tmodule.hot.dispose(function(data) {\n\t\tdata.refs = content.locals ? 0 : refs;\n\t\tif(dispose) {\n\t\t\tdispose();\n\t\t}\n\t});\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/style-loader/useable.js!./node_modules/css-loader!./src/components/configurations/ConfigurationStyles.css\n// module id = 944\n// module chunks = 7 8 9 10 34","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(undefined);\n// imports\n\n\n// module\nexports.push([module.id, \".deflist{margin-top:10px}.deflist dt{float:left;clear:left}.deflist dd{margin-left:160px}.top-margin,hr.separator{margin-top:10px}hr.separator{margin-bottom:5px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./src/components/configurations/ConfigurationStyles.css\n// module id = 945\n// module chunks = 7 8 9 10 34"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy