Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
web-interface.assets.24.24.362ba12fc38f8705dbe5.js Maven / Gradle / Ivy
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")}});