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

web-interface.assets.24.24.362ba12fc38f8705dbe5.js Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
webpackJsonp([24],{169:function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(29)();\n// imports\n\n\n// module\nexports.push([module.id, ".deflist{margin-top:10px}.deflist dt{float:left;clear:left}.deflist dd{margin-left:150px}.top-margin,hr.separator{margin-top:10px}hr.separator{margin-bottom:5px}", ""]);\n\n// exports\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./src/components/configurations/ConfigurationStyles.css\n ** module id = 169\n ** module chunks = 6 24\n **/\n//# sourceURL=webpack:///./src/components/configurations/ConfigurationStyles.css?./~/css-loader')},278:function(module,exports,__webpack_require__){eval("var refs = 0;\nvar dispose;\nvar content = __webpack_require__(169);\nif(typeof content === 'string') content = [[module.id, content, '']];\nexports.use = exports.ref = function() {\n	if(!(refs++)) {\n		exports.locals = content.locals;\n		dispose = __webpack_require__(30)(content, {});\n	}\n	return exports;\n};\nexports.unuse = exports.unref = function() {\n	if(!(--refs)) {\n		dispose();\n		dispose = null;\n	}\n};\nif(false) {\n	var lastRefs = module.hot.data && module.hot.data.refs || 0;\n	if(lastRefs) {\n		exports.ref();\n		if(!content.locals) {\n			refs = lastRefs;\n		}\n	}\n	if(!content.locals) {\n		module.hot.accept();\n	}\n	module.hot.dispose(function(data) {\n		data.refs = content.locals ? 0 : refs;\n		if(dispose) {\n			dispose();\n		}\n	});\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/style-loader/useable.js!./~/css-loader!./src/components/configurations/ConfigurationStyles.css\n ** module id = 278\n ** module chunks = 6 24\n **/\n//# sourceURL=webpack:///./src/components/configurations/ConfigurationStyles.css?./~/style-loader/useable.js!./~/css-loader")},814:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsBootstrapBootstrapModalForm = __webpack_require__(33);\n\nvar _componentsBootstrapBootstrapModalForm2 = _interopRequireDefault(_componentsBootstrapBootstrapModalForm);\n\nvar _componentsCommon = __webpack_require__(5);\n\nvar _utilObjectUtils = __webpack_require__(57);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\n\nvar _javascriptNaturalSort = __webpack_require__(45);\n\nvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\nvar MessageProcessorsConfig = _react2['default'].createClass({\n  displayName: 'MessageProcessorsConfig',\n\n  propTypes: {\n    config: _react2['default'].PropTypes.object.isRequired,\n    updateConfig: _react2['default'].PropTypes.func.isRequired\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      config: {\n        disabled_processors: [],\n        processor_order: []\n      }\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\n  _openModal: function _openModal() {\n    this.refs.configModal.open();\n  },\n\n  _closeModal: function _closeModal() {\n    this.refs.configModal.close();\n  },\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\n  _resetConfig: function _resetConfig() {\n    // Reset to initial state when the modal is closed without saving.\n    this.setState(this.getInitialState());\n  },\n\n  _updateSorting: function _updateSorting(newSorting) {\n    var update = _utilObjectUtils2['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\n  _toggleStatus: function _toggleStatus(className) {\n    var _this2 = this;\n\n    return function () {\n      var disabledProcessors = _this2.state.config.disabled_processors;\n      var update = _utilObjectUtils2['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 {\n        if (disabledProcessors.indexOf(className) === -1) {\n          update.disabled_processors.push(className);\n        }\n      }\n\n      _this2.setState({ config: update });\n    };\n  },\n\n  _hasNoActiveProcessor: function _hasNoActiveProcessor() {\n    return this.state.config.disabled_processors.length >= this.state.config.processor_order.length;\n  },\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\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\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\n  _statusForm: function _statusForm() {\n    var _this4 = this;\n\n    return _utilObjectUtils2['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\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        _componentsCommon.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        _componentsBootstrapBootstrapModalForm2['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(_componentsCommon.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/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"MessageProcessorsConfig.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurations/MessageProcessorsConfig.jsx\n ** module id = 814\n ** module chunks = 24\n **/\n//# sourceURL=webpack:///./src/components/configurations/MessageProcessorsConfig.jsx?")},815:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsBootstrapBootstrapModalForm = __webpack_require__(33);\n\nvar _componentsBootstrapBootstrapModalForm2 = _interopRequireDefault(_componentsBootstrapBootstrapModalForm);\n\nvar _componentsCommon = __webpack_require__(5);\n\nvar _utilObjectUtils = __webpack_require__(57);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\n\nvar _moment = __webpack_require__(21);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(103);\n\nvar _TimeRangeOptionsForm = __webpack_require__(816);\n\nvar _TimeRangeOptionsForm2 = _interopRequireDefault(_TimeRangeOptionsForm);\n\nvar _TimeRangeOptionsSummary = __webpack_require__(817);\n\nvar _TimeRangeOptionsSummary2 = _interopRequireDefault(_TimeRangeOptionsSummary);\n\nvar SearchesConfig = _react2['default'].createClass({\n  displayName: 'SearchesConfig',\n\n  propTypes: {\n    config: _react2['default'].PropTypes.object.isRequired,\n    updateConfig: _react2['default'].PropTypes.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\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      },\n      limitEnabled: _moment2['default'].duration(queryTimeRangeLimit).asMilliseconds() > 0,\n      relativeTimeRangeOptionsUpdate: undefined,\n      surroundingTimeRangeOptionsUpdate: undefined\n    };\n  },\n\n  _getPropConfigValue: function _getPropConfigValue(field) {\n    return this.props.config ? this.props.config[field] : undefined;\n  },\n\n  _onUpdate: function _onUpdate(field) {\n    var _this = this;\n\n    return function (newOptions) {\n      var update = _utilObjectUtils2['default'].clone(_this.state.config);\n\n      update[field] = newOptions;\n\n      _this.setState({ config: update });\n    };\n  },\n\n  _onRelativeTimeRangeOptionsUpdate: function _onRelativeTimeRangeOptionsUpdate(data) {\n    this.setState({ relativeTimeRangeOptionsUpdate: data });\n  },\n\n  _onSurroundingTimeRangeOptionsUpdate: function _onSurroundingTimeRangeOptionsUpdate(data) {\n    this.setState({ surroundingTimeRangeOptionsUpdate: data });\n  },\n\n  _buildTimeRangeOptions: function _buildTimeRangeOptions(options) {\n    return Object.keys(options).map(function (key) {\n      return { period: key, description: options[key] };\n    });\n  },\n\n  _onFilterFieldsUpdate: function _onFilterFieldsUpdate(e) {\n    this.setState({ surroundingFilterFields: e.target.value });\n  },\n\n  _onChecked: function _onChecked() {\n    var config = _utilObjectUtils2['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\n  _isEnabled: function _isEnabled() {\n    return this.state.limitEnabled;\n  },\n\n  _saveConfig: function _saveConfig() {\n    var _this2 = this;\n\n    var update = _utilObjectUtils2['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.state.surroundingFilterFields.split(',').map(function (f) {\n        return f.trim();\n      }).filter(function (f) {\n        return f.length > 0;\n      });\n\n      this.setState({ surroundingFilterFields: undefined });\n    }\n\n    this.props.updateConfig(update).then(function () {\n      _this2._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\n  _openModal: function _openModal() {\n    this.refs.searchesConfigModal.open();\n  },\n\n  _closeModal: function _closeModal() {\n    this.refs.searchesConfigModal.close();\n  },\n\n  queryTimeRangeLimitValidator: function queryTimeRangeLimitValidator(milliseconds) {\n    return milliseconds >= 1;\n  },\n\n  relativeTimeRangeValidator: function relativeTimeRangeValidator(milliseconds, duration) {\n    return milliseconds >= 1 || duration === 'PT0S';\n  },\n\n  surroundingTimeRangeValidator: function surroundingTimeRangeValidator(milliseconds) {\n    return milliseconds >= 1;\n  },\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 = undefined;\n    var filterFieldsString = undefined;\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    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        )\n      ),\n      _react2['default'].createElement(\n        _componentsCommon.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        _componentsBootstrapBootstrapModalForm2['default'],\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(_reactBootstrap.Input, { type: 'checkbox', label: 'Enable query limit',\n            name: 'enabled',\n            checked: this._isEnabled(),\n            onChange: this._onChecked }),\n          this._isEnabled() && _react2['default'].createElement(_componentsCommon.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(_reactBootstrap.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        )\n      )\n    );\n  }\n});\n\nexports['default'] = SearchesConfig;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"SearchesConfig.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurations/SearchesConfig.jsx\n ** module id = 815\n ** module chunks = 24\n **/\n//# sourceURL=webpack:///./src/components/configurations/SearchesConfig.jsx?")},816:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _utilISODurationUtils = __webpack_require__(378);\n\nvar _utilISODurationUtils2 = _interopRequireDefault(_utilISODurationUtils);\n\nvar _utilObjectUtils = __webpack_require__(57);\n\nvar _utilObjectUtils2 = _interopRequireDefault(_utilObjectUtils);\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: _react2['default'].PropTypes.array,\n    title: _react2['default'].PropTypes.string.isRequired,\n    help: _react2['default'].PropTypes.any.isRequired,\n    addButtonTitle: _react2['default'].PropTypes.string,\n    update: _react2['default'].PropTypes.func.isRequired,\n    validator: _react2['default'].PropTypes.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\n  _update: function _update(options) {\n    this.props.update(options);\n  },\n\n  _onAdd: function _onAdd() {\n    var options = _utilObjectUtils2['default'].clone(this.props.options);\n\n    if (options) {\n      options.push({ period: '', description: '' });\n      this._update(options);\n    }\n  },\n\n  _onRemove: function _onRemove(removedIdx) {\n    var _this = this;\n\n    return function () {\n      var options = _utilObjectUtils2['default'].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: function _onChange(changedIdx, field) {\n    var _this2 = this;\n\n    return function (e) {\n      var options = _utilObjectUtils2['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\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 = _utilISODurationUtils2['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                _utilISODurationUtils2['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\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/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"TimeRangeOptionsForm.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurations/TimeRangeOptionsForm.jsx\n ** module id = 816\n ** module chunks = 24\n **/\n//# sourceURL=webpack:///./src/components/configurations/TimeRangeOptionsForm.jsx?");
},817:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar TimeRangeOptionsSummary = _react2['default'].createClass({\n  displayName: 'TimeRangeOptionsSummary',\n\n  propTypes: {\n    options: _react2['default'].PropTypes.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/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"TimeRangeOptionsSummary.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/configurations/TimeRangeOptionsSummary.jsx\n ** module id = 817\n ** module chunks = 24\n **/\n//# sourceURL=webpack:///./src/components/configurations/TimeRangeOptionsSummary.jsx?")},962:function(module,exports,__webpack_require__){eval("/* REACT HOT LOADER */ if (false) { (function () { var ReactHotAPI = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-api/modules/index.js\"), RootInstanceProvider = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/RootInstanceProvider.js\"), ReactMount = require(\"react/lib/ReactMount\"), React = require(\"react\"); module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function () { return RootInstanceProvider.getRootInstances(ReactMount); }, React); })(); } try { (function () {\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(4);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(2);\n\nvar _componentsCommon = __webpack_require__(5);\n\nvar _graylogWebPluginPlugin = __webpack_require__(42);\n\nvar _injectionStoreProvider = __webpack_require__(3);\n\nvar _injectionStoreProvider2 = _interopRequireDefault(_injectionStoreProvider);\n\nvar _injectionActionsProvider = __webpack_require__(6);\n\nvar _injectionActionsProvider2 = _interopRequireDefault(_injectionActionsProvider);\n\nvar _componentsConfigurationsSearchesConfig = __webpack_require__(815);\n\nvar _componentsConfigurationsSearchesConfig2 = _interopRequireDefault(_componentsConfigurationsSearchesConfig);\n\nvar _componentsConfigurationsMessageProcessorsConfig = __webpack_require__(814);\n\nvar _componentsConfigurationsMessageProcessorsConfig2 = _interopRequireDefault(_componentsConfigurationsMessageProcessorsConfig);\n\nvar ConfigurationsStore = _injectionStoreProvider2['default'].getStore('Configurations');\n\nvar ConfigurationActions = _injectionActionsProvider2['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\n  componentDidMount: function componentDidMount() {\n    this.style.use();\n    ConfigurationActions.list(this.SEARCHES_CLUSTER_CONFIG);\n    ConfigurationActions.listMessageProcessorsConfig(this.MESSAGE_PROCESSORS_CONFIG);\n\n    _graylogWebPluginPlugin.PluginStore.exports('systemConfigurations').forEach(function (systemConfig) {\n      ConfigurationActions.list(systemConfig.configType);\n    });\n  },\n\n  componentWillUnmount: function componentWillUnmount() {\n    this.style.unuse();\n  },\n\n  style: __webpack_require__(278),\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    } else {\n      return null;\n    }\n  },\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\n  _pluginConfigs: function _pluginConfigs() {\n    var _this2 = this;\n\n    return _graylogWebPluginPlugin.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\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            ' '\n          )\n        )\n      ));\n    }\n\n    return rows;\n  },\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 = undefined;\n    var messageProcessorsConfigComponent = undefined;\n    if (searchesConfig) {\n      searchesConfigComponent = _react2['default'].createElement(_componentsConfigurationsSearchesConfig2['default'], { config: searchesConfig,\n        updateConfig: this._onUpdate(this.SEARCHES_CLUSTER_CONFIG) });\n    } else {\n      searchesConfigComponent = _react2['default'].createElement(_componentsCommon.Spinner, null);\n    }\n    if (messageProcessorsConfig) {\n      messageProcessorsConfigComponent = _react2['default'].createElement(_componentsConfigurationsMessageProcessorsConfig2['default'], { config: messageProcessorsConfig,\n        updateConfig: this._onUpdate(this.MESSAGE_PROCESSORS_CONFIG) });\n    } else {\n      messageProcessorsConfigComponent = _react2['default'].createElement(_componentsCommon.Spinner, null);\n    }\n\n    var pluginConfigRows = this._pluginConfigRows();\n\n    return _react2['default'].createElement(\n      'span',\n      null,\n      _react2['default'].createElement(\n        _componentsCommon.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\nexports['default'] = ConfigurationsPage;\nmodule.exports = exports['default'];\n\n/* REACT HOT LOADER */ }).call(this); } finally { if (false) { (function () { var foundReactClasses = module.hot.data && module.hot.data.foundReactClasses || false; if (module.exports && module.makeHot) { var makeExportsHot = require(\"/var/lib/jenkins/jobs/graylog-release/workspace/target/checkout/graylog2-web-interface/node_modules/react-hot-loader/makeExportsHot.js\"); if (makeExportsHot(module, require(\"react\"))) { foundReactClasses = true; } var shouldAcceptModule = true && foundReactClasses; if (shouldAcceptModule) { module.hot.accept(function (err) { if (err) { console.error(\"Cannot not apply hot update to \" + \"ConfigurationsPage.jsx\" + \": \" + err.message); } }); } } module.hot.dispose(function (data) { data.makeHot = module.makeHot; data.foundReactClasses = foundReactClasses; }); })(); } }\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react-hot-loader!./~/babel-loader!./src/pages/ConfigurationsPage.jsx\n ** module id = 962\n ** module chunks = 24\n **/\n//# sourceURL=webpack:///./src/pages/ConfigurationsPage.jsx?./~/react-hot-loader!./~/babel-loader")}});




© 2015 - 2024 Weber Informatics LLC | Privacy Policy