UNPKG

288 kBJavaScriptView Raw
1module.exports =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // identity function for calling harmony imports with the correct context
38/******/ __webpack_require__.i = function(value) { return value; };
39/******/
40/******/ // define getter function for harmony exports
41/******/ __webpack_require__.d = function(exports, name, getter) {
42/******/ if(!__webpack_require__.o(exports, name)) {
43/******/ Object.defineProperty(exports, name, {
44/******/ configurable: false,
45/******/ enumerable: true,
46/******/ get: getter
47/******/ });
48/******/ }
49/******/ };
50/******/
51/******/ // getDefaultExport function for compatibility with non-harmony modules
52/******/ __webpack_require__.n = function(module) {
53/******/ var getter = module && module.__esModule ?
54/******/ function getDefault() { return module['default']; } :
55/******/ function getModuleExports() { return module; };
56/******/ __webpack_require__.d(getter, 'a', getter);
57/******/ return getter;
58/******/ };
59/******/
60/******/ // Object.prototype.hasOwnProperty.call
61/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
62/******/
63/******/ // __webpack_public_path__
64/******/ __webpack_require__.p = "";
65/******/
66/******/ // Load entry module and return exports
67/******/ return __webpack_require__(__webpack_require__.s = 56);
68/******/ })
69/************************************************************************/
70/******/ ([
71/* 0 */
72/***/ (function(module, exports) {
73
74module.exports = require("prop-types");
75
76/***/ }),
77/* 1 */
78/***/ (function(module, exports) {
79
80module.exports = require("react");
81
82/***/ }),
83/* 2 */
84/***/ (function(module, exports) {
85
86module.exports = require("lodash");
87
88/***/ }),
89/* 3 */
90/***/ (function(module, exports) {
91
92module.exports = require("antd/es/form");
93
94/***/ }),
95/* 4 */
96/***/ (function(module, exports) {
97
98module.exports = require("antd/es/form/style/css");
99
100/***/ }),
101/* 5 */
102/***/ (function(module, exports) {
103
104module.exports = require("antd/es/col");
105
106/***/ }),
107/* 6 */
108/***/ (function(module, exports) {
109
110module.exports = require("antd/es/col/style/css");
111
112/***/ }),
113/* 7 */
114/***/ (function(module, exports) {
115
116module.exports = require("antd/es/row");
117
118/***/ }),
119/* 8 */
120/***/ (function(module, exports) {
121
122module.exports = require("antd/es/row/style/css");
123
124/***/ }),
125/* 9 */
126/***/ (function(module, exports) {
127
128module.exports = require("antd/es/input");
129
130/***/ }),
131/* 10 */
132/***/ (function(module, exports) {
133
134module.exports = require("antd/es/input/style/css");
135
136/***/ }),
137/* 11 */
138/***/ (function(module, exports) {
139
140module.exports = require("antd/es/radio");
141
142/***/ }),
143/* 12 */
144/***/ (function(module, exports) {
145
146module.exports = require("antd/es/radio/style/css");
147
148/***/ }),
149/* 13 */
150/***/ (function(module, exports) {
151
152module.exports = require("echarts-for-react");
153
154/***/ }),
155/* 14 */
156/***/ (function(module, exports, __webpack_require__) {
157
158"use strict";
159
160
161/*
162 MIT License http://www.opensource.org/licenses/mit-license.php
163 Author Tobias Koppers @sokra
164*/
165// css base code, injected by the css-loader
166module.exports = function (useSourceMap) {
167 var list = [];
168
169 // return the list of modules as css string
170 list.toString = function toString() {
171 return this.map(function (item) {
172 var content = cssWithMappingToString(item, useSourceMap);
173 if (item[2]) {
174 return "@media " + item[2] + "{" + content + "}";
175 } else {
176 return content;
177 }
178 }).join("");
179 };
180
181 // import a list of modules into the list
182 list.i = function (modules, mediaQuery) {
183 if (typeof modules === "string") modules = [[null, modules, ""]];
184 var alreadyImportedModules = {};
185 for (var i = 0; i < this.length; i++) {
186 var id = this[i][0];
187 if (typeof id === "number") alreadyImportedModules[id] = true;
188 }
189 for (i = 0; i < modules.length; i++) {
190 var item = modules[i];
191 // skip already imported module
192 // this implementation is not 100% perfect for weird media query combinations
193 // when a module is imported multiple times with different media queries.
194 // I hope this will never occur (Hey this way we have smaller bundles)
195 if (typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
196 if (mediaQuery && !item[2]) {
197 item[2] = mediaQuery;
198 } else if (mediaQuery) {
199 item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
200 }
201 list.push(item);
202 }
203 }
204 };
205 return list;
206};
207
208function cssWithMappingToString(item, useSourceMap) {
209 var content = item[1] || '';
210 var cssMapping = item[3];
211 if (!cssMapping) {
212 return content;
213 }
214
215 if (useSourceMap && typeof btoa === 'function') {
216 var sourceMapping = toComment(cssMapping);
217 var sourceURLs = cssMapping.sources.map(function (source) {
218 return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';
219 });
220
221 return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
222 }
223
224 return [content].join('\n');
225}
226
227// Adapted from convert-source-map (MIT)
228function toComment(sourceMap) {
229 // eslint-disable-next-line no-undef
230 var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
231 var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
232
233 return '/*# ' + data + ' */';
234}
235
236/***/ }),
237/* 15 */
238/***/ (function(module, exports, __webpack_require__) {
239
240"use strict";
241
242
243Object.defineProperty(exports, "__esModule", {
244 value: true
245});
246
247var _form = __webpack_require__(3);
248
249var _form2 = _interopRequireDefault(_form);
250
251var _input = __webpack_require__(9);
252
253var _input2 = _interopRequireDefault(_input);
254
255var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
256
257var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
258
259__webpack_require__(4);
260
261__webpack_require__(10);
262
263var _react = __webpack_require__(1);
264
265var _react2 = _interopRequireDefault(_react);
266
267var _propTypes = __webpack_require__(0);
268
269var _propTypes2 = _interopRequireDefault(_propTypes);
270
271function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
272
273function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
274
275function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
276
277function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
278
279/**
280 Echarts 高度 配置项
281
282 @author Witee<github.com/Witee>
283 @date 2018-12-04
284*/
285
286var Height = function (_React$Component) {
287 _inherits(Height, _React$Component);
288
289 function Height() {
290 var _ref;
291
292 var _temp, _this, _ret;
293
294 _classCallCheck(this, Height);
295
296 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
297 args[_key] = arguments[_key];
298 }
299
300 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Height.__proto__ || Object.getPrototypeOf(Height)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (_ref2) {
301 var value = _ref2.target.value;
302 var onHeightSet = _this.props.onHeightSet;
303
304 var numberReg = /^\d+$/;
305
306 if (onHeightSet && numberReg.test(value)) {
307 onHeightSet(value);
308 }
309 }, _temp), _possibleConstructorReturn(_this, _ret);
310 }
311
312 _createClass(Height, [{
313 key: 'render',
314 value: function render() {
315 var _props = this.props,
316 label = _props.label,
317 size = _props.size,
318 width = _props.width,
319 defaultValue = _props.defaultValue,
320 layout = _props.layout;
321
322
323 return _react2.default.createElement(
324 _form2.default.Item,
325 _extends({}, layout, { label: label }),
326 _react2.default.createElement(_input2.default, {
327 size: size,
328 style: { width: width },
329 defaultValue: defaultValue,
330 onBlur: this.change,
331 onPressEnter: this.change
332 }),
333 ' px'
334 );
335 }
336 }]);
337
338 return Height;
339}(_react2.default.Component);
340
341Height.propTypes = {
342 label: _propTypes2.default.string,
343 size: _propTypes2.default.string,
344 width: _propTypes2.default.string,
345 defaultValue: _propTypes2.default.number,
346 layout: _propTypes2.default.object,
347 onHeightSet: _propTypes2.default.func
348};
349
350Height.defaultProps = {
351 label: '高度',
352 size: 'small',
353 width: '4em',
354 defaultValue: 420,
355 layout: {
356 labelCol: {
357 xs: { span: 24 },
358 sm: { span: 6 }
359 },
360 wrapperCol: {
361 xs: { span: 24 },
362 sm: { span: 18 }
363 }
364 },
365 onHeightSet: undefined
366};
367
368exports.default = Height;
369
370/***/ }),
371/* 16 */
372/***/ (function(module, exports, __webpack_require__) {
373
374"use strict";
375/* WEBPACK VAR INJECTION */(function(_) {
376
377Object.defineProperty(exports, "__esModule", {
378 value: true
379});
380
381var _radio = __webpack_require__(11);
382
383var _radio2 = _interopRequireDefault(_radio);
384
385var _form = __webpack_require__(3);
386
387var _form2 = _interopRequireDefault(_form);
388
389var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
390
391var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
392
393__webpack_require__(12);
394
395__webpack_require__(4);
396
397var _react = __webpack_require__(1);
398
399var _react2 = _interopRequireDefault(_react);
400
401var _propTypes = __webpack_require__(0);
402
403var _propTypes2 = _interopRequireDefault(_propTypes);
404
405var _reactColor = __webpack_require__(39);
406
407function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
408
409function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
410
411function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
412
413function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
414
415/**
416 Echarts 主题、背景色 配置项,受控组件
417
418 @author Witee<github.com/Witee>
419 @date 2018-12-03
420*/
421
422var defaultColors = ['#F7F7F7', '#D9E3F0', '#697689', '#37D67A', '#555555', '#dce775', '#ba68c8', '#ABB8C3'];
423
424var Theme = function (_React$Component) {
425 _inherits(Theme, _React$Component);
426
427 function Theme() {
428 var _ref;
429
430 var _temp, _this, _ret;
431
432 _classCallCheck(this, Theme);
433
434 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
435 args[_key] = arguments[_key];
436 }
437
438 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Theme.__proto__ || Object.getPrototypeOf(Theme)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (type, evt) {
439 var _this$props = _this.props,
440 theme = _this$props.theme,
441 backgroundColor = _this$props.backgroundColor,
442 onChange = _this$props.onChange;
443
444
445 if (onChange) {
446 var newTheme = theme;
447 var newBackgroundColor = backgroundColor;
448
449 if (type === 'theme') {
450 newTheme = _.get(evt, 'target.value', null);
451 } else if (type === 'backgroundColor') {
452 newBackgroundColor = _.get(evt, 'hex', null);
453 }
454
455 onChange({
456 theme: newTheme,
457 backgroundColor: newBackgroundColor
458 });
459 }
460 }, _temp), _possibleConstructorReturn(_this, _ret);
461 }
462
463 _createClass(Theme, [{
464 key: 'render',
465 value: function render() {
466 var _this2 = this;
467
468 var _props = this.props,
469 label = _props.label,
470 theme = _props.theme,
471 backgroundColor = _props.backgroundColor,
472 colorPickerConfig = _props.colorPickerConfig,
473 layout = _props.layout;
474
475
476 var defaultColorPickerConfig = {
477 width: '168px',
478 triangle: 'hide',
479 colors: defaultColors
480 };
481
482 var newColorPickerConfig = _.assign(defaultColorPickerConfig, colorPickerConfig);
483
484 return _react2.default.createElement(
485 _form2.default.Item,
486 _extends({}, layout, { label: label }),
487 _react2.default.createElement(_form2.default.Item, layout),
488 ' ',
489 _react2.default.createElement(
490 _form2.default.Item,
491 _extends({}, layout, { label: '\u4E3B\u9898' }),
492 _react2.default.createElement(
493 _radio2.default.Group,
494 { value: theme, onChange: function onChange(evt) {
495 return _this2.change('theme', evt);
496 } },
497 _react2.default.createElement(
498 _radio2.default,
499 { value: 'default' },
500 '\u9ED8\u8BA4'
501 ),
502 _react2.default.createElement(
503 _radio2.default,
504 { value: 'dark' },
505 '\u6697\u8272'
506 )
507 )
508 ),
509 _react2.default.createElement(
510 _form2.default.Item,
511 _extends({}, layout, { label: '\u80CC\u666F\u8272' }),
512 _react2.default.createElement(_reactColor.TwitterPicker, {
513 width: newColorPickerConfig.width,
514 triangle: newColorPickerConfig.triangle,
515 colors: newColorPickerConfig.colors,
516 color: backgroundColor,
517 onChange: function onChange(color) {
518 return _this2.change('backgroundColor', color);
519 }
520 })
521 )
522 );
523 }
524 }]);
525
526 return Theme;
527}(_react2.default.Component);
528
529Theme.propTypes = {
530 label: _propTypes2.default.string,
531 theme: _propTypes2.default.oneOf(['default', 'dark']), // 默认已注册的主题
532 backgroundColor: _propTypes2.default.string,
533 colorPickerConfig: _propTypes2.default.object,
534 layout: _propTypes2.default.object,
535 onChange: _propTypes2.default.func
536};
537
538Theme.defaultProps = {
539 label: '颜色',
540 theme: 'default',
541 backgroundColor: '#FFFFFF',
542 colorPickerConfig: {},
543 layout: {
544 labelCol: {
545 xs: { span: 24 },
546 sm: { span: 6 }
547 },
548 wrapperCol: {
549 xs: { span: 24 },
550 sm: { span: 18 }
551 }
552 },
553 onChange: undefined
554};
555
556exports.default = Theme;
557/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
558
559/***/ }),
560/* 17 */
561/***/ (function(module, exports, __webpack_require__) {
562
563"use strict";
564/* WEBPACK VAR INJECTION */(function(_) {
565
566Object.defineProperty(exports, "__esModule", {
567 value: true
568});
569
570var _radio = __webpack_require__(11);
571
572var _radio2 = _interopRequireDefault(_radio);
573
574var _input = __webpack_require__(9);
575
576var _input2 = _interopRequireDefault(_input);
577
578var _form = __webpack_require__(3);
579
580var _form2 = _interopRequireDefault(_form);
581
582var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
583
584var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
585
586__webpack_require__(12);
587
588__webpack_require__(10);
589
590__webpack_require__(4);
591
592var _react = __webpack_require__(1);
593
594var _react2 = _interopRequireDefault(_react);
595
596var _propTypes = __webpack_require__(0);
597
598var _propTypes2 = _interopRequireDefault(_propTypes);
599
600function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
601
602function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
603
604function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
605
606function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
607
608/**
609 Echarts 标题 配置项
610
611 Title 返回的是整个 Echarts4.x 中 title 的配置内容
612
613 @author Witee<github.com/Witee>
614 @date 2018-12-03
615*/
616
617var Title = function (_React$Component) {
618 _inherits(Title, _React$Component);
619
620 function Title() {
621 var _ref;
622
623 var _temp, _this, _ret;
624
625 _classCallCheck(this, Title);
626
627 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
628 args[_key] = arguments[_key];
629 }
630
631 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Title.__proto__ || Object.getPrototypeOf(Title)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (type, _ref2) {
632 var value = _ref2.target.value;
633 var _this$props = _this.props,
634 title = _this$props.title,
635 onChange = _this$props.onChange;
636
637
638 if (onChange) {
639 var newTitle = {};
640
641 if (type === 'text') {
642 _.set(newTitle, 'text', value);
643 } else if (type === 'subtext') {
644 _.set(newTitle, 'subtext', value);
645 } else if (type === 'left') {
646 _.set(newTitle, 'left', value);
647 } else if (type === 'top') {
648 _.set(newTitle, 'top', value);
649 }
650
651 onChange(_.assign(title, newTitle));
652 }
653 }, _temp), _possibleConstructorReturn(_this, _ret);
654 }
655
656 _createClass(Title, [{
657 key: 'render',
658 value: function render() {
659 var _this2 = this;
660
661 var _props = this.props,
662 label = _props.label,
663 title = _props.title,
664 layout = _props.layout;
665
666
667 var text = _.get(title, 'text', '');
668 var subtext = _.get(title, 'subtext', '');
669 var top = _.get(title, 'top', 'top');
670 var left = _.get(title, 'left', 'left');
671
672 return _react2.default.createElement(
673 _form2.default.Item,
674 _extends({}, layout, { label: label }),
675 _react2.default.createElement(_form2.default.Item, layout),
676 ' ',
677 _react2.default.createElement(
678 _form2.default.Item,
679 _extends({}, layout, { label: '\u4E3B' }),
680 _react2.default.createElement(_input2.default, {
681 placeholder: '\u56FE\u8868\u6807\u9898',
682 defaultValue: text,
683 onBlur: function onBlur(evt) {
684 return _this2.change('text', evt);
685 },
686 onPressEnter: function onPressEnter(evt) {
687 return _this2.change('text', evt);
688 }
689 })
690 ),
691 _react2.default.createElement(
692 _form2.default.Item,
693 _extends({}, layout, { label: '\u526F' }),
694 _react2.default.createElement(_input2.default, {
695 placeholder: '\u56FE\u8868\u526F\u6807\u9898',
696 defaultValue: subtext,
697 onBlur: function onBlur(evt) {
698 return _this2.change('subtext', evt);
699 },
700 onPressEnter: function onPressEnter(evt) {
701 return _this2.change('subtext', evt);
702 }
703 })
704 ),
705 _react2.default.createElement(_form2.default.Item, layout),
706 ' ',
707 _react2.default.createElement(
708 _form2.default.Item,
709 _extends({}, layout, { label: '\u6A2A\u5BF9\u9F50' }),
710 _react2.default.createElement(
711 _radio2.default.Group,
712 { value: left, onChange: function onChange(evt) {
713 return _this2.change('left', evt);
714 } },
715 _react2.default.createElement(
716 _radio2.default,
717 { value: 'left' },
718 '\u5DE6'
719 ),
720 _react2.default.createElement(
721 _radio2.default,
722 { value: 'center' },
723 '\u4E2D'
724 ),
725 _react2.default.createElement(
726 _radio2.default,
727 { value: 'right' },
728 '\u53F3'
729 )
730 )
731 ),
732 _react2.default.createElement(
733 _form2.default.Item,
734 _extends({}, layout, { label: '\u7EB5\u5BF9\u9F50' }),
735 _react2.default.createElement(
736 _radio2.default.Group,
737 { value: top, onChange: function onChange(evt) {
738 return _this2.change('top', evt);
739 } },
740 _react2.default.createElement(
741 _radio2.default,
742 { value: 'top' },
743 '\u4E0A'
744 ),
745 _react2.default.createElement(
746 _radio2.default,
747 { value: 'middle' },
748 '\u4E2D'
749 ),
750 _react2.default.createElement(
751 _radio2.default,
752 { value: 'bottom' },
753 '\u4E0B'
754 )
755 )
756 )
757 );
758 }
759 }]);
760
761 return Title;
762}(_react2.default.Component);
763
764Title.propTypes = {
765 label: _propTypes2.default.string,
766 title: _propTypes2.default.object,
767 layout: _propTypes2.default.object,
768 onChange: _propTypes2.default.func
769};
770
771Title.defaultProps = {
772 label: '标题',
773 title: undefined,
774 layout: {
775 labelCol: {
776 xs: { span: 24 },
777 sm: { span: 6 }
778 },
779 wrapperCol: {
780 xs: { span: 24 },
781 sm: { span: 18 }
782 }
783 },
784 onChange: undefined
785};
786
787exports.default = Title;
788/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
789
790/***/ }),
791/* 18 */
792/***/ (function(module, exports, __webpack_require__) {
793
794"use strict";
795/* WEBPACK VAR INJECTION */(function(_) {
796
797Object.defineProperty(exports, "__esModule", {
798 value: true
799});
800
801var _form = __webpack_require__(3);
802
803var _form2 = _interopRequireDefault(_form);
804
805var _checkbox = __webpack_require__(35);
806
807var _checkbox2 = _interopRequireDefault(_checkbox);
808
809var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
810
811var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
812
813__webpack_require__(4);
814
815__webpack_require__(36);
816
817var _react = __webpack_require__(1);
818
819var _react2 = _interopRequireDefault(_react);
820
821var _propTypes = __webpack_require__(0);
822
823var _propTypes2 = _interopRequireDefault(_propTypes);
824
825function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
826
827function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
828
829function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
830
831function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
832
833/**
834 Echarts Toolbox 配置项,受控组件
835
836 Toolbox 返回的是整个 Echarts4.x 中 toolbox 的配置内容,如 saveAsImage
837
838 @author Witee<github.com/Witee>
839 @date 2018-12-03
840*/
841
842var Toolbox = function (_React$Component) {
843 _inherits(Toolbox, _React$Component);
844
845 function Toolbox() {
846 var _ref;
847
848 var _temp, _this, _ret;
849
850 _classCallCheck(this, Toolbox);
851
852 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
853 args[_key] = arguments[_key];
854 }
855
856 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Toolbox.__proto__ || Object.getPrototypeOf(Toolbox)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (type, evt) {
857 var _this$props = _this.props,
858 toolbox = _this$props.toolbox,
859 onChange = _this$props.onChange;
860
861
862 if (onChange) {
863 var newToolbox = _.cloneDeep(toolbox);
864 var ifChecked = _.get(evt, 'target.checked', null);
865 var saveAsImage = _.get(toolbox, 'feature.saveAsImage', undefined);
866
867 if (type === 'saveAsImage') {
868 if (ifChecked === true) {
869 if (_.isBoolean(saveAsImage)) {
870 _.set(newToolbox, 'feature.saveAsImage', { show: true });
871 } else {
872 _.set(newToolbox, 'feature.saveAsImage', _.assign(saveAsImage, { show: true }));
873 }
874 } else if (_.isObject(saveAsImage)) {
875 _.set(newToolbox, 'feature.saveAsImage', _.assign(saveAsImage, { show: false }));
876 }
877 }
878 onChange(newToolbox);
879 }
880 }, _temp), _possibleConstructorReturn(_this, _ret);
881 }
882 /**
883 参数支持 bool 或 object
884 只有 参数 = undefined 或 false 时不显示
885 参数 === true 或 object(配置项) 表示开启
886 */
887
888
889 _createClass(Toolbox, [{
890 key: 'render',
891 value: function render() {
892 var _this2 = this;
893
894 var _props = this.props,
895 label = _props.label,
896 toolbox = _props.toolbox,
897 layout = _props.layout;
898 /**
899 判断是否勾选,
900 - 明确 show 为 true
901 - 或 为 {} 且 没有设置 show 字段
902 */
903
904 var saveAsImage = _.get(toolbox, 'feature.saveAsImage', undefined);
905 var saveAsImageShow = _.get(saveAsImage, 'show', false);
906 var hasSaveAsImageShow = _.has(saveAsImage, 'show');
907
908 return _react2.default.createElement(
909 _form2.default.Item,
910 _extends({}, layout, { label: label }),
911 _react2.default.createElement(
912 _checkbox2.default,
913 {
914 onChange: function onChange(evt) {
915 return _this2.change('saveAsImage', evt);
916 },
917 checked: saveAsImageShow || _.isObject(saveAsImage) && !hasSaveAsImageShow
918 },
919 _.get(saveAsImage, 'title', '保存为图片')
920 )
921 );
922 }
923 }]);
924
925 return Toolbox;
926}(_react2.default.Component);
927
928Toolbox.propTypes = {
929 label: _propTypes2.default.string,
930 toolbox: _propTypes2.default.object,
931 layout: _propTypes2.default.object,
932 onChange: _propTypes2.default.func
933};
934
935Toolbox.defaultProps = {
936 label: '工具',
937 toolbox: undefined,
938 layout: {
939 labelCol: {
940 xs: { span: 24 },
941 sm: { span: 6 }
942 },
943 wrapperCol: {
944 xs: { span: 24 },
945 sm: { span: 18 }
946 }
947 },
948 onChange: undefined
949};
950
951exports.default = Toolbox;
952/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
953
954/***/ }),
955/* 19 */
956/***/ (function(module, exports, __webpack_require__) {
957
958"use strict";
959
960
961Object.defineProperty(exports, "__esModule", {
962 value: true
963});
964
965var _table = __webpack_require__(69);
966
967var _table2 = _interopRequireDefault(_table);
968
969var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
970
971__webpack_require__(70);
972
973var _react = __webpack_require__(1);
974
975var _react2 = _interopRequireDefault(_react);
976
977var _propTypes = __webpack_require__(0);
978
979var _propTypes2 = _interopRequireDefault(_propTypes);
980
981function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
982
983function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
984
985/**
986 再次封装了 AntD 的 Table,目录是固定一些参数,如 pagination
987*/
988
989var Table = function Table(props) {
990 var dataSource = props.dataSource,
991 currentPage = props.currentPage,
992 total = props.total,
993 args = _objectWithoutProperties(props, ['dataSource', 'currentPage', 'total']);
994
995 var pagination = {
996 showQuickJumper: true,
997 showSizeChanger: true,
998 defaultPageSize: 20,
999 pageSizeOptions: ['10', '20', '50', '100'],
1000 showTotal: function showTotal(totalNum, range) {
1001 return range[0] + '-' + range[1] + ' \u5171 ' + totalNum + ' \u9879';
1002 }
1003 };
1004 /**
1005 直接在 pagination 中添加 {current: currentPage}
1006 会导致在不传递 currentPage 时由于值固定而无法翻页,所以在这里添加
1007 */
1008 if (currentPage) {
1009 pagination.current = currentPage;
1010 }
1011
1012 /**
1013 如果 total 没有传递时使用 dataSource 的数据长度作为值
1014 */
1015 if (total) {
1016 pagination.total = total;
1017 } else {
1018 pagination.total = dataSource.length;
1019 }
1020
1021 return _react2.default.createElement(_table2.default, _extends({
1022 dataSource: dataSource,
1023 pagination: pagination
1024 }, args));
1025};
1026
1027Table.propTypes = {
1028 dataSource: _propTypes2.default.array,
1029 currentPage: _propTypes2.default.number,
1030 total: _propTypes2.default.number
1031};
1032
1033Table.defaultProps = {
1034 dataSource: [],
1035 currentPage: undefined,
1036 total: undefined
1037};
1038
1039exports.default = Table;
1040
1041/***/ }),
1042/* 20 */
1043/***/ (function(module, exports, __webpack_require__) {
1044
1045"use strict";
1046/* WEBPACK VAR INJECTION */(function(_) {
1047
1048Object.defineProperty(exports, "__esModule", {
1049 value: true
1050});
1051/**
1052 过滤表格中列的数据
1053
1054 dataSource 格式 第一列为表头,其余为数据
1055 dataSource = [
1056 ['日期', '平台', '声量'],
1057 ['2018-07-20', '微博', 52872],
1058 ['2018-07-20', '微信', 8510],
1059 ]
1060
1061 filters 是 antd Table 的过滤格式:
1062 filters = { 日期: null, 平台: ['微博'], 声量: null }
1063
1064 sorter 是 antd Table 的排序格式:
1065 sorter = { field: '声量', order: 'descend' }
1066*/
1067var filterAndSorter = function filterAndSorter(dataSource) {
1068 var filters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1069 var sorter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1070
1071 var header = _.get(dataSource, 0, []);
1072 var body = _.slice(dataSource, 1);
1073 var sortField = _.get(sorter, 'field', null);
1074 var sortOrder = _.get(sorter, 'order', null);
1075
1076 if (!_.isEmpty(filters)) {
1077 _.forEach(filters, function (value, key) {
1078 /**
1079 获取过滤的字段在表头中的位置,以确定对应数据的位置
1080 */
1081 var index = _.indexOf(header, key);
1082 if (!_.isNull(value) && _.get(value, 'length', 0) > 0) {
1083 _.remove(body, function (d) {
1084 return !_.includes(value, _.toString(_.get(d, index, null)));
1085 });
1086 }
1087 });
1088 }
1089
1090 if (!_.isEmpty(sorter) && sortField && sortOrder) {
1091 /**
1092 计算排序的字段在表头中的位置,以确定在数据中的位置,_.orderBy 中使用此位置的数据排序
1093 */
1094 var index = _.indexOf(header, sortField);
1095 if (sortOrder === 'descend') {
1096 body = _.orderBy(body, index, 'desc');
1097 } else {
1098 body = _.orderBy(body, index, 'asc');
1099 }
1100 }
1101
1102 body.unshift(header);
1103 return body;
1104};
1105
1106/**
1107 整理数据,数据可能不合法,所以收到之后需要先整理
1108
1109 整理原则,将第一行作为表头,其它行只保留与第一行相应的部分,去掉无用的数据,
1110 将 null、undefined 等无效数据修改为 '-'
1111*/
1112var fixData = function fixData(dataSource) {
1113 if (_.get(dataSource, 'length', 0) <= 1) {
1114 return dataSource;
1115 }
1116 var header = _.get(dataSource, 0, []);
1117 var rows = _.slice(dataSource, 1);
1118 var newRows = [];
1119
1120 newRows = _.map(rows, function (row) {
1121 return _.times(header.length, function (index) {
1122 /**
1123 合法的只有字符串和数字,其它的情况全部转换为 '-'
1124 */
1125 var item = _.get(row, index, '-');
1126 if (_.isNumber(item) || _.isString(item)) {
1127 return item;
1128 }
1129 return '-';
1130 });
1131 });
1132 newRows.unshift(header);
1133 return newRows;
1134};
1135
1136exports.default = {
1137 filterAndSorter: filterAndSorter,
1138 fixData: fixData
1139};
1140/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
1141
1142/***/ }),
1143/* 21 */
1144/***/ (function(module, exports, __webpack_require__) {
1145
1146/*
1147 MIT License http://www.opensource.org/licenses/mit-license.php
1148 Author Tobias Koppers @sokra
1149*/
1150
1151var stylesInDom = {};
1152
1153var memoize = function (fn) {
1154 var memo;
1155
1156 return function () {
1157 if (typeof memo === "undefined") memo = fn.apply(this, arguments);
1158 return memo;
1159 };
1160};
1161
1162var isOldIE = memoize(function () {
1163 // Test for IE <= 9 as proposed by Browserhacks
1164 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
1165 // Tests for existence of standard globals is to allow style-loader
1166 // to operate correctly into non-standard environments
1167 // @see https://github.com/webpack-contrib/style-loader/issues/177
1168 return window && document && document.all && !window.atob;
1169});
1170
1171var getTarget = function (target) {
1172 return document.querySelector(target);
1173};
1174
1175var getElement = (function (fn) {
1176 var memo = {};
1177
1178 return function(target) {
1179 // If passing function in options, then use it for resolve "head" element.
1180 // Useful for Shadow Root style i.e
1181 // {
1182 // insertInto: function () { return document.querySelector("#foo").shadowRoot }
1183 // }
1184 if (typeof target === 'function') {
1185 return target();
1186 }
1187 if (typeof memo[target] === "undefined") {
1188 var styleTarget = getTarget.call(this, target);
1189 // Special case to return head of iframe instead of iframe itself
1190 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
1191 try {
1192 // This will throw an exception if access to iframe is blocked
1193 // due to cross-origin restrictions
1194 styleTarget = styleTarget.contentDocument.head;
1195 } catch(e) {
1196 styleTarget = null;
1197 }
1198 }
1199 memo[target] = styleTarget;
1200 }
1201 return memo[target]
1202 };
1203})();
1204
1205var singleton = null;
1206var singletonCounter = 0;
1207var stylesInsertedAtTop = [];
1208
1209var fixUrls = __webpack_require__(44);
1210
1211module.exports = function(list, options) {
1212 if (typeof DEBUG !== "undefined" && DEBUG) {
1213 if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
1214 }
1215
1216 options = options || {};
1217
1218 options.attrs = typeof options.attrs === "object" ? options.attrs : {};
1219
1220 // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
1221 // tags it will allow on a page
1222 if (!options.singleton && typeof options.singleton !== "boolean") options.singleton = isOldIE();
1223
1224 // By default, add <style> tags to the <head> element
1225 if (!options.insertInto) options.insertInto = "head";
1226
1227 // By default, add <style> tags to the bottom of the target
1228 if (!options.insertAt) options.insertAt = "bottom";
1229
1230 var styles = listToStyles(list, options);
1231
1232 addStylesToDom(styles, options);
1233
1234 return function update (newList) {
1235 var mayRemove = [];
1236
1237 for (var i = 0; i < styles.length; i++) {
1238 var item = styles[i];
1239 var domStyle = stylesInDom[item.id];
1240
1241 domStyle.refs--;
1242 mayRemove.push(domStyle);
1243 }
1244
1245 if(newList) {
1246 var newStyles = listToStyles(newList, options);
1247 addStylesToDom(newStyles, options);
1248 }
1249
1250 for (var i = 0; i < mayRemove.length; i++) {
1251 var domStyle = mayRemove[i];
1252
1253 if(domStyle.refs === 0) {
1254 for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();
1255
1256 delete stylesInDom[domStyle.id];
1257 }
1258 }
1259 };
1260};
1261
1262function addStylesToDom (styles, options) {
1263 for (var i = 0; i < styles.length; i++) {
1264 var item = styles[i];
1265 var domStyle = stylesInDom[item.id];
1266
1267 if(domStyle) {
1268 domStyle.refs++;
1269
1270 for(var j = 0; j < domStyle.parts.length; j++) {
1271 domStyle.parts[j](item.parts[j]);
1272 }
1273
1274 for(; j < item.parts.length; j++) {
1275 domStyle.parts.push(addStyle(item.parts[j], options));
1276 }
1277 } else {
1278 var parts = [];
1279
1280 for(var j = 0; j < item.parts.length; j++) {
1281 parts.push(addStyle(item.parts[j], options));
1282 }
1283
1284 stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
1285 }
1286 }
1287}
1288
1289function listToStyles (list, options) {
1290 var styles = [];
1291 var newStyles = {};
1292
1293 for (var i = 0; i < list.length; i++) {
1294 var item = list[i];
1295 var id = options.base ? item[0] + options.base : item[0];
1296 var css = item[1];
1297 var media = item[2];
1298 var sourceMap = item[3];
1299 var part = {css: css, media: media, sourceMap: sourceMap};
1300
1301 if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});
1302 else newStyles[id].parts.push(part);
1303 }
1304
1305 return styles;
1306}
1307
1308function insertStyleElement (options, style) {
1309 var target = getElement(options.insertInto)
1310
1311 if (!target) {
1312 throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
1313 }
1314
1315 var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];
1316
1317 if (options.insertAt === "top") {
1318 if (!lastStyleElementInsertedAtTop) {
1319 target.insertBefore(style, target.firstChild);
1320 } else if (lastStyleElementInsertedAtTop.nextSibling) {
1321 target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);
1322 } else {
1323 target.appendChild(style);
1324 }
1325 stylesInsertedAtTop.push(style);
1326 } else if (options.insertAt === "bottom") {
1327 target.appendChild(style);
1328 } else if (typeof options.insertAt === "object" && options.insertAt.before) {
1329 var nextSibling = getElement(options.insertInto + " " + options.insertAt.before);
1330 target.insertBefore(style, nextSibling);
1331 } else {
1332 throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
1333 }
1334}
1335
1336function removeStyleElement (style) {
1337 if (style.parentNode === null) return false;
1338 style.parentNode.removeChild(style);
1339
1340 var idx = stylesInsertedAtTop.indexOf(style);
1341 if(idx >= 0) {
1342 stylesInsertedAtTop.splice(idx, 1);
1343 }
1344}
1345
1346function createStyleElement (options) {
1347 var style = document.createElement("style");
1348
1349 if(options.attrs.type === undefined) {
1350 options.attrs.type = "text/css";
1351 }
1352
1353 addAttrs(style, options.attrs);
1354 insertStyleElement(options, style);
1355
1356 return style;
1357}
1358
1359function createLinkElement (options) {
1360 var link = document.createElement("link");
1361
1362 if(options.attrs.type === undefined) {
1363 options.attrs.type = "text/css";
1364 }
1365 options.attrs.rel = "stylesheet";
1366
1367 addAttrs(link, options.attrs);
1368 insertStyleElement(options, link);
1369
1370 return link;
1371}
1372
1373function addAttrs (el, attrs) {
1374 Object.keys(attrs).forEach(function (key) {
1375 el.setAttribute(key, attrs[key]);
1376 });
1377}
1378
1379function addStyle (obj, options) {
1380 var style, update, remove, result;
1381
1382 // If a transform function was defined, run it on the css
1383 if (options.transform && obj.css) {
1384 result = options.transform(obj.css);
1385
1386 if (result) {
1387 // If transform returns a value, use that instead of the original css.
1388 // This allows running runtime transformations on the css.
1389 obj.css = result;
1390 } else {
1391 // If the transform function returns a falsy value, don't add this css.
1392 // This allows conditional loading of css
1393 return function() {
1394 // noop
1395 };
1396 }
1397 }
1398
1399 if (options.singleton) {
1400 var styleIndex = singletonCounter++;
1401
1402 style = singleton || (singleton = createStyleElement(options));
1403
1404 update = applyToSingletonTag.bind(null, style, styleIndex, false);
1405 remove = applyToSingletonTag.bind(null, style, styleIndex, true);
1406
1407 } else if (
1408 obj.sourceMap &&
1409 typeof URL === "function" &&
1410 typeof URL.createObjectURL === "function" &&
1411 typeof URL.revokeObjectURL === "function" &&
1412 typeof Blob === "function" &&
1413 typeof btoa === "function"
1414 ) {
1415 style = createLinkElement(options);
1416 update = updateLink.bind(null, style, options);
1417 remove = function () {
1418 removeStyleElement(style);
1419
1420 if(style.href) URL.revokeObjectURL(style.href);
1421 };
1422 } else {
1423 style = createStyleElement(options);
1424 update = applyToTag.bind(null, style);
1425 remove = function () {
1426 removeStyleElement(style);
1427 };
1428 }
1429
1430 update(obj);
1431
1432 return function updateStyle (newObj) {
1433 if (newObj) {
1434 if (
1435 newObj.css === obj.css &&
1436 newObj.media === obj.media &&
1437 newObj.sourceMap === obj.sourceMap
1438 ) {
1439 return;
1440 }
1441
1442 update(obj = newObj);
1443 } else {
1444 remove();
1445 }
1446 };
1447}
1448
1449var replaceText = (function () {
1450 var textStore = [];
1451
1452 return function (index, replacement) {
1453 textStore[index] = replacement;
1454
1455 return textStore.filter(Boolean).join('\n');
1456 };
1457})();
1458
1459function applyToSingletonTag (style, index, remove, obj) {
1460 var css = remove ? "" : obj.css;
1461
1462 if (style.styleSheet) {
1463 style.styleSheet.cssText = replaceText(index, css);
1464 } else {
1465 var cssNode = document.createTextNode(css);
1466 var childNodes = style.childNodes;
1467
1468 if (childNodes[index]) style.removeChild(childNodes[index]);
1469
1470 if (childNodes.length) {
1471 style.insertBefore(cssNode, childNodes[index]);
1472 } else {
1473 style.appendChild(cssNode);
1474 }
1475 }
1476}
1477
1478function applyToTag (style, obj) {
1479 var css = obj.css;
1480 var media = obj.media;
1481
1482 if(media) {
1483 style.setAttribute("media", media)
1484 }
1485
1486 if(style.styleSheet) {
1487 style.styleSheet.cssText = css;
1488 } else {
1489 while(style.firstChild) {
1490 style.removeChild(style.firstChild);
1491 }
1492
1493 style.appendChild(document.createTextNode(css));
1494 }
1495}
1496
1497function updateLink (link, options, obj) {
1498 var css = obj.css;
1499 var sourceMap = obj.sourceMap;
1500
1501 /*
1502 If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
1503 and there is no publicPath defined then lets turn convertToAbsoluteUrls
1504 on by default. Otherwise default to the convertToAbsoluteUrls option
1505 directly
1506 */
1507 var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;
1508
1509 if (options.convertToAbsoluteUrls || autoFixUrls) {
1510 css = fixUrls(css);
1511 }
1512
1513 if (sourceMap) {
1514 // http://stackoverflow.com/a/26603875
1515 css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
1516 }
1517
1518 var blob = new Blob([css], { type: "text/css" });
1519
1520 var oldSrc = link.href;
1521
1522 link.href = URL.createObjectURL(blob);
1523
1524 if(oldSrc) URL.revokeObjectURL(oldSrc);
1525}
1526
1527
1528/***/ }),
1529/* 22 */
1530/***/ (function(module, exports) {
1531
1532module.exports = require("antd/es/button");
1533
1534/***/ }),
1535/* 23 */
1536/***/ (function(module, exports) {
1537
1538module.exports = require("antd/es/button/style/css");
1539
1540/***/ }),
1541/* 24 */
1542/***/ (function(module, exports) {
1543
1544module.exports = require("antd/es/icon");
1545
1546/***/ }),
1547/* 25 */
1548/***/ (function(module, exports) {
1549
1550module.exports = require("antd/es/icon/style/css");
1551
1552/***/ }),
1553/* 26 */
1554/***/ (function(module, exports) {
1555
1556module.exports = require("antd/es/tooltip");
1557
1558/***/ }),
1559/* 27 */
1560/***/ (function(module, exports) {
1561
1562module.exports = require("antd/es/tooltip/style/css");
1563
1564/***/ }),
1565/* 28 */
1566/***/ (function(module, exports, __webpack_require__) {
1567
1568"use strict";
1569
1570
1571Object.defineProperty(exports, "__esModule", {
1572 value: true
1573});
1574
1575var _Common = __webpack_require__(51);
1576
1577var _Common2 = _interopRequireDefault(_Common);
1578
1579var _Text = __webpack_require__(53);
1580
1581var _Text2 = _interopRequireDefault(_Text);
1582
1583var _Table = __webpack_require__(52);
1584
1585var _Table2 = _interopRequireDefault(_Table);
1586
1587function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1588
1589/**
1590 数据编辑器
1591
1592 @author Witee<github.com/Witee>
1593 @date 2018-07-24
1594 @update 2018-12-06
1595*/
1596
1597var DataEditor = _Common2.default;
1598DataEditor.Text = _Text2.default;
1599DataEditor.Table = _Table2.default;
1600
1601exports.default = DataEditor;
1602
1603/***/ }),
1604/* 29 */
1605/***/ (function(module, exports, __webpack_require__) {
1606
1607"use strict";
1608/* WEBPACK VAR INJECTION */(function(_) {
1609
1610Object.defineProperty(exports, "__esModule", {
1611 value: true
1612});
1613
1614var _form = __webpack_require__(3);
1615
1616var _form2 = _interopRequireDefault(_form);
1617
1618var _input = __webpack_require__(9);
1619
1620var _input2 = _interopRequireDefault(_input);
1621
1622var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1623
1624__webpack_require__(4);
1625
1626__webpack_require__(10);
1627
1628var _react = __webpack_require__(1);
1629
1630var _react2 = _interopRequireDefault(_react);
1631
1632var _propTypes = __webpack_require__(0);
1633
1634var _propTypes2 = _interopRequireDefault(_propTypes);
1635
1636var _regular = __webpack_require__(57);
1637
1638var _regular2 = _interopRequireDefault(_regular);
1639
1640function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1641
1642function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1643
1644function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
1645
1646function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
1647
1648/*
1649 封装了 antd 的 Input,目的是增加校验
1650
1651 直接返回 input 输入的值,如果为 null 则表示输入不合法
1652*/
1653
1654var Input = function (_React$Component) {
1655 _inherits(Input, _React$Component);
1656
1657 function Input(props) {
1658 _classCallCheck(this, Input);
1659
1660 var value = props.value;
1661
1662 var _this = _possibleConstructorReturn(this, (Input.__proto__ || Object.getPrototypeOf(Input)).call(this, props));
1663
1664 _initialiseProps.call(_this);
1665
1666 var inputValue = value;
1667 // 如果 value 值为 undefined 或 null 则显示没有传递 value 的值
1668 if (_.isNull(value) || _.isUndefined(value)) {
1669 inputValue = '';
1670 }
1671 _this.state = {
1672 input: inputValue, // 输入的内容
1673 legal: true
1674 };
1675 return _this;
1676 }
1677
1678 // 检查长度及格式
1679 // onChange 返回数据格式为 trimedValue
1680 // legal 是为了判断当前输入的是否合法
1681
1682
1683 _createClass(Input, [{
1684 key: 'render',
1685 value: function render() {
1686 var _props = this.props,
1687 help = _props.help,
1688 style = _props.style,
1689 labelName = _props.labelName,
1690 labelSpan = _props.labelSpan,
1691 wrapperSpan = _props.wrapperSpan,
1692 hasFeedback = _props.hasFeedback,
1693 required = _props.required,
1694 placeholder = _props.placeholder,
1695 autoFocus = _props.autoFocus;
1696 var _state = this.state,
1697 input = _state.input,
1698 legal = _state.legal;
1699
1700 // 判断显示反馈图标
1701
1702 var validateStatus = void 0;
1703 if (hasFeedback) {
1704 if (input.length === 0) {
1705 validateStatus = undefined;
1706 } else if (legal) {
1707 validateStatus = 'success';
1708 } else {
1709 validateStatus = 'error';
1710 }
1711 }
1712
1713 return _react2.default.createElement(
1714 _form2.default,
1715 { style: style },
1716 _react2.default.createElement(
1717 _form2.default.Item,
1718 {
1719 label: labelName,
1720 labelCol: { span: labelSpan },
1721 wrapperCol: { span: wrapperSpan },
1722 hasFeedback: hasFeedback,
1723 validateStatus: validateStatus,
1724 help: legal || help // 只有不合法时才显示 help
1725 , required: required
1726 },
1727 _react2.default.createElement(_input2.default, {
1728 placeholder: placeholder,
1729 autoFocus: autoFocus,
1730 onChange: this.checkInput,
1731 value: input
1732 })
1733 )
1734 );
1735 }
1736 }]);
1737
1738 return Input;
1739}(_react2.default.Component);
1740
1741var _initialiseProps = function _initialiseProps() {
1742 var _this2 = this;
1743
1744 this.checkInput = function (_ref) {
1745 var value = _ref.target.value;
1746
1747 _this2.setState({ input: value });
1748 var trimedValue = _.trim(value);
1749 var _props2 = _this2.props,
1750 onChange = _props2.onChange,
1751 max = _props2.max,
1752 regular = _props2.regular;
1753
1754
1755 var legal = false;
1756 if (regular.test(trimedValue)) {
1757 legal = true;
1758
1759 // 如果定义了 max 表示需要判断最大长度
1760 if (!_.isUndefined(max)) {
1761 if (trimedValue.length <= max) {
1762 legal = true;
1763 } else {
1764 legal = false;
1765 }
1766 }
1767 }
1768
1769 // 如果合法,则返回实际的值,不合法返回 null
1770 if (!legal) {
1771 trimedValue = null;
1772 }
1773 _this2.setState({ legal: legal });
1774 onChange(trimedValue);
1775 };
1776};
1777
1778Input.propTypes = {
1779 value: _propTypes2.default.string,
1780 onChange: _propTypes2.default.func,
1781 style: _propTypes2.default.object,
1782 labelName: _propTypes2.default.string,
1783 labelSpan: _propTypes2.default.number,
1784 wrapperSpan: _propTypes2.default.number,
1785 hasFeedback: _propTypes2.default.bool,
1786 required: _propTypes2.default.bool,
1787 help: _propTypes2.default.string,
1788 regular: _propTypes2.default.object,
1789 placeholder: _propTypes2.default.string,
1790 max: _propTypes2.default.number,
1791 autoFocus: _propTypes2.default.bool
1792};
1793
1794Input.defaultProps = {
1795 value: undefined,
1796 onChange: function onChange() {},
1797 style: {},
1798 labelName: undefined,
1799 labelSpan: 6,
1800 wrapperSpan: 18,
1801 hasFeedback: true,
1802 required: true,
1803 help: '支持中英文、数字、下划线、减号、空格',
1804 regular: _regular2.default.cnEnNumSpaceUnderlineLine,
1805 placeholder: '请输入内容',
1806 max: undefined,
1807 autoFocus: false
1808};
1809
1810exports.default = Input;
1811/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
1812
1813/***/ }),
1814/* 30 */
1815/***/ (function(module, exports, __webpack_require__) {
1816
1817"use strict";
1818
1819
1820Object.defineProperty(exports, "__esModule", {
1821 value: true
1822});
1823
1824var _card = __webpack_require__(63);
1825
1826var _card2 = _interopRequireDefault(_card);
1827
1828var _icon = __webpack_require__(24);
1829
1830var _icon2 = _interopRequireDefault(_icon);
1831
1832__webpack_require__(64);
1833
1834__webpack_require__(25);
1835
1836var _react = __webpack_require__(1);
1837
1838var _react2 = _interopRequireDefault(_react);
1839
1840var _propTypes = __webpack_require__(0);
1841
1842var _propTypes2 = _interopRequireDefault(_propTypes);
1843
1844function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1845
1846// 没有数据时的显示内容
1847
1848var Placeholder = function Placeholder(props) {
1849 var text = props.text,
1850 style = props.style,
1851 icon = props.icon;
1852
1853 // 通过 style 修改样式
1854
1855 var newStyle = Object.assign({}, {
1856 height: '32em',
1857 display: 'flex',
1858 alignItems: 'center',
1859 justifyContent: 'center',
1860 color: 'rgba(0, 0, 0, 0.43)',
1861 margin: '0',
1862 padding: '0'
1863 }, style);
1864 return _react2.default.createElement(
1865 _card2.default,
1866 { style: newStyle },
1867 _react2.default.createElement(_icon2.default, { type: icon, style: { marginRight: '0.3333em' } }),
1868 text
1869 );
1870};
1871
1872Placeholder.propTypes = {
1873 text: _propTypes2.default.string,
1874 style: _propTypes2.default.object,
1875 icon: _propTypes2.default.string
1876};
1877
1878Placeholder.defaultProps = {
1879 text: '暂无数据',
1880 style: {},
1881 icon: 'frown-o'
1882};
1883
1884exports.default = Placeholder;
1885
1886/***/ }),
1887/* 31 */
1888/***/ (function(module, exports, __webpack_require__) {
1889
1890"use strict";
1891
1892
1893Object.defineProperty(exports, "__esModule", {
1894 value: true
1895});
1896
1897var _react = __webpack_require__(1);
1898
1899var _react2 = _interopRequireDefault(_react);
1900
1901var _propTypes = __webpack_require__(0);
1902
1903var _propTypes2 = _interopRequireDefault(_propTypes);
1904
1905__webpack_require__(61);
1906
1907function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1908
1909/**
1910 我是有底线的
1911
1912 @author Witee<github.com/Witee>
1913 @date 2018-12-05
1914*/
1915var Baseline = function Baseline(props) {
1916 var text = props.text;
1917
1918
1919 return _react2.default.createElement(
1920 'div',
1921 { className: 'baseline-wrapper' },
1922 _react2.default.createElement('span', { className: 'baseline-line' }),
1923 _react2.default.createElement(
1924 'span',
1925 { className: 'baseline-content description-text' },
1926 text
1927 ),
1928 _react2.default.createElement('span', { className: 'baseline-line' })
1929 );
1930};
1931
1932Baseline.propTypes = {
1933 text: _propTypes2.default.string
1934};
1935
1936Baseline.defaultProps = {
1937 text: '我是有底线的'
1938};
1939
1940exports.default = Baseline;
1941
1942/***/ }),
1943/* 32 */
1944/***/ (function(module, exports, __webpack_require__) {
1945
1946"use strict";
1947/* WEBPACK VAR INJECTION */(function(_) {
1948
1949Object.defineProperty(exports, "__esModule", {
1950 value: true
1951});
1952
1953var _radio = __webpack_require__(11);
1954
1955var _radio2 = _interopRequireDefault(_radio);
1956
1957var _form = __webpack_require__(3);
1958
1959var _form2 = _interopRequireDefault(_form);
1960
1961var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
1962
1963var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1964
1965__webpack_require__(12);
1966
1967__webpack_require__(4);
1968
1969var _react = __webpack_require__(1);
1970
1971var _react2 = _interopRequireDefault(_react);
1972
1973var _propTypes = __webpack_require__(0);
1974
1975var _propTypes2 = _interopRequireDefault(_propTypes);
1976
1977function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1978
1979function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1980
1981function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
1982
1983function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
1984
1985/**
1986 Echarts 图例 配置项,受控组件
1987
1988 Legend 返回的是整个 Echarts4.x 中 legend 的配置内容
1989
1990 @author Witee<github.com/Witee>
1991 @date 2018-12-04
1992*/
1993
1994var Legend = function (_React$Component) {
1995 _inherits(Legend, _React$Component);
1996
1997 function Legend() {
1998 var _ref;
1999
2000 var _temp, _this, _ret;
2001
2002 _classCallCheck(this, Legend);
2003
2004 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2005 args[_key] = arguments[_key];
2006 }
2007
2008 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Legend.__proto__ || Object.getPrototypeOf(Legend)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (type, _ref2) {
2009 var value = _ref2.target.value;
2010 var _this$props = _this.props,
2011 legend = _this$props.legend,
2012 onChange = _this$props.onChange;
2013
2014
2015 if (onChange) {
2016 var newLegend = {};
2017
2018 if (type === 'orient') {
2019 _.set(newLegend, 'orient', value);
2020 } else if (type === 'left') {
2021 _.set(newLegend, 'left', value);
2022 } else if (type === 'top') {
2023 _.set(newLegend, 'top', value);
2024 }
2025
2026 onChange(_.assign(legend, newLegend));
2027 }
2028 }, _temp), _possibleConstructorReturn(_this, _ret);
2029 }
2030 /**
2031 data 原样返回
2032 */
2033
2034
2035 _createClass(Legend, [{
2036 key: 'render',
2037 value: function render() {
2038 var _this2 = this;
2039
2040 var _props = this.props,
2041 label = _props.label,
2042 legend = _props.legend,
2043 layout = _props.layout;
2044
2045
2046 var orient = _.get(legend, 'orient', 'horizontal');
2047 var left = _.get(legend, 'left', 'center');
2048 var top = _.get(legend, 'top', 'top');
2049
2050 return _react2.default.createElement(
2051 _form2.default.Item,
2052 _extends({}, layout, { label: label }),
2053 _react2.default.createElement(_form2.default.Item, layout),
2054 ' ',
2055 _react2.default.createElement(
2056 _form2.default.Item,
2057 _extends({}, layout, { label: '\u6392\u5217' }),
2058 _react2.default.createElement(
2059 _radio2.default.Group,
2060 { value: orient, onChange: function onChange(evt) {
2061 return _this2.change('orient', evt);
2062 } },
2063 _react2.default.createElement(
2064 _radio2.default,
2065 { value: 'horizontal' },
2066 '\u6A2A\u5411'
2067 ),
2068 _react2.default.createElement(
2069 _radio2.default,
2070 { value: 'vertical' },
2071 '\u7EB5\u5411'
2072 )
2073 )
2074 ),
2075 _react2.default.createElement(
2076 _form2.default.Item,
2077 _extends({}, layout, { label: '\u6A2A\u5BF9\u9F50' }),
2078 _react2.default.createElement(
2079 _radio2.default.Group,
2080 { value: left, onChange: function onChange(evt) {
2081 return _this2.change('left', evt);
2082 } },
2083 _react2.default.createElement(
2084 _radio2.default,
2085 { value: 'left' },
2086 '\u5DE6'
2087 ),
2088 _react2.default.createElement(
2089 _radio2.default,
2090 { value: 'center' },
2091 '\u4E2D'
2092 ),
2093 _react2.default.createElement(
2094 _radio2.default,
2095 { value: 'right' },
2096 '\u53F3'
2097 )
2098 )
2099 ),
2100 _react2.default.createElement(
2101 _form2.default.Item,
2102 _extends({}, layout, { label: '\u7EB5\u5BF9\u9F50' }),
2103 _react2.default.createElement(
2104 _radio2.default.Group,
2105 { value: top, onChange: function onChange(evt) {
2106 return _this2.change('top', evt);
2107 } },
2108 _react2.default.createElement(
2109 _radio2.default,
2110 { value: 'top' },
2111 '\u4E0A'
2112 ),
2113 _react2.default.createElement(
2114 _radio2.default,
2115 { value: 'middle' },
2116 '\u4E2D'
2117 ),
2118 _react2.default.createElement(
2119 _radio2.default,
2120 { value: 'bottom' },
2121 '\u4E0B'
2122 )
2123 )
2124 )
2125 );
2126 }
2127 }]);
2128
2129 return Legend;
2130}(_react2.default.Component);
2131
2132Legend.propTypes = {
2133 label: _propTypes2.default.string,
2134 legend: _propTypes2.default.object,
2135 layout: _propTypes2.default.object,
2136 onChange: _propTypes2.default.func
2137};
2138
2139Legend.defaultProps = {
2140 label: '图例',
2141 legend: {},
2142 layout: {
2143 labelCol: {
2144 xs: { span: 24 },
2145 sm: { span: 6 }
2146 },
2147 wrapperCol: {
2148 xs: { span: 24 },
2149 sm: { span: 18 }
2150 }
2151 },
2152 onChange: undefined
2153};
2154
2155exports.default = Legend;
2156/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
2157
2158/***/ }),
2159/* 33 */
2160/***/ (function(module, exports, __webpack_require__) {
2161
2162"use strict";
2163/* WEBPACK VAR INJECTION */(function(_) {
2164
2165Object.defineProperty(exports, "__esModule", {
2166 value: true
2167});
2168
2169var _input = __webpack_require__(9);
2170
2171var _input2 = _interopRequireDefault(_input);
2172
2173var _tooltip = __webpack_require__(26);
2174
2175var _tooltip2 = _interopRequireDefault(_tooltip);
2176
2177var _icon = __webpack_require__(24);
2178
2179var _icon2 = _interopRequireDefault(_icon);
2180
2181var _form = __webpack_require__(3);
2182
2183var _form2 = _interopRequireDefault(_form);
2184
2185var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
2186
2187var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2188
2189__webpack_require__(10);
2190
2191__webpack_require__(27);
2192
2193__webpack_require__(25);
2194
2195__webpack_require__(4);
2196
2197var _react = __webpack_require__(1);
2198
2199var _react2 = _interopRequireDefault(_react);
2200
2201var _propTypes = __webpack_require__(0);
2202
2203var _propTypes2 = _interopRequireDefault(_propTypes);
2204
2205function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2206
2207function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2208
2209function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
2210
2211function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
2212
2213/**
2214 Echarts 饼图系列 配置项
2215
2216 Series 返回的是整个 Echarts4.x 中 series 的配置内容
2217
2218 注意:数据统一使用 dataset 进行设置,不在 series 中
2219 即 series 的对象中没有 data 字段
2220
2221 @author Witee<github.com/Witee>
2222 @date 2018-12-04
2223*/
2224
2225var Pie = function (_React$Component) {
2226 _inherits(Pie, _React$Component);
2227
2228 function Pie() {
2229 var _ref;
2230
2231 var _temp, _this, _ret;
2232
2233 _classCallCheck(this, Pie);
2234
2235 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2236 args[_key] = arguments[_key];
2237 }
2238
2239 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Pie.__proto__ || Object.getPrototypeOf(Pie)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (type, _ref2) {
2240 var value = _ref2.target.value;
2241 var _this$props = _this.props,
2242 series = _this$props.series,
2243 onChange = _this$props.onChange;
2244
2245 var numberReg = /^\d+$/;
2246 var percentReg = /^\d+%$/;
2247
2248 if (onChange) {
2249 var originFirstSeries = _.get(series, 0, {});
2250 /**
2251 type 为固定值
2252 */
2253 var newSeries = { type: 'pie' };
2254
2255 if (type === 'name') {
2256 if (_.get(value, 'length', null)) {
2257 _.set(newSeries, 'name', value);
2258 }
2259 } else if (type === 'radius-in') {
2260 if (numberReg.test(value) || percentReg.test(value)) {
2261 var originRadius = _.get(originFirstSeries, 'radius', []);
2262 var newRadius = _.set(originRadius, 0, value);
2263 _.set(newSeries, 'radius', newRadius);
2264 }
2265 } else if (type === 'radius-out') {
2266 if (numberReg.test(value) || percentReg.test(value)) {
2267 var _originRadius = _.get(originFirstSeries, 'radius', []);
2268 var _newRadius = _.set(_originRadius, 1, value);
2269 _.set(newSeries, 'radius', _newRadius);
2270 }
2271 } else if (type === 'formatter') {
2272 if (_.get(value, 'length', null)) {
2273 _.set(newSeries, 'label.formatter', value);
2274 }
2275 }
2276 /**
2277 注意,这里返回的是列表
2278 */
2279 onChange([_.assign(originFirstSeries, newSeries)]);
2280 }
2281 }, _temp), _possibleConstructorReturn(_this, _ret);
2282 }
2283
2284 _createClass(Pie, [{
2285 key: 'render',
2286 value: function render() {
2287 var _this2 = this;
2288
2289 var _props = this.props,
2290 label = _props.label,
2291 series = _props.series,
2292 layout = _props.layout;
2293
2294 /**
2295 只使用第一个
2296 */
2297
2298 var firstSeries = _.get(series, 0, {});
2299
2300 // const name = _.get(firstSeries, 'name', '');
2301 var sizeIn = _.get(_.get(firstSeries, 'radius', []), 0, undefined);
2302 var sizeOut = _.get(_.get(firstSeries, 'radius', []), 1, undefined);
2303 var formatter = _.get(firstSeries, 'label.formatter', '{b}');
2304
2305 var radiusTooltip = _react2.default.createElement(
2306 'p',
2307 null,
2308 '\u997C\u56FE\u7684\u5185\u3001\u5916\u534A\u5F84\u3002\u53EF\u4EE5\u4E3A\u5982\u4E0B\u7C7B\u578B: ',
2309 _react2.default.createElement('br', null),
2310 _react2.default.createElement('br', null),
2311 '\u6570\u503C: \u76F4\u63A5\u8F93\u5165\u6570\u5B57\u6307\u5B9A\u5185\u5916\u534A\u5F84\u50CF\u7D20\u503C\u3002',
2312 _react2.default.createElement('br', null),
2313 '\u5B57\u7B26\u4E32: \u8F93\u5165\u6BD4\u5206\u6BD4\uFF0C\u4F8B\u5982\uFF0C20%\uFF0C\u8868\u793A\u534A\u5F84\u4E3A\u53EF\u89C6\u533A\u5C3A\u5BF8\u7684 20% \u957F\u5EA6\u3002',
2314 _react2.default.createElement('br', null),
2315 _react2.default.createElement('br', null),
2316 '\u5185 \u8868\u793A\u5185\u534A\u5F84\uFF0C\u5916 \u8868\u793A\u5916\u534A\u5F84\u3002',
2317 _react2.default.createElement('br', null),
2318 '\u540C\u65F6\u8BBE\u7F6E\u65F6\uFF0C\u5982\u679C \u5916\u534A\u5F84>\u5185\u534A\u5F84\uFF0C\u53EF\u4EE5\u663E\u793A\u4E3A\u5706\u73AF\uFF0C\u5982\u5185\u534A\u5F84\u8BBE\u7F6E\u4E3A 50%; \u5916\u534A\u5F84\u8BBE\u7F6E\u4E3A 70%\u3002',
2319 _react2.default.createElement('br', null)
2320 );
2321
2322 var formatterTooltip = _react2.default.createElement(
2323 'p',
2324 null,
2325 '\u5B57\u7B26\u4E32\u6A21\u677F:',
2326 _react2.default.createElement('br', null),
2327 '\xA0 {a}: \u7CFB\u5217\u540D',
2328 _react2.default.createElement('br', null),
2329 '\xA0 {b}: \u6570\u636E\u540D',
2330 _react2.default.createElement('br', null),
2331 '\xA0 {c}: \u6570\u636E\u503C',
2332 _react2.default.createElement('br', null),
2333 '\xA0 {d}: \u767E\u5206\u6BD4',
2334 _react2.default.createElement('br', null),
2335 '\u5982\u53EA\u663E\u793A\u540D\u79F0\u548C\u767E\u5206\u6BD4: {b}\xA0({d} %)'
2336 );
2337
2338 return _react2.default.createElement(
2339 _form2.default.Item,
2340 _extends({}, layout, { label: label }),
2341 _react2.default.createElement(_form2.default.Item, layout),
2342 ' ',
2343 _react2.default.createElement(
2344 _form2.default.Item,
2345 _extends({}, layout, { label: _react2.default.createElement(
2346 _tooltip2.default,
2347 { placement: 'topLeft', title: radiusTooltip },
2348 '\u534A\u5F84 ',
2349 _react2.default.createElement(_icon2.default, { type: 'question-circle-o' })
2350 ) }),
2351 _react2.default.createElement(_form2.default.Item, layout),
2352 ' ',
2353 _react2.default.createElement(
2354 _form2.default.Item,
2355 _extends({}, layout, { label: '\u5185' }),
2356 _react2.default.createElement(_input2.default, {
2357 size: 'small',
2358 style: { width: '4em' },
2359 defaultValue: sizeIn,
2360 onBlur: function onBlur(evt) {
2361 return _this2.change('radius-in', evt);
2362 },
2363 onPressEnter: function onPressEnter(evt) {
2364 return _this2.change('radius-in', evt);
2365 }
2366 })
2367 ),
2368 _react2.default.createElement(
2369 _form2.default.Item,
2370 _extends({}, layout, { label: '\u5916' }),
2371 _react2.default.createElement(_input2.default, {
2372 size: 'small',
2373 style: { width: '4em' },
2374 defaultValue: sizeOut,
2375 onBlur: function onBlur(evt) {
2376 return _this2.change('radius-out', evt);
2377 },
2378 onPressEnter: function onPressEnter(evt) {
2379 return _this2.change('radius-out', evt);
2380 }
2381 })
2382 )
2383 ),
2384 _react2.default.createElement(
2385 _form2.default.Item,
2386 _extends({}, layout, { label: _react2.default.createElement(
2387 _tooltip2.default,
2388 { placement: 'topLeft', title: formatterTooltip },
2389 '\u683C\u5F0F ',
2390 _react2.default.createElement(_icon2.default, { type: 'question-circle-o' })
2391 ) }),
2392 _react2.default.createElement(_input2.default, {
2393 placeholder: '\u683C\u5F0F',
2394 defaultValue: formatter,
2395 onBlur: function onBlur(evt) {
2396 return _this2.change('formatter', evt);
2397 },
2398 onPressEnter: function onPressEnter(evt) {
2399 return _this2.change('formatter', evt);
2400 }
2401 })
2402 )
2403 );
2404 }
2405 }]);
2406
2407 return Pie;
2408}(_react2.default.Component);
2409
2410Pie.propTypes = {
2411 label: _propTypes2.default.string,
2412 series: _propTypes2.default.array,
2413 layout: _propTypes2.default.object,
2414 onChange: _propTypes2.default.func
2415};
2416
2417Pie.defaultProps = {
2418 label: '系列',
2419 series: [],
2420 layout: {
2421 labelCol: {
2422 xs: { span: 24 },
2423 sm: { span: 6 }
2424 },
2425 wrapperCol: {
2426 xs: { span: 24 },
2427 sm: { span: 18 }
2428 }
2429 },
2430 onChange: undefined
2431};
2432
2433exports.default = Pie;
2434/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
2435
2436/***/ }),
2437/* 34 */
2438/***/ (function(module, exports, __webpack_require__) {
2439
2440"use strict";
2441/* WEBPACK VAR INJECTION */(function(_) {
2442
2443Object.defineProperty(exports, "__esModule", {
2444 value: true
2445});
2446
2447var _radio = __webpack_require__(11);
2448
2449var _radio2 = _interopRequireDefault(_radio);
2450
2451var _form = __webpack_require__(3);
2452
2453var _form2 = _interopRequireDefault(_form);
2454
2455var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
2456
2457var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2458
2459__webpack_require__(12);
2460
2461__webpack_require__(4);
2462
2463var _react = __webpack_require__(1);
2464
2465var _react2 = _interopRequireDefault(_react);
2466
2467var _propTypes = __webpack_require__(0);
2468
2469var _propTypes2 = _interopRequireDefault(_propTypes);
2470
2471function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2472
2473function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2474
2475function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
2476
2477function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
2478
2479/**
2480 Echarts 词云图系列 配置项
2481
2482 Series 返回的是整个 Echarts4.x 中 series 的配置内容
2483
2484 注意:数据统一使用 dataset 进行设置,不在 series 中
2485 即 series 的对象中没有 data 字段
2486
2487 @author Witee<github.com/Witee>
2488 @date 2018-12-07
2489*/
2490
2491var colorGroups = [['#6a6bd2', '#8ca34d', '#df9cd7', '#e8bb48', '#b4d065'], ['#F2572D', '#0067A6', '#008972', '#00ABD8', '#F5C564'], ['#161E3E', '#285171', '#D8B368', '#82C0AF', '#DAD4B9'], ['#1f010a', '#52020b', '#950707', '#c44a22', '#bd6000'], ['#011E4C', '#103961', '#35639D', '#8DA6BD', '#9A9B9B'], ['#781308', '#D41D45', '#E86E1B', '#B5AC00', '#ECBA06'], ['#111111', '#222222', '#333333', '#444444', '#555555']];
2492
2493var WordCloud = function (_React$Component) {
2494 _inherits(WordCloud, _React$Component);
2495
2496 function WordCloud() {
2497 var _ref;
2498
2499 var _temp, _this, _ret;
2500
2501 _classCallCheck(this, WordCloud);
2502
2503 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2504 args[_key] = arguments[_key];
2505 }
2506
2507 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WordCloud.__proto__ || Object.getPrototypeOf(WordCloud)).call.apply(_ref, [this].concat(args))), _this), _this.change = function (type, e) {
2508 var _this$props = _this.props,
2509 series = _this$props.series,
2510 onChange = _this$props.onChange;
2511
2512
2513 if (onChange) {
2514 var originFirstSeries = _.get(series, 0, {});
2515 /**
2516 type 为固定值
2517 */
2518 var newSeries = { type: 'wordCloud' };
2519
2520 if (type === 'shape') {
2521 var value = _.get(e, 'target.value');
2522 if (_.get(value, 'length', null)) {
2523 _.set(newSeries, 'shape', value);
2524 }
2525 } else if (type === 'rotation') {
2526 var _value = _.get(e, 'target.value');
2527 _.set(newSeries, 'rotationRange', [-_value, _value]);
2528 } else if (type === 'color') {
2529 var colors = _.get(colorGroups, e.key);
2530 _.set(newSeries, 'textStyle.normal.color', function () {
2531 return _.get(colors, _.random(0, colors.length));
2532 });
2533 }
2534 /**
2535 注意,这里返回的是列表
2536 */
2537 onChange([_.assign(originFirstSeries, newSeries)]);
2538 }
2539 }, _temp), _possibleConstructorReturn(_this, _ret);
2540 }
2541
2542 _createClass(WordCloud, [{
2543 key: 'render',
2544 value: function render() {
2545 var _this2 = this;
2546
2547 var _props = this.props,
2548 label = _props.label,
2549 series = _props.series,
2550 layout = _props.layout;
2551
2552 /**
2553 只使用第一个
2554 */
2555
2556 var firstSeries = _.get(series, 0, {});
2557
2558 var shape = _.get(firstSeries, 'shape', 'circle');
2559 var rotationRange = _.get(firstSeries, 'rotationRange', [-90, 90]);
2560 var rotation = Math.abs(_.get(rotationRange, 0, 90));
2561
2562 return _react2.default.createElement(
2563 _form2.default.Item,
2564 _extends({}, layout, { label: label }),
2565 _react2.default.createElement(_form2.default.Item, layout),
2566 ' ',
2567 _react2.default.createElement(
2568 _form2.default.Item,
2569 _extends({}, layout, { label: '\u5F62\u72B6' }),
2570 _react2.default.createElement(
2571 _radio2.default.Group,
2572 { value: shape, onChange: function onChange(evt) {
2573 return _this2.change('shape', evt);
2574 } },
2575 _react2.default.createElement(
2576 _radio2.default,
2577 { value: 'circle' },
2578 '\u5706\u5F62'
2579 ),
2580 _react2.default.createElement(
2581 _radio2.default,
2582 { value: 'star' },
2583 '\u4E94\u89D2\u661F'
2584 ),
2585 _react2.default.createElement(
2586 _radio2.default,
2587 { value: 'triangle' },
2588 '\u4E09\u89D2\u5F62'
2589 )
2590 )
2591 ),
2592 _react2.default.createElement(
2593 _form2.default.Item,
2594 _extends({}, layout, { label: '\u89D2\u5EA6' }),
2595 _react2.default.createElement(
2596 _radio2.default.Group,
2597 { value: rotation, onChange: function onChange(evt) {
2598 return _this2.change('rotation', evt);
2599 } },
2600 _react2.default.createElement(
2601 _radio2.default,
2602 { value: 90 },
2603 '\u65CB\u8F6C'
2604 ),
2605 _react2.default.createElement(
2606 _radio2.default,
2607 { value: 0 },
2608 '\u4E0D\u65CB\u8F6C'
2609 )
2610 )
2611 )
2612 );
2613 }
2614 }]);
2615
2616 return WordCloud;
2617}(_react2.default.Component);
2618
2619WordCloud.propTypes = {
2620 label: _propTypes2.default.string,
2621 series: _propTypes2.default.array,
2622 layout: _propTypes2.default.object,
2623 onChange: _propTypes2.default.func
2624};
2625
2626WordCloud.defaultProps = {
2627 label: '词云',
2628 series: [],
2629 layout: {
2630 labelCol: {
2631 xs: { span: 24 },
2632 sm: { span: 6 }
2633 },
2634 wrapperCol: {
2635 xs: { span: 24 },
2636 sm: { span: 18 }
2637 }
2638 },
2639 onChange: undefined
2640};
2641
2642exports.default = WordCloud;
2643/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
2644
2645/***/ }),
2646/* 35 */
2647/***/ (function(module, exports) {
2648
2649module.exports = require("antd/es/checkbox");
2650
2651/***/ }),
2652/* 36 */
2653/***/ (function(module, exports) {
2654
2655module.exports = require("antd/es/checkbox/style/css");
2656
2657/***/ }),
2658/* 37 */
2659/***/ (function(module, exports) {
2660
2661module.exports = require("antd/es/popover");
2662
2663/***/ }),
2664/* 38 */
2665/***/ (function(module, exports) {
2666
2667module.exports = require("antd/es/popover/style/css");
2668
2669/***/ }),
2670/* 39 */
2671/***/ (function(module, exports) {
2672
2673module.exports = require("react-color");
2674
2675/***/ }),
2676/* 40 */
2677/***/ (function(module, exports, __webpack_require__) {
2678
2679"use strict";
2680/* WEBPACK VAR INJECTION */(function(_) {
2681
2682Object.defineProperty(exports, "__esModule", {
2683 value: true
2684});
2685
2686var _popover = __webpack_require__(37);
2687
2688var _popover2 = _interopRequireDefault(_popover);
2689
2690var _tooltip = __webpack_require__(26);
2691
2692var _tooltip2 = _interopRequireDefault(_tooltip);
2693
2694var _row = __webpack_require__(7);
2695
2696var _row2 = _interopRequireDefault(_row);
2697
2698var _button = __webpack_require__(22);
2699
2700var _button2 = _interopRequireDefault(_button);
2701
2702var _col = __webpack_require__(5);
2703
2704var _col2 = _interopRequireDefault(_col);
2705
2706var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2707
2708__webpack_require__(38);
2709
2710__webpack_require__(27);
2711
2712__webpack_require__(8);
2713
2714__webpack_require__(23);
2715
2716__webpack_require__(6);
2717
2718var _react = __webpack_require__(1);
2719
2720var _react2 = _interopRequireDefault(_react);
2721
2722var _propTypes = __webpack_require__(0);
2723
2724var _propTypes2 = _interopRequireDefault(_propTypes);
2725
2726var _Input = __webpack_require__(29);
2727
2728var _Input2 = _interopRequireDefault(_Input);
2729
2730function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2731
2732function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2733
2734function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
2735
2736function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
2737
2738/*
2739 弹出卡片,内容是输入框
2740*/
2741
2742// 弹出内容
2743var PopContent = function (_React$Component) {
2744 _inherits(PopContent, _React$Component);
2745
2746 function PopContent() {
2747 var _ref;
2748
2749 var _temp, _this, _ret;
2750
2751 _classCallCheck(this, PopContent);
2752
2753 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
2754 args[_key] = arguments[_key];
2755 }
2756
2757 return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = PopContent.__proto__ || Object.getPrototypeOf(PopContent)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
2758 name: null,
2759 legal: false
2760 }, _this.handleInputChange = function (value) {
2761 var legal = true;
2762
2763 // 返回 null 时表示不合法
2764 if (_.isNull(value)) {
2765 legal = false;
2766 }
2767 _this.setState({ name: value, legal: legal });
2768 }, _temp), _possibleConstructorReturn(_this, _ret);
2769 }
2770
2771 _createClass(PopContent, [{
2772 key: 'render',
2773 value: function render() {
2774 var _this2 = this;
2775
2776 var _props = this.props,
2777 submit = _props.submit,
2778 inputMax = _props.inputMax,
2779 inputStyle = _props.inputStyle,
2780 inputLabelName = _props.inputLabelName,
2781 inputLabelSpan = _props.inputLabelSpan,
2782 inputWrapperSpan = _props.inputWrapperSpan,
2783 inputHasFeedback = _props.inputHasFeedback,
2784 inputRequired = _props.inputRequired,
2785 inputHelp = _props.inputHelp,
2786 inputRegular = _props.inputRegular,
2787 inputPlaceholder = _props.inputPlaceholder,
2788 inputAutoFocus = _props.inputAutoFocus;
2789 var _state = this.state,
2790 name = _state.name,
2791 legal = _state.legal;
2792
2793
2794 return _react2.default.createElement(
2795 _row2.default,
2796 null,
2797 _react2.default.createElement(
2798 _col2.default,
2799 null,
2800 _react2.default.createElement(_Input2.default, {
2801 value: name,
2802 onChange: this.handleInputChange,
2803 max: inputMax,
2804 style: inputStyle,
2805 labelName: inputLabelName,
2806 labelSpan: inputLabelSpan,
2807 wrapperSpan: inputWrapperSpan,
2808 hasFeedback: inputHasFeedback,
2809 required: inputRequired,
2810 help: inputHelp,
2811 regular: inputRegular,
2812 placeholder: inputPlaceholder,
2813 autoFocus: inputAutoFocus
2814 })
2815 ),
2816 _react2.default.createElement(
2817 _col2.default,
2818 { offset: 6 },
2819 _react2.default.createElement(
2820 _button2.default,
2821 {
2822 type: 'primary',
2823 className: 'margin-top-bottom-middle',
2824 disabled: !legal,
2825 onClick: function onClick() {
2826 submit(name);_this2.setState({ name: null });
2827 }
2828 },
2829 '\u63D0\u4EA4'
2830 )
2831 )
2832 );
2833 }
2834 }]);
2835
2836 return PopContent;
2837}(_react2.default.Component);
2838
2839PopContent.propTypes = {
2840 submit: _propTypes2.default.func.isRequired,
2841 inputMax: _propTypes2.default.number,
2842 inputStyle: _propTypes2.default.object,
2843 inputLabelName: _propTypes2.default.string,
2844 inputLabelSpan: _propTypes2.default.number,
2845 inputWrapperSpan: _propTypes2.default.number,
2846 inputHasFeedback: _propTypes2.default.bool,
2847 inputRequired: _propTypes2.default.bool,
2848 inputHelp: _propTypes2.default.string,
2849 inputRegular: _propTypes2.default.object,
2850 inputPlaceholder: _propTypes2.default.string,
2851 inputAutoFocus: _propTypes2.default.bool
2852};
2853
2854PopContent.defaultProps = {
2855 inputMax: undefined,
2856 inputStyle: {},
2857 inputLabelName: undefined,
2858 inputLabelSpan: 6,
2859 inputWrapperSpan: 18,
2860 inputHasFeedback: true,
2861 inputRequired: true,
2862 inputHelp: '支持中英文、数字、下划线、减号、空格',
2863 inputRegular: /^[\u4e00-\u9fa5a-zA-Z0-9-_\s]+$/,
2864 inputPlaceholder: '请输入内容',
2865 inputAutoFocus: false
2866};
2867
2868// 下载弹出卡片
2869// eslint-disable-next-line
2870
2871var PopoverInput = function (_React$Component2) {
2872 _inherits(PopoverInput, _React$Component2);
2873
2874 function PopoverInput() {
2875 var _ref2;
2876
2877 var _temp2, _this3, _ret2;
2878
2879 _classCallCheck(this, PopoverInput);
2880
2881 for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2882 args[_key2] = arguments[_key2];
2883 }
2884
2885 return _ret2 = (_temp2 = (_this3 = _possibleConstructorReturn(this, (_ref2 = PopoverInput.__proto__ || Object.getPrototypeOf(PopoverInput)).call.apply(_ref2, [this].concat(args))), _this3), _this3.state = {
2886 visible: undefined
2887 }, _this3.onClick = function () {
2888 var _this3$props = _this3.props,
2889 btnDisabled = _this3$props.btnDisabled,
2890 btnOnClick = _this3$props.btnOnClick;
2891 var visible = _this3.state.visible;
2892 // 如果按钮被禁用,则不响应点击
2893
2894 if (!btnDisabled) {
2895 _this3.setState({ visible: !visible });
2896 btnOnClick();
2897 }
2898 }, _this3.submit = function (value) {
2899 var submit = _this3.props.submit;
2900
2901 _this3.setState({ visible: false });
2902 submit(value);
2903 }, _temp2), _possibleConstructorReturn(_this3, _ret2);
2904 }
2905
2906 _createClass(PopoverInput, [{
2907 key: 'render',
2908 value: function render() {
2909 var _props2 = this.props,
2910 title = _props2.title,
2911 cardStyle = _props2.cardStyle,
2912 cardPlacement = _props2.cardPlacement,
2913 btnName = _props2.btnName,
2914 btnSize = _props2.btnSize,
2915 btnClassName = _props2.btnClassName,
2916 btnType = _props2.btnType,
2917 btnIcon = _props2.btnIcon,
2918 btnDisabled = _props2.btnDisabled,
2919 btnLoading = _props2.btnLoading,
2920 btnStyle = _props2.btnStyle,
2921 tooltipTitle = _props2.tooltipTitle,
2922 inputMax = _props2.inputMax,
2923 inputStyle = _props2.inputStyle,
2924 inputLabelName = _props2.inputLabelName,
2925 inputLabelSpan = _props2.inputLabelSpan,
2926 inputWrapperSpan = _props2.inputWrapperSpan,
2927 inputHasFeedback = _props2.inputHasFeedback,
2928 inputRequired = _props2.inputRequired,
2929 inputHelp = _props2.inputHelp,
2930 inputRegular = _props2.inputRegular,
2931 inputPlaceholder = _props2.inputPlaceholder,
2932 inputAutoFocus = _props2.inputAutoFocus;
2933 var visible = this.state.visible;
2934
2935 // 如果按钮被禁用,则不显示弹出框
2936
2937 var popoverVisible = visible;
2938 if (btnDisabled) {
2939 popoverVisible = false;
2940 }
2941 return _react2.default.createElement(
2942 _popover2.default,
2943 {
2944 overlayStyle: cardStyle,
2945 placement: cardPlacement,
2946 title: title,
2947 content: _react2.default.createElement(PopContent, {
2948 submit: this.submit,
2949 inputMax: inputMax,
2950 inputStyle: inputStyle,
2951 inputLabelName: inputLabelName,
2952 inputLabelSpan: inputLabelSpan,
2953 inputWrapperSpan: inputWrapperSpan,
2954 inputHasFeedback: inputHasFeedback,
2955 inputRequired: inputRequired,
2956 inputHelp: inputHelp,
2957 inputRegular: inputRegular,
2958 inputPlaceholder: inputPlaceholder,
2959 inputAutoFocus: inputAutoFocus
2960 }),
2961 trigger: 'click',
2962 onVisibleChange: this.onClick // 点击空白处关闭
2963 , visible: popoverVisible
2964 },
2965 _react2.default.createElement(
2966 _tooltip2.default,
2967 { title: tooltipTitle },
2968 _react2.default.createElement(
2969 _button2.default,
2970 {
2971 icon: btnIcon,
2972 type: btnType,
2973 size: btnSize,
2974 onClick: this.onClick,
2975 disabled: btnDisabled,
2976 loading: btnLoading,
2977 className: btnClassName,
2978 style: btnStyle
2979 },
2980 btnName
2981 )
2982 )
2983 );
2984 }
2985 }]);
2986
2987 return PopoverInput;
2988}(_react2.default.Component);
2989
2990PopoverInput.propTypes = {
2991 submit: _propTypes2.default.func.isRequired,
2992 title: _propTypes2.default.string,
2993 cardStyle: _propTypes2.default.object,
2994 cardPlacement: _propTypes2.default.string,
2995 tooltipTitle: _propTypes2.default.string,
2996 btnName: _propTypes2.default.string,
2997 btnType: _propTypes2.default.string,
2998 btnSize: _propTypes2.default.string,
2999 btnIcon: _propTypes2.default.string,
3000 btnDisabled: _propTypes2.default.bool,
3001 btnLoading: _propTypes2.default.bool,
3002 btnOnClick: _propTypes2.default.func,
3003 btnClassName: _propTypes2.default.string,
3004 btnStyle: _propTypes2.default.object,
3005 inputMax: _propTypes2.default.number,
3006 inputStyle: _propTypes2.default.object,
3007 inputLabelName: _propTypes2.default.string,
3008 inputLabelSpan: _propTypes2.default.number,
3009 inputWrapperSpan: _propTypes2.default.number,
3010 inputHasFeedback: _propTypes2.default.bool,
3011 inputRequired: _propTypes2.default.bool,
3012 inputHelp: _propTypes2.default.string,
3013 inputRegular: _propTypes2.default.object,
3014 inputPlaceholder: _propTypes2.default.string,
3015 inputAutoFocus: _propTypes2.default.bool
3016};
3017
3018PopoverInput.defaultProps = {
3019 title: '请选择',
3020 cardStyle: undefined,
3021 cardPlacement: 'bottomRight',
3022 tooltipTitle: undefined,
3023 btnName: '保存',
3024 btnType: 'default',
3025 btnSize: 'default',
3026 btnIcon: 'save',
3027 btnDisabled: false,
3028 btnLoading: false,
3029 btnOnClick: function btnOnClick() {},
3030 btnClassName: '',
3031 btnStyle: { width: '100%' },
3032 inputMax: undefined,
3033 inputStyle: {},
3034 inputLabelName: undefined,
3035 inputLabelSpan: 6,
3036 inputWrapperSpan: 18,
3037 inputHasFeedback: true,
3038 inputRequired: true,
3039 inputHelp: '支持中英文、数字、下划线、减号、空格',
3040 inputRegular: /^[\u4e00-\u9fa5a-zA-Z0-9-_\s]+$/,
3041 inputPlaceholder: '请输入内容',
3042 inputAutoFocus: false
3043};
3044
3045exports.default = PopoverInput;
3046/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
3047
3048/***/ }),
3049/* 41 */
3050/***/ (function(module, exports, __webpack_require__) {
3051
3052"use strict";
3053
3054
3055Object.defineProperty(exports, "__esModule", {
3056 value: true
3057});
3058
3059var _Base = __webpack_require__(45);
3060
3061var _Base2 = _interopRequireDefault(_Base);
3062
3063var _ReactEcharts = __webpack_require__(49);
3064
3065var _ReactEcharts2 = _interopRequireDefault(_ReactEcharts);
3066
3067var _EchartsEditor = __webpack_require__(46);
3068
3069var _EchartsEditor2 = _interopRequireDefault(_EchartsEditor);
3070
3071var _EchartsPie = __webpack_require__(47);
3072
3073var _EchartsPie2 = _interopRequireDefault(_EchartsPie);
3074
3075var _EchartsWordCloud = __webpack_require__(48);
3076
3077var _EchartsWordCloud2 = _interopRequireDefault(_EchartsWordCloud);
3078
3079var _Title = __webpack_require__(17);
3080
3081var _Title2 = _interopRequireDefault(_Title);
3082
3083var _Theme = __webpack_require__(16);
3084
3085var _Theme2 = _interopRequireDefault(_Theme);
3086
3087var _Height = __webpack_require__(15);
3088
3089var _Height2 = _interopRequireDefault(_Height);
3090
3091var _Legend = __webpack_require__(32);
3092
3093var _Legend2 = _interopRequireDefault(_Legend);
3094
3095var _Toolbox = __webpack_require__(18);
3096
3097var _Toolbox2 = _interopRequireDefault(_Toolbox);
3098
3099var _Pie = __webpack_require__(33);
3100
3101var _Pie2 = _interopRequireDefault(_Pie);
3102
3103var _WordCloud = __webpack_require__(34);
3104
3105var _WordCloud2 = _interopRequireDefault(_WordCloud);
3106
3107function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3108
3109/**
3110 基于 EChart 的常用图表
3111
3112 - Base 是最基础的使用
3113 - ReactEcharts 是封装了 echarts-for-react 组件的组件,目的是为了使用 echart4
3114 - EchartsEditor 标准的使用方法,将所有的配置项组合,编辑 echarts 图表
3115 - EchartsPie echarts4.x 饼图配置器
3116 - EchartsWordCloud 词云 配置器
3117
3118 - 可自由组合的配置项
3119 - Title 标题
3120 - Theme 主题、背景颜色
3121 - Height 高度
3122 - Legend 图例
3123 - Toolbox 工具
3124 - SeriesPie 饼图系列
3125 - SeriesWordCloud 词云系列
3126
3127 @author Witee<github.com/Witee>
3128 @date 2018-07-05
3129 @update 2018-12-07
3130*/
3131
3132var Chart = _Base2.default; // 不能使用 { Base } 格式,否则 <Chart /> 格式将无法使用,只能使用 <Chart.Base />
3133Chart.ReactEcharts = _ReactEcharts2.default;
3134Chart.EchartsEditor = _EchartsEditor2.default;
3135Chart.EchartsPie = _EchartsPie2.default;
3136Chart.EchartsWordCloud = _EchartsWordCloud2.default;
3137
3138Chart.Title = _Title2.default;
3139Chart.Theme = _Theme2.default;
3140Chart.Height = _Height2.default;
3141Chart.Legend = _Legend2.default;
3142Chart.Toolbox = _Toolbox2.default;
3143Chart.SeriesPie = _Pie2.default;
3144Chart.SeriesWordCloud = _WordCloud2.default;
3145
3146exports.default = Chart;
3147
3148/***/ }),
3149/* 42 */
3150/***/ (function(module, exports, __webpack_require__) {
3151
3152"use strict";
3153
3154
3155Object.defineProperty(exports, "__esModule", {
3156 value: true
3157});
3158
3159var _Common = __webpack_require__(54);
3160
3161var _Common2 = _interopRequireDefault(_Common);
3162
3163var _Group = __webpack_require__(55);
3164
3165var _Group2 = _interopRequireDefault(_Group);
3166
3167function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3168
3169/**
3170 常用布局
3171
3172 @author Witee<github.com/Witee>
3173 @date 2018-07-04
3174*/
3175
3176var Layout = _Common2.default;
3177Layout.Group = _Group2.default;
3178
3179exports.default = Layout;
3180
3181/***/ }),
3182/* 43 */
3183/***/ (function(module, exports, __webpack_require__) {
3184
3185
3186var content = __webpack_require__(58);
3187
3188if(typeof content === 'string') content = [[module.i, content, '']];
3189
3190var transform;
3191var insertInto;
3192
3193
3194
3195var options = {"hmr":true}
3196
3197options.transform = transform
3198options.insertInto = undefined;
3199
3200var update = __webpack_require__(21)(content, options);
3201
3202if(content.locals) module.exports = content.locals;
3203
3204if(false) {
3205 module.hot.accept("!!../../node_modules/css-loader/index.js!./app.css", function() {
3206 var newContent = require("!!../../node_modules/css-loader/index.js!./app.css");
3207
3208 if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
3209
3210 var locals = (function(a, b) {
3211 var key, idx = 0;
3212
3213 for(key in a) {
3214 if(!b || a[key] !== b[key]) return false;
3215 idx++;
3216 }
3217
3218 for(key in b) idx--;
3219
3220 return idx === 0;
3221 }(content.locals, newContent.locals));
3222
3223 if(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');
3224
3225 update(newContent);
3226 });
3227
3228 module.hot.dispose(function() { update(); });
3229}
3230
3231/***/ }),
3232/* 44 */
3233/***/ (function(module, exports, __webpack_require__) {
3234
3235"use strict";
3236
3237
3238/**
3239 * When source maps are enabled, `style-loader` uses a link element with a data-uri to
3240 * embed the css on the page. This breaks all relative urls because now they are relative to a
3241 * bundle instead of the current page.
3242 *
3243 * One solution is to only use full urls, but that may be impossible.
3244 *
3245 * Instead, this function "fixes" the relative urls to be absolute according to the current page location.
3246 *
3247 * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
3248 *
3249 */
3250
3251module.exports = function (css) {
3252 // get current location
3253 var location = typeof window !== "undefined" && window.location;
3254
3255 if (!location) {
3256 throw new Error("fixUrls requires window.location");
3257 }
3258
3259 // blank or null?
3260 if (!css || typeof css !== "string") {
3261 return css;
3262 }
3263
3264 var baseUrl = location.protocol + "//" + location.host;
3265 var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");
3266
3267 // convert each url(...)
3268 /*
3269 This regular expression is just a way to recursively match brackets within
3270 a string.
3271 /url\s*\( = Match on the word "url" with any whitespace after it and then a parens
3272 ( = Start a capturing group
3273 (?: = Start a non-capturing group
3274 [^)(] = Match anything that isn't a parentheses
3275 | = OR
3276 \( = Match a start parentheses
3277 (?: = Start another non-capturing groups
3278 [^)(]+ = Match anything that isn't a parentheses
3279 | = OR
3280 \( = Match a start parentheses
3281 [^)(]* = Match anything that isn't a parentheses
3282 \) = Match a end parentheses
3283 ) = End Group
3284 *\) = Match anything and then a close parens
3285 ) = Close non-capturing group
3286 * = Match anything
3287 ) = Close capturing group
3288 \) = Match a close parens
3289 /gi = Get all matches, not the first. Be case insensitive.
3290 */
3291 var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function (fullMatch, origUrl) {
3292 // strip quotes (if they exist)
3293 var unquotedOrigUrl = origUrl.trim().replace(/^"(.*)"$/, function (o, $1) {
3294 return $1;
3295 }).replace(/^'(.*)'$/, function (o, $1) {
3296 return $1;
3297 });
3298
3299 // already a full url? no change
3300 if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(unquotedOrigUrl)) {
3301 return fullMatch;
3302 }
3303
3304 // convert the url to a full url
3305 var newUrl;
3306
3307 if (unquotedOrigUrl.indexOf("//") === 0) {
3308 //TODO: should we add protocol?
3309 newUrl = unquotedOrigUrl;
3310 } else if (unquotedOrigUrl.indexOf("/") === 0) {
3311 // path should be relative to the base url
3312 newUrl = baseUrl + unquotedOrigUrl; // already starts with '/'
3313 } else {
3314 // path should be relative to current directory
3315 newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './'
3316 }
3317
3318 // send back the fixed url(...)
3319 return "url(" + JSON.stringify(newUrl) + ")";
3320 });
3321
3322 // send back the fixed css
3323 return fixedCss;
3324};
3325
3326/***/ }),
3327/* 45 */
3328/***/ (function(module, exports, __webpack_require__) {
3329
3330"use strict";
3331/* WEBPACK VAR INJECTION */(function(_) {
3332
3333Object.defineProperty(exports, "__esModule", {
3334 value: true
3335});
3336
3337var _row = __webpack_require__(7);
3338
3339var _row2 = _interopRequireDefault(_row);
3340
3341var _col = __webpack_require__(5);
3342
3343var _col2 = _interopRequireDefault(_col);
3344
3345__webpack_require__(8);
3346
3347__webpack_require__(6);
3348
3349var _react = __webpack_require__(1);
3350
3351var _react2 = _interopRequireDefault(_react);
3352
3353var _propTypes = __webpack_require__(0);
3354
3355var _propTypes2 = _interopRequireDefault(_propTypes);
3356
3357function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3358
3359/**
3360 基于 EChart 的常用图表 - 基础
3361 title、description、children 未定义时将不进行显示
3362
3363 @author Witee<github.com/Witee>
3364 @date 2018-07-05
3365*/
3366
3367var Base = function Base(props) {
3368 var style = props.style,
3369 titleStyle = props.titleStyle,
3370 title = props.title,
3371 descriptionStyle = props.descriptionStyle,
3372 description = props.description,
3373 contentStyle = props.contentStyle,
3374 children = props.children;
3375
3376
3377 return _react2.default.createElement(
3378 _row2.default,
3379 { style: style },
3380 !_.isUndefined(title) || !_.isNull(title) ? _react2.default.createElement(
3381 _col2.default,
3382 { className: 'margin-top-bottom-middle', style: titleStyle },
3383 title
3384 ) : null,
3385 !_.isUndefined(description) || !_.isNull(description) ? _react2.default.createElement(
3386 _col2.default,
3387 { className: 'margin-bottom-middle', style: descriptionStyle },
3388 description
3389 ) : null,
3390 !_.isUndefined(children) || !_.isNull(children) ? _react2.default.createElement(
3391 _col2.default,
3392 { style: contentStyle },
3393 children
3394 ) : null
3395 );
3396};
3397
3398Base.propTypes = {
3399 style: _propTypes2.default.object,
3400 titleStyle: _propTypes2.default.object,
3401 title: _propTypes2.default.node,
3402 descriptionStyle: _propTypes2.default.object,
3403 description: _propTypes2.default.node,
3404 contentStyle: _propTypes2.default.object,
3405 children: _propTypes2.default.node
3406};
3407
3408Base.defaultProps = {
3409 style: {},
3410 titleStyle: {},
3411 title: undefined,
3412 descriptionStyle: {},
3413 description: undefined,
3414 contentStyle: {},
3415 children: undefined
3416};
3417
3418exports.default = Base;
3419/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
3420
3421/***/ }),
3422/* 46 */
3423/***/ (function(module, exports, __webpack_require__) {
3424
3425"use strict";
3426/* WEBPACK VAR INJECTION */(function(_, moment) {
3427
3428Object.defineProperty(exports, "__esModule", {
3429 value: true
3430});
3431
3432var _row = __webpack_require__(7);
3433
3434var _row2 = _interopRequireDefault(_row);
3435
3436var _col = __webpack_require__(5);
3437
3438var _col2 = _interopRequireDefault(_col);
3439
3440var _inputNumber = __webpack_require__(65);
3441
3442var _inputNumber2 = _interopRequireDefault(_inputNumber);
3443
3444var _checkbox = __webpack_require__(35);
3445
3446var _checkbox2 = _interopRequireDefault(_checkbox);
3447
3448var _input = __webpack_require__(9);
3449
3450var _input2 = _interopRequireDefault(_input);
3451
3452var _popover = __webpack_require__(37);
3453
3454var _popover2 = _interopRequireDefault(_popover);
3455
3456var _tooltip = __webpack_require__(26);
3457
3458var _tooltip2 = _interopRequireDefault(_tooltip);
3459
3460var _icon = __webpack_require__(24);
3461
3462var _icon2 = _interopRequireDefault(_icon);
3463
3464var _form = __webpack_require__(3);
3465
3466var _form2 = _interopRequireDefault(_form);
3467
3468var _radio = __webpack_require__(11);
3469
3470var _radio2 = _interopRequireDefault(_radio);
3471
3472var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
3473
3474var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3475
3476__webpack_require__(8);
3477
3478__webpack_require__(6);
3479
3480__webpack_require__(66);
3481
3482__webpack_require__(36);
3483
3484__webpack_require__(10);
3485
3486__webpack_require__(38);
3487
3488__webpack_require__(27);
3489
3490__webpack_require__(25);
3491
3492__webpack_require__(4);
3493
3494__webpack_require__(12);
3495
3496var _react = __webpack_require__(1);
3497
3498var _react2 = _interopRequireDefault(_react);
3499
3500var _propTypes = __webpack_require__(0);
3501
3502var _propTypes2 = _interopRequireDefault(_propTypes);
3503
3504var _echartsForReact = __webpack_require__(13);
3505
3506var _echartsForReact2 = _interopRequireDefault(_echartsForReact);
3507
3508var _reactColor = __webpack_require__(39);
3509
3510var _table = __webpack_require__(20);
3511
3512var _table2 = _interopRequireDefault(_table);
3513
3514var _Placeholder = __webpack_require__(30);
3515
3516var _Placeholder2 = _interopRequireDefault(_Placeholder);
3517
3518var _DataEditor = __webpack_require__(28);
3519
3520var _DataEditor2 = _interopRequireDefault(_DataEditor);
3521
3522var _images = __webpack_require__(50);
3523
3524var _images2 = _interopRequireDefault(_images);
3525
3526__webpack_require__(62);
3527
3528function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3529
3530function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
3531
3532function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3533
3534function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
3535
3536function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
3537
3538/**
3539 EchartsEditor 是可编辑 echarts 图表配置的组件
3540 左侧编辑,右上侧显示,右下侧可以使用表格、文本方式直接编辑数据
3541
3542 参数 dataSource 的第一列将作为 X 或 Y 轴的数据源;第一行为表头;
3543 至少需要 3 列数据,一般为 日期、规则名称、平台、声量
3544
3545 @author Witee<github.com/Witee>
3546 @date 2018-07-19
3547*/
3548
3549var colors = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'];
3550
3551var EchartsEditor = function (_React$Component) {
3552 _inherits(EchartsEditor, _React$Component);
3553
3554 /**
3555 注意: 目前可配置项有 18 项,如果有变化,需要修改
3556 constructor componentWillReceiveProps handleConfigChange
3557 */
3558 function EchartsEditor(props) {
3559 _classCallCheck(this, EchartsEditor);
3560
3561 var _this = _possibleConstructorReturn(this, (EchartsEditor.__proto__ || Object.getPrototypeOf(EchartsEditor)).call(this, props));
3562
3563 _initialiseProps.call(_this);
3564
3565 var title = props.title,
3566 subtitle = props.subtitle,
3567 titlePosition = props.titlePosition,
3568 legendPosition = props.legendPosition,
3569 xAxisLabel = props.xAxisLabel,
3570 xAxisName = props.xAxisName,
3571 yAxisLabel = props.yAxisLabel,
3572 yAxisName = props.yAxisName,
3573 numbericAxis = props.numbericAxis,
3574 dataSource = props.dataSource,
3575 originData = props.originData,
3576 seriesColumn = props.seriesColumn,
3577 seriesConf = props.seriesConf,
3578 filters = props.filters,
3579 sorter = props.sorter,
3580 dataRange = props.dataRange,
3581 lastNDays = props.lastNDays,
3582 backgroundColor = props.backgroundColor,
3583 chartHeight = props.chartHeight,
3584 displaySaveButton = props.displaySaveButton;
3585 /**
3586 至少需要 3 列数据才是合法的
3587 如果只有 0、1、2 列,则不生成图,不合法;
3588 如果大于 2 列,则第 1 列为X轴标签,第 2 列为系列,最后一列为Y轴标签;
3589 */
3590
3591 var header = _.get(dataSource, 0, []); // 表头
3592 var xAxisLabelTmp = null;
3593 var yAxisLabelTmp = null;
3594 var seriesColumnTmp = null;
3595 var seriesConfTmp = null;
3596
3597 /**
3598 处理不合法字符,将无效字符改为 -
3599 */
3600 var fixedData = _table2.default.fixData(dataSource);
3601 var fixedOriginData = _table2.default.fixData(originData);
3602
3603 if (header.length > 2) {
3604 xAxisLabelTmp = _.isNull(xAxisLabel) ? _.get(header, 0, null) : xAxisLabel; // xAxisLabel 为空则使用默认
3605 yAxisLabelTmp = _.isNull(yAxisLabel) ? _.get(header, header.length - 1, null) : yAxisLabel;
3606 seriesColumnTmp = seriesColumn;
3607 if (_.isNull(seriesColumn)) {
3608 // 如果 seriesColumn 为 null,则设置默认值
3609 seriesColumnTmp = _.get(header, 1, null);
3610 }
3611
3612 /**
3613 dataSource 为空列表时同样不生成系列
3614 如果设置了系列的过滤,则使用
3615 */
3616 var legends = _this.getLegend(dataSource, seriesColumnTmp, filters);
3617
3618 seriesConfTmp = seriesConf;
3619 if (_.isEmpty(seriesConf)) {
3620 // 如果 seriesConf 为空,则设置默认值
3621 _.map(legends, function (l) {
3622 _.set(seriesConfTmp, [l, 'type'], 'line');
3623 _.set(seriesConfTmp, [l, 'color'], 'auto');
3624 _.set(seriesConfTmp, [l, 'colorValue'], _.get(colors, _.random(0, colors.length), '#749f83'));
3625 });
3626 }
3627 }
3628
3629 _this.state = {
3630 title: title,
3631 subtitle: subtitle,
3632 titlePosition: titlePosition,
3633 legendPosition: legendPosition,
3634 xAxisLabel: xAxisLabelTmp,
3635 xAxisName: xAxisName,
3636 yAxisLabel: yAxisLabelTmp,
3637 yAxisName: yAxisName,
3638 numbericAxis: numbericAxis,
3639 dataSource: fixedData,
3640 originData: fixedOriginData,
3641 seriesColumn: seriesColumnTmp, // 生成 series 指定的列,不生成系列,值为 null
3642 seriesConf: seriesConfTmp, // 保存了所有系列的配置,更新时需要先读取原值
3643 filters: filters, // DataEditor 中控制过滤条件
3644 sorter: sorter, // DataEditor 中控制排序条件
3645 dataRange: dataRange,
3646 lastNDays: lastNDays,
3647 backgroundColor: backgroundColor,
3648 chartHeight: chartHeight,
3649 displaySaveButton: displaySaveButton
3650 };
3651 return _this;
3652 }
3653
3654 /**
3655 完成加载后回传一次数据,使父层获取初始值
3656 */
3657
3658
3659 _createClass(EchartsEditor, [{
3660 key: 'componentDidMount',
3661 value: function componentDidMount() {
3662 this.handleConfigChange();
3663 }
3664 }, {
3665 key: 'componentWillReceiveProps',
3666 value: function componentWillReceiveProps(nextProps) {
3667 var _props = this.props,
3668 title = _props.title,
3669 subtitle = _props.subtitle,
3670 titlePosition = _props.titlePosition,
3671 legendPosition = _props.legendPosition,
3672 xAxisLabel = _props.xAxisLabel,
3673 xAxisName = _props.xAxisName,
3674 yAxisLabel = _props.yAxisLabel,
3675 yAxisName = _props.yAxisName,
3676 numbericAxis = _props.numbericAxis,
3677 dataSource = _props.dataSource,
3678 originData = _props.originData,
3679 seriesColumn = _props.seriesColumn,
3680 seriesConf = _props.seriesConf,
3681 filters = _props.filters,
3682 sorter = _props.sorter,
3683 dataRange = _props.dataRange,
3684 lastNDays = _props.lastNDays,
3685 backgroundColor = _props.backgroundColor,
3686 chartHeight = _props.chartHeight,
3687 displaySaveButton = _props.displaySaveButton;
3688
3689 var needUpdate = {};
3690
3691 if (!_.isEqual(title, nextProps.title)) {
3692 needUpdate.title = nextProps.title;
3693 }
3694 if (!_.isEqual(subtitle, nextProps.subtitle)) {
3695 needUpdate.subtitle = nextProps.subtitle;
3696 }
3697 if (!_.isEqual(titlePosition, nextProps.titlePosition)) {
3698 needUpdate.titlePosition = nextProps.titlePosition;
3699 }
3700 if (!_.isEqual(legendPosition, nextProps.legendPosition)) {
3701 needUpdate.legendPosition = nextProps.legendPosition;
3702 }
3703 if (!_.isEqual(xAxisLabel, nextProps.xAxisLabel)) {
3704 needUpdate.xAxisLabel = nextProps.xAxisLabel;
3705 }
3706 if (!_.isEqual(xAxisName, nextProps.xAxisName)) {
3707 needUpdate.xAxisName = nextProps.xAxisName;
3708 }
3709 if (!_.isEqual(yAxisLabel, nextProps.yAxisLabel)) {
3710 needUpdate.yAxisLabel = nextProps.yAxisLabel;
3711 }
3712 if (!_.isEqual(yAxisName, nextProps.yAxisName)) {
3713 needUpdate.yAxisName = nextProps.yAxisName;
3714 }
3715 if (!_.isEqual(numbericAxis, nextProps.numbericAxis)) {
3716 needUpdate.numbericAxis = nextProps.numbericAxis;
3717 }
3718 if (!_.isEqual(dataSource, nextProps.dataSource)) {
3719 needUpdate.dataSource = nextProps.dataSource;
3720 }
3721 if (!_.isEqual(originData, nextProps.originData)) {
3722 needUpdate.originData = nextProps.originData;
3723 }
3724 if (!_.isEqual(seriesColumn, nextProps.seriesColumn)) {
3725 needUpdate.seriesColumn = nextProps.seriesColumn;
3726 }
3727 if (!_.isEqual(seriesConf, nextProps.seriesConf)) {
3728 needUpdate.seriesConf = nextProps.seriesConf;
3729 }
3730 if (!_.isEqual(filters, nextProps.filters)) {
3731 needUpdate.filters = nextProps.filters;
3732 }
3733 if (!_.isEqual(sorter, nextProps.sorter)) {
3734 needUpdate.sorter = nextProps.sorter;
3735 }
3736 if (!_.isEqual(dataRange, nextProps.dataRange)) {
3737 needUpdate.dataRange = nextProps.dataRange;
3738 }
3739 if (!_.isEqual(lastNDays, nextProps.lastNDays)) {
3740 needUpdate.lastNDays = nextProps.lastNDays;
3741 }
3742 if (!_.isEqual(backgroundColor, nextProps.backgroundColor)) {
3743 needUpdate.backgroundColor = nextProps.backgroundColor;
3744 }
3745 if (!_.isEqual(chartHeight, nextProps.chartHeight)) {
3746 needUpdate.chartHeight = nextProps.chartHeight;
3747 }
3748 if (!_.isEqual(displaySaveButton, nextProps.displaySaveButton)) {
3749 needUpdate.displaySaveButton = nextProps.displaySaveButton;
3750 }
3751
3752 if (!_.isEmpty(needUpdate)) {
3753 this.setState(needUpdate);
3754 }
3755 }
3756
3757 /**
3758 可以自定义颜色,如果设置了 colorValue 则使用此值作为色值
3759 注意: 这里没有使用 e.target.value 作为 color 的值,是因为选择 custom 再清空 Input 后,
3760 会造成值为 undefined ,所以直接写明了设置为 auto,因为只有两种选择.
3761 */
3762
3763
3764 /**
3765 dataSource 是所有的数据,配置的过程就是只保留已选择的项,如默认 x 轴只保留 日期 列,
3766 然后将保留的配置返回给图表
3767 */
3768
3769
3770 /**
3771 通过系列指定的列获取 legend 列表,如 [微博, 微信]
3772 */
3773
3774
3775 /**
3776 监听数据编辑器变化
3777 */
3778
3779
3780 /**
3781 监听所有配置变化,通过 onChange 返回
3782 注意参数 newConfig 必须是对象
3783 */
3784
3785
3786 /**
3787 修改图表背景颜色
3788 */
3789
3790
3791 /**
3792 图表高度设置
3793 */
3794
3795
3796 /**
3797 是否显示下载按钮
3798 */
3799
3800 }, {
3801 key: 'render',
3802 value: function render() {
3803 var _this2 = this;
3804
3805 var _props2 = this.props,
3806 editable = _props2.editable,
3807 style = _props2.style,
3808 configStyle = _props2.configStyle,
3809 DataEditorParams = _props2.DataEditorParams,
3810 ReactEchartsParams = _props2.ReactEchartsParams;
3811 var _state = this.state,
3812 title = _state.title,
3813 subtitle = _state.subtitle,
3814 titlePosition = _state.titlePosition,
3815 legendPosition = _state.legendPosition,
3816 xAxisLabel = _state.xAxisLabel,
3817 xAxisName = _state.xAxisName,
3818 yAxisLabel = _state.yAxisLabel,
3819 yAxisName = _state.yAxisName,
3820 numbericAxis = _state.numbericAxis,
3821 dataSource = _state.dataSource,
3822 originData = _state.originData,
3823 seriesColumn = _state.seriesColumn,
3824 seriesConf = _state.seriesConf,
3825 filters = _state.filters,
3826 sorter = _state.sorter,
3827 dataRange = _state.dataRange,
3828 lastNDays = _state.lastNDays,
3829 backgroundColor = _state.backgroundColor,
3830 chartHeight = _state.chartHeight,
3831 displaySaveButton = _state.displaySaveButton;
3832
3833 /**
3834 X轴和Y轴的数据源,第一行存储的是名称
3835 */
3836
3837 var firstRow = dataSource.length > 0 ? dataSource[0] : [];
3838 var radioOptions = _.map(firstRow, function (item) {
3839 return _react2.default.createElement(
3840 _radio2.default,
3841 { key: item, value: item },
3842 item
3843 );
3844 });
3845
3846 var formItemLayout = {
3847 labelCol: {
3848 xs: { span: 24 },
3849 sm: { span: 6 }
3850 },
3851 wrapperCol: {
3852 xs: { span: 24 },
3853 sm: { span: 18 }
3854 }
3855 };
3856
3857 /**
3858 x y 轴数值型复选框的功能
3859 */
3860 var XYTypeTooltip = 'x 、y 轴中必须有一条为数值轴,即显示数值的轴。如果为数值轴,则表示 [坐标轴标签] 显示为数字范围,如 1 ~ 100;如果不为数值轴,则原样显示;一般情况下 Y 轴为数值轴';
3861
3862 /**
3863 如果 dataRange 为 lastNDays 则证明需要过滤
3864 过程: 获取最大的日期,然后只保留最大日期及前 lastNDays 的数据
3865 */
3866 var filteredDataSource = dataSource;
3867 if (dataRange === 'lastNDays') {
3868 var header = _.get(dataSource, 0, []);
3869 var body = _.slice(dataSource, 1);
3870 var maxDateObj = _.maxBy(body, function (d) {
3871 return moment(_.get(d, 0, null));
3872 });
3873 var maxDate = _.get(maxDateObj, 0, null);
3874 if (maxDate) {
3875 body = _.filter(body, function (ds) {
3876 return moment(_.get(ds, 0, null)).add(lastNDays, 'days') > moment(maxDate);
3877 });
3878 body.unshift(header);
3879 filteredDataSource = body;
3880 }
3881 }
3882
3883 /**
3884 x y 轴标签列解释
3885 */
3886 var XYLabelTooltip = 'x 、y [坐标轴标签] 的取值列,即每个刻度标签对应所选择列的每个值';
3887 var legends = this.getLegend(filteredDataSource, seriesColumn, filters); // 小于 2 列时 seriesColumn 为null,不生成系列
3888 var seriesItems = _.map(legends, function (legend) {
3889 var conf = _.get(seriesConf, legend);
3890 return _react2.default.createElement(
3891 _form2.default.Item,
3892 _extends({}, formItemLayout, { label: legend, key: legend }),
3893 _react2.default.createElement(_form2.default.Item, formItemLayout),
3894 ' ',
3895 _react2.default.createElement(
3896 _form2.default.Item,
3897 _extends({}, formItemLayout, { label: '\u989C\u8272' }),
3898 _react2.default.createElement(
3899 _radio2.default.Group,
3900 { value: _.get(conf, 'color', 'auto'), onChange: function onChange(e) {
3901 return _this2.onColorChange(e, legend);
3902 } },
3903 _react2.default.createElement(
3904 _radio2.default,
3905 { value: 'auto' },
3906 '\u81EA\u52A8'
3907 ),
3908 _react2.default.createElement(
3909 _radio2.default,
3910 { value: 'custom' },
3911 '\u81EA\u5B9A\u4E49',
3912 _.get(conf, 'color', null) === 'custom' && _react2.default.createElement(_reactColor.TwitterPicker, {
3913 width: '205px',
3914 triangle: 'hide',
3915 color: conf.colorValue,
3916 onChange: function onChange(color) {
3917 return _this2.onColorChange('custom', legend, color.hex);
3918 },
3919 colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8', '#ABB8C3']
3920 })
3921 )
3922 )
3923 ),
3924 _react2.default.createElement(
3925 _form2.default.Item,
3926 _extends({}, formItemLayout, { label: '\u7C7B\u578B' }),
3927 _react2.default.createElement(
3928 _radio2.default.Group,
3929 { value: _.get(conf, 'type', 'line'), onChange: function onChange(e) {
3930 return _this2.onChartTypeChange(e, legend);
3931 } },
3932 _react2.default.createElement(
3933 _radio2.default,
3934 { value: 'line' },
3935 '\u6298\u7EBF\u56FE'
3936 ),
3937 _react2.default.createElement(
3938 _radio2.default,
3939 { value: 'bar' },
3940 '\u67F1\u72B6\u56FE'
3941 )
3942 )
3943 )
3944 );
3945 });
3946 var option = this.getChartOption(filteredDataSource);
3947
3948 return _react2.default.createElement(
3949 _row2.default,
3950 { style: style, gutter: 8 },
3951 _react2.default.createElement(
3952 _col2.default,
3953 { span: editable ? 8 : 0, style: configStyle },
3954 _react2.default.createElement(
3955 _popover2.default,
3956 {
3957 trigger: 'click',
3958 overlayStyle: { width: '50%' },
3959 placement: 'topLeft',
3960 content: _react2.default.createElement('img', { src: _images2.default, alt: '\u5E2E\u52A9\u4FE1\u606F', style: { maxHeight: '100%', maxWidth: '100%' } })
3961 },
3962 _react2.default.createElement(
3963 _tooltip2.default,
3964 { title: '\u70B9\u51FB\u663E\u793A\u5E2E\u52A9\u4FE1\u606F' },
3965 _react2.default.createElement(_icon2.default, { type: 'info-circle-o', style: { cursor: 'pointer', position: 'absolute', top: '0px', left: '0px', zIndex: 1 } })
3966 )
3967 ),
3968 _react2.default.createElement(
3969 _form2.default,
3970 null,
3971 _react2.default.createElement(
3972 _form2.default.Item,
3973 _extends({}, formItemLayout, { label: '\u6807\u9898' }),
3974 _react2.default.createElement(_form2.default.Item, formItemLayout),
3975 ' ',
3976 _react2.default.createElement(
3977 _form2.default.Item,
3978 _extends({}, formItemLayout, { label: '\u4E3B' }),
3979 _react2.default.createElement(_input2.default, { placeholder: '\u56FE\u8868\u6807\u9898', value: title, onChange: this.onTitleChange })
3980 ),
3981 _react2.default.createElement(
3982 _form2.default.Item,
3983 _extends({}, formItemLayout, { label: '\u526F' }),
3984 _react2.default.createElement(_input2.default, { placeholder: '\u56FE\u8868\u526F\u6807\u9898', value: subtitle, onChange: this.onSubtitleChange })
3985 ),
3986 _react2.default.createElement(
3987 _form2.default.Item,
3988 _extends({}, formItemLayout, { label: '\u4F4D\u7F6E' }),
3989 _react2.default.createElement(
3990 _radio2.default.Group,
3991 { value: titlePosition, onChange: this.onTitlePositionChange },
3992 _react2.default.createElement(
3993 _radio2.default,
3994 { value: 'left' },
3995 '\u5DE6'
3996 ),
3997 _react2.default.createElement(
3998 _radio2.default,
3999 { value: 'center' },
4000 '\u4E2D'
4001 ),
4002 _react2.default.createElement(
4003 _radio2.default,
4004 { value: 'right' },
4005 '\u53F3'
4006 )
4007 )
4008 )
4009 ),
4010 _react2.default.createElement(
4011 _form2.default.Item,
4012 _extends({}, formItemLayout, { label: '\u80CC\u666F\u989C\u8272' }),
4013 _react2.default.createElement(_reactColor.TwitterPicker, {
4014 width: '205px',
4015 triangle: 'hide',
4016 color: backgroundColor,
4017 onChange: this.handleBackgroundColorChange,
4018 colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8', '#ABB8C3']
4019 })
4020 ),
4021 _react2.default.createElement(
4022 _form2.default.Item,
4023 _extends({}, formItemLayout, { label: '\u56FE\u8868\u9AD8\u5EA6' }),
4024 _react2.default.createElement(_input2.default, {
4025 size: 'small',
4026 style: { width: '4em' },
4027 defaultValue: chartHeight,
4028 onBlur: this.handleChartHeightChange,
4029 onPressEnter: this.handleChartHeightChange
4030 }),
4031 ' px'
4032 ),
4033 _react2.default.createElement(
4034 _form2.default.Item,
4035 _extends({}, formItemLayout, { label: '\u4FDD\u5B58\u56FE\u7247' }),
4036 _react2.default.createElement(
4037 _checkbox2.default,
4038 { onChange: this.handleSaveButtonCheckboxChange, checked: displaySaveButton },
4039 '\u662F\u5426\u663E\u793A\u4FDD\u5B58\u4E3A\u56FE\u7247\u6309\u94AE'
4040 )
4041 ),
4042 _react2.default.createElement(
4043 _form2.default.Item,
4044 _extends({}, formItemLayout, {
4045 label: _react2.default.createElement(
4046 'span',
4047 null,
4048 _react2.default.createElement(
4049 _tooltip2.default,
4050 { placement: 'topLeft', title: XYTypeTooltip },
4051 '\u6570\u503C\u8F74 ',
4052 _react2.default.createElement(_icon2.default, { type: 'question-circle-o' })
4053 )
4054 )
4055 }),
4056 _react2.default.createElement(
4057 _radio2.default.Group,
4058 { value: numbericAxis, onChange: this.onNumAxisChange },
4059 _react2.default.createElement(
4060 _radio2.default,
4061 { value: 'x' },
4062 'X'
4063 ),
4064 _react2.default.createElement(
4065 _radio2.default,
4066 { value: 'y' },
4067 'Y'
4068 )
4069 )
4070 ),
4071 _react2.default.createElement(
4072 _form2.default.Item,
4073 _extends({}, formItemLayout, {
4074 label: '\u52A8\u6001\u8FC7\u6EE4'
4075 }),
4076 _react2.default.createElement(
4077 _radio2.default.Group,
4078 { value: dataRange, onChange: this.onDataRangeChange },
4079 _react2.default.createElement(
4080 _radio2.default,
4081 { value: 'total' },
4082 '\u4E0D\u8FC7\u6EE4'
4083 ),
4084 _react2.default.createElement(
4085 _radio2.default,
4086 { value: 'lastNDays' },
4087 '\u4FDD\u7559\u6700\u540E ',
4088 _react2.default.createElement(_inputNumber2.default, {
4089 size: 'small',
4090 min: 1,
4091 max: 99,
4092 style: { width: '4em' },
4093 value: lastNDays,
4094 onChange: this.onLastNDaysChange
4095 }),
4096 ' \u5929\u6570\u636E'
4097 )
4098 )
4099 ),
4100 _react2.default.createElement(
4101 _form2.default.Item,
4102 _extends({}, formItemLayout, { label: 'X\u8F74' }),
4103 _react2.default.createElement(_form2.default.Item, formItemLayout),
4104 ' ',
4105 _react2.default.createElement(
4106 _form2.default.Item,
4107 _extends({}, formItemLayout, { label: '\u540D\u79F0' }),
4108 _react2.default.createElement(_input2.default, { value: xAxisName, onChange: this.onXAxisNameChange })
4109 ),
4110 _react2.default.createElement(
4111 _form2.default.Item,
4112 _extends({}, formItemLayout, {
4113 label: _react2.default.createElement(
4114 'span',
4115 null,
4116 _react2.default.createElement(
4117 _tooltip2.default,
4118 { placement: 'topLeft', title: XYLabelTooltip },
4119 '\u53D6\u503C ',
4120 _react2.default.createElement(_icon2.default, { type: 'question-circle-o' })
4121 )
4122 )
4123 }),
4124 _react2.default.createElement(
4125 _radio2.default.Group,
4126 { value: xAxisLabel, onChange: this.onXLabelChange },
4127 radioOptions
4128 )
4129 )
4130 ),
4131 _react2.default.createElement(
4132 _form2.default.Item,
4133 _extends({}, formItemLayout, { label: 'Y\u8F74' }),
4134 _react2.default.createElement(_form2.default.Item, formItemLayout),
4135 ' ',
4136 _react2.default.createElement(
4137 _form2.default.Item,
4138 _extends({}, formItemLayout, { label: '\u540D\u79F0' }),
4139 _react2.default.createElement(_input2.default, { value: yAxisName, onChange: this.onYAxisNameChange })
4140 ),
4141 _react2.default.createElement(
4142 _form2.default.Item,
4143 _extends({}, formItemLayout, {
4144 label: _react2.default.createElement(
4145 'span',
4146 null,
4147 _react2.default.createElement(
4148 _tooltip2.default,
4149 { placement: 'topLeft', title: XYLabelTooltip },
4150 '\u53D6\u503C ',
4151 _react2.default.createElement(_icon2.default, { type: 'question-circle-o' })
4152 )
4153 )
4154 }),
4155 _react2.default.createElement(
4156 _radio2.default.Group,
4157 { value: yAxisLabel, onChange: this.onYLabelChange },
4158 radioOptions
4159 )
4160 )
4161 ),
4162 _react2.default.createElement(
4163 _form2.default.Item,
4164 _extends({}, formItemLayout, { label: '\u7CFB\u5217' }),
4165 _react2.default.createElement(_form2.default.Item, formItemLayout),
4166 ' ',
4167 _react2.default.createElement(
4168 _form2.default.Item,
4169 _extends({}, formItemLayout, { label: '\u53D6\u503C' }),
4170 _react2.default.createElement(
4171 _radio2.default.Group,
4172 { value: seriesColumn, onChange: this.onSeriesChange },
4173 radioOptions
4174 )
4175 ),
4176 _react2.default.createElement(
4177 _form2.default.Item,
4178 _extends({}, formItemLayout, { label: '\u4F4D\u7F6E' }),
4179 _react2.default.createElement(
4180 _radio2.default.Group,
4181 { value: legendPosition, onChange: this.onLegendPositionChange },
4182 _react2.default.createElement(
4183 _radio2.default,
4184 { value: 'left' },
4185 '\u5DE6'
4186 ),
4187 _react2.default.createElement(
4188 _radio2.default,
4189 { value: 'center' },
4190 '\u4E2D'
4191 ),
4192 _react2.default.createElement(
4193 _radio2.default,
4194 { value: 'right' },
4195 '\u53F3'
4196 )
4197 )
4198 ),
4199 seriesItems
4200 )
4201 )
4202 ),
4203 _react2.default.createElement(
4204 _col2.default,
4205 { span: editable ? 16 : 24 },
4206 _.get(filteredDataSource, 0, []).length >= 3 ? _react2.default.createElement(_echartsForReact2.default, _.assign({ option: option }, ReactEchartsParams, { style: { height: chartHeight + 'px' } // 覆盖 ReactEchartsParams 中高度的设置
4207 })) : _react2.default.createElement(_Placeholder2.default, { text: '\u6570\u636E\u4E0D\u5408\u6CD5\uFF0C\u81F3\u5C11\u9700\u8981 3 \u5217\uFF0C\u5982 \u65E5\u671F\u3001\u5E73\u53F0\u3001\u58F0\u91CF' }),
4208 editable && _react2.default.createElement(_DataEditor2.default, _.assign({
4209 dataSource: filteredDataSource,
4210 originData: originData,
4211 onChange: this.dataEditorOnChange,
4212 tableParams: { size: 'small' },
4213 tableFilters: filters,
4214 tableSorter: sorter
4215 }, DataEditorParams))
4216 )
4217 );
4218 }
4219 }]);
4220
4221 return EchartsEditor;
4222}(_react2.default.Component);
4223
4224var _initialiseProps = function _initialiseProps() {
4225 var _this3 = this;
4226
4227 this.onTitleChange = function (e) {
4228 _this3.setState({ title: e.target.value });
4229 _this3.handleConfigChange({ title: e.target.value });
4230 };
4231
4232 this.onSubtitleChange = function (e) {
4233 _this3.setState({ subtitle: e.target.value });
4234 _this3.handleConfigChange({ subtitle: e.target.value });
4235 };
4236
4237 this.onTitlePositionChange = function (e) {
4238 _this3.setState({ titlePosition: e.target.value });
4239 _this3.handleConfigChange({ titlePosition: e.target.value });
4240 };
4241
4242 this.onLegendPositionChange = function (e) {
4243 _this3.setState({ legendPosition: e.target.value });
4244 _this3.handleConfigChange({ legendPosition: e.target.value });
4245 };
4246
4247 this.onColorChange = function (e, legend) {
4248 var colorValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
4249
4250 var colorType = _.get(e, ['target', 'value'], 'auto');
4251 if (e === 'custom') {
4252 colorType = 'custom';
4253 }
4254 var seriesConf = _this3.state.seriesConf;
4255
4256 var tmpSeriesConf = _.cloneDeep(seriesConf);
4257 if (colorType === 'custom') {
4258 _.set(tmpSeriesConf, [legend, 'color'], 'custom');
4259 _.set(tmpSeriesConf, [legend, 'colorValue'], colorValue);
4260 } else {
4261 _.set(tmpSeriesConf, [legend, 'color'], 'auto');
4262 }
4263 _this3.setState({ seriesConf: tmpSeriesConf });
4264 _this3.handleConfigChange({ seriesConf: tmpSeriesConf });
4265 };
4266
4267 this.onChartTypeChange = function (e, legend) {
4268 var seriesConf = _this3.state.seriesConf;
4269
4270 var tmpSeriesConf = _.cloneDeep(seriesConf);
4271 _.set(tmpSeriesConf, [legend, 'type'], e.target.value);
4272
4273 _this3.setState({ seriesConf: tmpSeriesConf });
4274 _this3.handleConfigChange({ seriesConf: tmpSeriesConf });
4275 };
4276
4277 this.onXLabelChange = function (e) {
4278 _this3.setState({ xAxisLabel: e.target.value });
4279 _this3.handleConfigChange({ xAxisLabel: e.target.value });
4280 };
4281
4282 this.onXAxisNameChange = function (e) {
4283 _this3.setState({ xAxisName: e.target.value });
4284 _this3.handleConfigChange({ xAxisName: e.target.value });
4285 };
4286
4287 this.onYLabelChange = function (e) {
4288 _this3.setState({ yAxisLabel: e.target.value });
4289 _this3.handleConfigChange({ yAxisLabel: e.target.value });
4290 };
4291
4292 this.onYAxisNameChange = function (e) {
4293 _this3.setState({ yAxisName: e.target.value });
4294 _this3.handleConfigChange({ yAxisName: e.target.value });
4295 };
4296
4297 this.onNumAxisChange = function (e) {
4298 _this3.setState({ numbericAxis: e.target.value });
4299 _this3.handleConfigChange({ numbericAxis: e.target.value });
4300 };
4301
4302 this.onDataRangeChange = function (e) {
4303 var dataRange = _.get(e, 'target.value', 'total');
4304 _this3.setState({ dataRange: dataRange });
4305 _this3.handleConfigChange({ dataRange: dataRange });
4306 };
4307
4308 this.onLastNDaysChange = function (lastNDays) {
4309 _this3.setState({ lastNDays: lastNDays });
4310 _this3.handleConfigChange({ lastNDays: lastNDays });
4311 };
4312
4313 this.onSeriesChange = function (e) {
4314 var _state2 = _this3.state,
4315 dataSource = _state2.dataSource,
4316 filters = _state2.filters;
4317
4318 var legends = _this3.getLegend(dataSource, e.target.value, filters);
4319 var seriesConf = {};
4320 _.map(legends, function (l) {
4321 _.set(seriesConf, [l, 'type'], 'line');
4322 _.set(seriesConf, [l, 'color'], 'auto');
4323 _.set(seriesConf, [l, 'colorValue'], _.get(colors, _.random(0, colors.length), '#749f83'));
4324 });
4325 _this3.setState({ seriesColumn: e.target.value, seriesConf: seriesConf });
4326 _this3.handleConfigChange({ seriesColumn: e.target.value, seriesConf: seriesConf });
4327 };
4328
4329 this.getChartOption = function (dataSource) {
4330 var _state3 = _this3.state,
4331 title = _state3.title,
4332 subtitle = _state3.subtitle,
4333 titlePosition = _state3.titlePosition,
4334 legendPosition = _state3.legendPosition,
4335 xAxisLabel = _state3.xAxisLabel,
4336 xAxisName = _state3.xAxisName,
4337 yAxisLabel = _state3.yAxisLabel,
4338 numbericAxis = _state3.numbericAxis,
4339 yAxisName = _state3.yAxisName,
4340 seriesColumn = _state3.seriesColumn,
4341 seriesConf = _state3.seriesConf,
4342 filters = _state3.filters,
4343 sorter = _state3.sorter,
4344 backgroundColor = _state3.backgroundColor,
4345 displaySaveButton = _state3.displaySaveButton;
4346
4347 /**
4348 处理默认参数中的过滤、排序
4349 */
4350
4351 var filteredAndsortedDataSource = _table2.default.filterAndSorter(dataSource, filters, sorter);
4352
4353 var xAxis = { type: numbericAxis === 'x' ? 'value' : 'category', name: xAxisName };
4354 var yAxis = { type: numbericAxis === 'y' ? 'value' : 'category', name: yAxisName };
4355
4356 var legends = _this3.getLegend(filteredAndsortedDataSource, seriesColumn, filters); // 小于 2 列时 seriesColumn 为null,不生成系列
4357
4358 var series = _.map(legends, function (l) {
4359 var conf = _.get(seriesConf, l);
4360 return {
4361 name: l,
4362 type: _.get(conf, 'type', 'line'),
4363 itemStyle: { color: _.get(conf, 'color', 'auto') === 'custom' ? conf.colorValue : undefined },
4364 encode: { x: numbericAxis === 'x' ? l : xAxisLabel, y: numbericAxis === 'y' ? l : yAxisLabel }
4365 };
4366 });
4367
4368 /**
4369 图例的默认值,用于单一系列时使用
4370 */
4371 var legendConf = { data: legends, top: '10%', left: legendPosition };
4372 /**
4373 数据的默认值,用于单一系列时使用
4374 */
4375 var newDatasetSource = filteredAndsortedDataSource;
4376
4377 /**
4378 多系列的处理方法
4379 1. 根据页面上选择的 [系列]-[取值] 指定的列,获取所有 图例(legends)
4380 2. 将原始数据根据图例重新组合成多系列的格式(需要理解 echarts 默认使用 column 作为维度,
4381 所以要将 非数值轴 的 label 与 legends 作为表头),如:
4382 原数据 日期 平台 声量
4383 2018-7-1 微博 1024
4384 2018-7-1 微信 2048
4385 转换后 日期 微信 微博
4386 2018-7-1 1024 2048
4387 注意 声量 直接写在了 微信 下面,使 微信 作为了 echarts 使用的维度
4388 注意: x 、 y 轴可以互换,所以使用 数值轴(numAxis)(默认y轴) 和 非数值轴(unnumAxis)(默认x轴) 作为区分
4389 指定了 seriesColumn 时,则需要使用定义的列生成多系列及图例(legend)
4390 */
4391 if (!_.isNull(seriesColumn)) {
4392 newDatasetSource = [];
4393
4394 var header = _.get(filteredAndsortedDataSource, 0, []);
4395 var body = _.slice(filteredAndsortedDataSource, 1);
4396
4397 var unnumbericAxisLabel = numbericAxis === 'x' ? yAxisLabel : xAxisLabel; // 如 日期
4398 var numbericAxisLabel = numbericAxis === 'x' ? xAxisLabel : yAxisLabel; // 如 声量
4399
4400 /**
4401 找到选择的 numAxis、unnumAxis 的 label 对应的 index,再找到 series 的 index,
4402 这样就可以从原始数据中根据 index 获取到对应的值
4403 */
4404 var unnumAxisIndex = _.findIndex(header, function (d) {
4405 return d === unnumbericAxisLabel;
4406 }); // 如 日期 的 index
4407 var numAxisIndex = _.findIndex(header, function (d) {
4408 return d === numbericAxisLabel;
4409 }); // 如 声量 的 index
4410 var seriesIndex = _.findIndex(header, function (d) {
4411 return d === seriesColumn;
4412 });
4413
4414 /**
4415 先把 unnumbericAxisLabel 填写到 newDatasetSourceHeader ,
4416 再把 legends 的名称追加到 newDatasetSourceHeader 中,生成新的表头
4417 因为在 series 中使用了 encode 映射,所以顺序不是问题
4418 */
4419 var newDatasetSourceHeader = [unnumbericAxisLabel];
4420 newDatasetSourceHeader = newDatasetSourceHeader.concat(legends); // 新的表头
4421
4422 var tmpData = {};
4423 _.forEach(body, function (b) {
4424 // 找到 legend 的 index,即 微博 、 微信 在 legends ([微博, 微信])中的位置,以此顺序保存数据
4425 var legendIndex = _.findIndex(legends, function (l) {
4426 return l === b[seriesIndex];
4427 });
4428 // 保存数据,格式: {'2017-7-1': [1024, 2048], ...}
4429 _.set(tmpData, [b[unnumAxisIndex], legendIndex], _.get(b, numAxisIndex, null));
4430 });
4431
4432 _.forEach(tmpData, function (value, key) {
4433 newDatasetSource.push([key].concat(_toConsumableArray(value)));
4434 });
4435 newDatasetSource.unshift(newDatasetSourceHeader);
4436 }
4437
4438 var saveAsImage = { pixelRatio: 10 };
4439 if (!displaySaveButton) {
4440 saveAsImage = undefined;
4441 }
4442
4443 var chartOption = {
4444 backgroundColor: backgroundColor,
4445 legend: legendConf,
4446 title: { text: title, subtext: subtitle, left: titlePosition },
4447 grid: { containLabel: true, top: '25%' },
4448 tooltip: {
4449 trigger: 'axis',
4450 axisPointer: { type: 'shadow' }
4451 },
4452 dataset: { source: newDatasetSource },
4453 toolbox: { feature: { saveAsImage: saveAsImage }, top: '10%' },
4454 xAxis: xAxis,
4455 yAxis: yAxis,
4456 series: series
4457 };
4458
4459 return chartOption;
4460 };
4461
4462 this.getLegend = function () {
4463 var dataSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
4464 var column = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
4465 var filters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
4466
4467 // column 不存在时不生成系列
4468 if (_.isNull(column)) {
4469 return [];
4470 }
4471
4472 /**
4473 如果设置了 filter 则系列需要使用此进行过滤
4474 */
4475 var filteredColumnContent = _.get(filters, column, null);
4476 if (_.isArray(filteredColumnContent) && filteredColumnContent.length > 0) {
4477 return filteredColumnContent;
4478 }
4479 var body = _.slice(dataSource, 1);
4480 var header = _.get(dataSource, 0, []);
4481 var seriesIndex = _.findIndex(header, function (d) {
4482 return d === column;
4483 });
4484 var grouppedBody = _.groupBy(body, seriesIndex);
4485 var keys = _.keys(grouppedBody);
4486 return keys;
4487 };
4488
4489 this.dataEditorOnChange = function (data, filters, sorter, reload) {
4490 /**
4491 获取在操作 Table 时的过滤、排序条件,方便保存
4492 reload 用来判断是否将条件清空,为 true 时表示 "还原"
4493 */
4494 if (reload) {
4495 _this3.setState({ filters: {}, sorter: {}, dataRange: 'total' });
4496 }
4497 _this3.setState({ dataSource: data });
4498 _this3.handleConfigChange({ dataSource: data, filters: filters, sorter: sorter });
4499 };
4500
4501 this.handleConfigChange = function () {
4502 var newConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4503 var onChange = _this3.props.onChange;
4504
4505 if (_.isFunction(onChange)) {
4506 var _state4 = _this3.state,
4507 title = _state4.title,
4508 subtitle = _state4.subtitle,
4509 titlePosition = _state4.titlePosition,
4510 legendPosition = _state4.legendPosition,
4511 xAxisLabel = _state4.xAxisLabel,
4512 xAxisName = _state4.xAxisName,
4513 yAxisLabel = _state4.yAxisLabel,
4514 yAxisName = _state4.yAxisName,
4515 numbericAxis = _state4.numbericAxis,
4516 dataSource = _state4.dataSource,
4517 seriesColumn = _state4.seriesColumn,
4518 seriesConf = _state4.seriesConf,
4519 filters = _state4.filters,
4520 sorter = _state4.sorter,
4521 dataRange = _state4.dataRange,
4522 lastNDays = _state4.lastNDays,
4523 backgroundColor = _state4.backgroundColor,
4524 chartHeight = _state4.chartHeight,
4525 displaySaveButton = _state4.displaySaveButton;
4526
4527 var oldConfigs = {
4528 title: title,
4529 subtitle: subtitle,
4530 titlePosition: titlePosition,
4531 legendPosition: legendPosition,
4532 xAxisLabel: xAxisLabel,
4533 xAxisName: xAxisName,
4534 yAxisLabel: yAxisLabel,
4535 yAxisName: yAxisName,
4536 numbericAxis: numbericAxis,
4537 dataSource: dataSource,
4538 seriesColumn: seriesColumn,
4539 seriesConf: seriesConf,
4540 filters: filters,
4541 sorter: sorter,
4542 dataRange: dataRange,
4543 lastNDays: lastNDays,
4544 backgroundColor: backgroundColor,
4545 chartHeight: chartHeight,
4546 displaySaveButton: displaySaveButton
4547 };
4548
4549 var finalConfigs = _.assign(oldConfigs, newConfig);
4550
4551 // 回传
4552 onChange(finalConfigs);
4553 }
4554 };
4555
4556 this.handleBackgroundColorChange = function (_ref) {
4557 var hex = _ref.hex;
4558
4559 _this3.setState({ backgroundColor: hex });
4560 _this3.handleConfigChange({ backgroundColor: hex });
4561 };
4562
4563 this.handleChartHeightChange = function (_ref2) {
4564 var value = _ref2.target.value;
4565
4566 var numberReg = /^\d+$/;
4567 if (numberReg.test(value)) {
4568 _this3.setState({ chartHeight: value });
4569 _this3.handleConfigChange({ chartHeight: value });
4570 }
4571 };
4572
4573 this.handleSaveButtonCheckboxChange = function (_ref3) {
4574 var checked = _ref3.target.checked;
4575
4576 _this3.setState({ displaySaveButton: checked });
4577 _this3.handleConfigChange({ displaySaveButton: checked });
4578 };
4579};
4580
4581EchartsEditor.propTypes = {
4582 editable: _propTypes2.default.bool,
4583 onChange: _propTypes2.default.func,
4584 style: _propTypes2.default.object,
4585 configStyle: _propTypes2.default.object,
4586 dataSource: _propTypes2.default.arrayOf(_propTypes2.default.array),
4587 originData: _propTypes2.default.arrayOf(_propTypes2.default.array),
4588 ReactEchartsParams: _propTypes2.default.object,
4589 DataEditorParams: _propTypes2.default.object,
4590 title: _propTypes2.default.string,
4591 subtitle: _propTypes2.default.string,
4592 titlePosition: _propTypes2.default.string,
4593 legendPosition: _propTypes2.default.string,
4594 xAxisLabel: _propTypes2.default.string,
4595 xAxisName: _propTypes2.default.string,
4596 yAxisLabel: _propTypes2.default.string,
4597 yAxisName: _propTypes2.default.string,
4598 numbericAxis: _propTypes2.default.string,
4599 seriesColumn: _propTypes2.default.string,
4600 seriesConf: _propTypes2.default.object,
4601 filters: _propTypes2.default.object,
4602 sorter: _propTypes2.default.object,
4603 dataRange: _propTypes2.default.string,
4604 lastNDays: _propTypes2.default.number,
4605 backgroundColor: _propTypes2.default.string,
4606 chartHeight: _propTypes2.default.number,
4607 displaySaveButton: _propTypes2.default.bool
4608};
4609
4610EchartsEditor.defaultProps = {
4611 editable: true,
4612 onChange: undefined,
4613 style: {},
4614 configStyle: { height: '40rem', overflow: 'scroll', padding: '0 0.8rem 0 0', backgroundColor: '#f7f7f7', borderRadius: '4px' },
4615 dataSource: [[]],
4616 originData: undefined,
4617 ReactEchartsParams: { notMerge: true, style: { height: '35em' } },
4618 DataEditorParams: {},
4619 title: '图表标题',
4620 subtitle: '副标题',
4621 titlePosition: 'left',
4622 legendPosition: 'center',
4623 xAxisLabel: null,
4624 xAxisName: 'X轴',
4625 yAxisLabel: null,
4626 yAxisName: 'Y轴',
4627 numbericAxis: 'y',
4628 seriesColumn: null,
4629 seriesConf: {},
4630 filters: {},
4631 sorter: {},
4632 dataRange: 'total',
4633 lastNDays: 7,
4634 backgroundColor: '#FFFFFF',
4635 chartHeight: 420,
4636 displaySaveButton: true
4637};
4638
4639exports.default = EchartsEditor;
4640/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2), __webpack_require__(73)))
4641
4642/***/ }),
4643/* 47 */
4644/***/ (function(module, exports, __webpack_require__) {
4645
4646"use strict";
4647/* WEBPACK VAR INJECTION */(function(_) {
4648
4649Object.defineProperty(exports, "__esModule", {
4650 value: true
4651});
4652
4653var _row = __webpack_require__(7);
4654
4655var _row2 = _interopRequireDefault(_row);
4656
4657var _col = __webpack_require__(5);
4658
4659var _col2 = _interopRequireDefault(_col);
4660
4661var _form = __webpack_require__(3);
4662
4663var _form2 = _interopRequireDefault(_form);
4664
4665var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4666
4667__webpack_require__(8);
4668
4669__webpack_require__(6);
4670
4671__webpack_require__(4);
4672
4673var _react = __webpack_require__(1);
4674
4675var _react2 = _interopRequireDefault(_react);
4676
4677var _propTypes = __webpack_require__(0);
4678
4679var _propTypes2 = _interopRequireDefault(_propTypes);
4680
4681var _echartsForReact = __webpack_require__(13);
4682
4683var _echartsForReact2 = _interopRequireDefault(_echartsForReact);
4684
4685var _Title = __webpack_require__(17);
4686
4687var _Title2 = _interopRequireDefault(_Title);
4688
4689var _Theme = __webpack_require__(16);
4690
4691var _Theme2 = _interopRequireDefault(_Theme);
4692
4693var _Height = __webpack_require__(15);
4694
4695var _Height2 = _interopRequireDefault(_Height);
4696
4697var _Toolbox = __webpack_require__(18);
4698
4699var _Toolbox2 = _interopRequireDefault(_Toolbox);
4700
4701var _Legend = __webpack_require__(32);
4702
4703var _Legend2 = _interopRequireDefault(_Legend);
4704
4705var _Pie = __webpack_require__(33);
4706
4707var _Pie2 = _interopRequireDefault(_Pie);
4708
4709var _Baseline = __webpack_require__(31);
4710
4711var _Baseline2 = _interopRequireDefault(_Baseline);
4712
4713function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4714
4715function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4716
4717function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
4718
4719function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
4720
4721var colors = ['#2874D7', '#70D12D', '#ECB513', '#1BCFE7', '#B8C0F2', '#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80', '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa', '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050', '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089'];
4722
4723/**
4724 echarts 饼图配置器 - 使用图形化的方式配置 echarts4.x 图表
4725
4726 - 通用说明
4727 - 除 theme、chartHeight 外其它参数均为 echarts4.x 的标准参数,简称[标准参数]
4728 - [标准参数]只能是 echarts4.x 的顶级参数
4729 即: http://www.echartsjs.com/option.html#title 中 .setOption() 中直接子参数
4730 - 每一个[标准参数]都返回其所有的配置,如 title = {text: '', ....}
4731 - 数据需要在本组件外处理完成,并通过[标准参数]中的 dataset 传递,只支持以下一种格式
4732 即 (第一列为 dimensions(维度名) ):
4733 dataset = {
4734 source: [
4735 ['浏览方式', '次数'],
4736 ['直接访问', 335],
4737 ['邮件营销', 310],
4738 ['联盟广告', 234],
4739 ['视频广告', 135],
4740 ['搜索引擎', 1548],
4741 ]
4742 }
4743
4744
4745 @author Witee<github.com/Witee>
4746 @date 2018-12-05
4747 @update 2018-12-07
4748*/
4749
4750var EchartsPie = function (_React$Component) {
4751 _inherits(EchartsPie, _React$Component);
4752
4753 function EchartsPie(props) {
4754 _classCallCheck(this, EchartsPie);
4755
4756 var _this = _possibleConstructorReturn(this, (EchartsPie.__proto__ || Object.getPrototypeOf(EchartsPie)).call(this, props));
4757
4758 _initialiseProps.call(_this);
4759
4760 var theme = props.theme,
4761 chartHeight = props.chartHeight,
4762 title = props.title,
4763 backgroundColor = props.backgroundColor,
4764 toolbox = props.toolbox,
4765 legend = props.legend,
4766 series = props.series,
4767 dataset = props.dataset;
4768
4769
4770 _this.state = {
4771 theme: theme,
4772 chartHeight: chartHeight,
4773 // [标准参数]
4774 title: title,
4775 backgroundColor: backgroundColor,
4776 toolbox: toolbox,
4777 legend: legend,
4778 series: series,
4779 dataset: dataset
4780 };
4781 return _this;
4782 }
4783
4784 /**
4785 完成加载后回传一次数据,使父层获取初始值
4786 */
4787
4788
4789 _createClass(EchartsPie, [{
4790 key: 'componentDidMount',
4791 value: function componentDidMount() {
4792 this.handleConfigChange();
4793 }
4794 }, {
4795 key: 'componentWillReceiveProps',
4796 value: function componentWillReceiveProps(nextProps) {
4797 var _props = this.props,
4798 title = _props.title,
4799 theme = _props.theme,
4800 backgroundColor = _props.backgroundColor,
4801 chartHeight = _props.chartHeight,
4802 toolbox = _props.toolbox,
4803 legend = _props.legend,
4804 series = _props.series,
4805 dataset = _props.dataset;
4806
4807
4808 var needUpdate = {};
4809
4810 if (!_.isEqual(title, nextProps.title)) {
4811 needUpdate.title = nextProps.title;
4812 }
4813 if (!_.isEqual(theme, nextProps.theme)) {
4814 needUpdate.theme = nextProps.theme;
4815 }
4816 if (!_.isEqual(backgroundColor, nextProps.backgroundColor)) {
4817 needUpdate.backgroundColor = nextProps.backgroundColor;
4818 }
4819 if (!_.isEqual(chartHeight, nextProps.chartHeight)) {
4820 needUpdate.chartHeight = nextProps.chartHeight;
4821 }
4822 if (!_.isEqual(toolbox, nextProps.toolbox)) {
4823 needUpdate.toolbox = nextProps.toolbox;
4824 }
4825 if (!_.isEqual(legend, nextProps.legend)) {
4826 needUpdate.legend = nextProps.legend;
4827 }
4828 if (!_.isEqual(series, nextProps.series)) {
4829 needUpdate.series = nextProps.series;
4830 }
4831 if (!_.isEqual(dataset, nextProps.dataset)) {
4832 needUpdate.dataset = nextProps.dataset;
4833 }
4834
4835 if (!_.isEmpty(needUpdate)) {
4836 this.setState(needUpdate);
4837 }
4838 }
4839
4840 /**
4841 监听所有配置变化,通过 onChange 返回
4842 注意参数 newConfig 必须是对象
4843 */
4844
4845 }, {
4846 key: 'render',
4847 value: function render() {
4848 var _props2 = this.props,
4849 editable = _props2.editable,
4850 style = _props2.style,
4851 configStyle = _props2.configStyle,
4852 colorPickerConfig = _props2.colorPickerConfig;
4853 var _state = this.state,
4854 title = _state.title,
4855 theme = _state.theme,
4856 backgroundColor = _state.backgroundColor,
4857 chartHeight = _state.chartHeight,
4858 toolbox = _state.toolbox,
4859 legend = _state.legend,
4860 series = _state.series;
4861
4862 /**
4863 配置区域的高度跟随图表高度
4864 */
4865
4866 var newConfigHeight = _.get(configStyle, 'height', chartHeight + 'px');
4867 var oldConfigStyle = { height: newConfigHeight, overflow: 'scroll', padding: '0 0.8rem 0 0', backgroundColor: '#f7f7f7', borderRadius: '4px' };
4868 var newConfigStyle = _.assign(oldConfigStyle, configStyle);
4869
4870 return _react2.default.createElement(
4871 _row2.default,
4872 { style: style, gutter: 16 },
4873 editable && _react2.default.createElement(
4874 _col2.default,
4875 { span: editable ? 8 : 0, style: newConfigStyle },
4876 _react2.default.createElement(
4877 _form2.default,
4878 null,
4879 _react2.default.createElement(_Title2.default, {
4880 title: _.cloneDeep(title),
4881 onChange: this.onTitleChange
4882 }),
4883 _react2.default.createElement(_Theme2.default, {
4884 theme: theme,
4885 backgroundColor: backgroundColor,
4886 colorPickerConfig: colorPickerConfig,
4887 onChange: this.onThemeChange
4888 }),
4889 _react2.default.createElement(_Height2.default, {
4890 defaultValue: chartHeight,
4891 onHeightSet: this.onChartHeightChange
4892 }),
4893 _react2.default.createElement(_Toolbox2.default
4894 /**
4895 const { toolbox } = this.state; 是 toolbox 的浅拷贝,对 toolbox 的修改就是对其本身的修改
4896 所以需要创建一个新的对象才能使 equal 对比时出现不相等的情况
4897 */
4898 , { toolbox: _.cloneDeep(toolbox),
4899 onChange: this.onToolboxChange
4900 }),
4901 _react2.default.createElement(_Legend2.default, {
4902 legend: _.cloneDeep(legend),
4903 onChange: this.onLegendChange
4904 }),
4905 _react2.default.createElement(_Pie2.default, {
4906 series: _.cloneDeep(series),
4907 onChange: this.onSeriesChange
4908 })
4909 ),
4910 _react2.default.createElement(_Baseline2.default, null)
4911 ),
4912 _react2.default.createElement(
4913 _col2.default,
4914 { span: editable ? 16 : 24 },
4915 _react2.default.createElement(_echartsForReact2.default, {
4916 option: this.getOption(),
4917 notMerge: false,
4918 lazyUpdate: false,
4919 theme: theme,
4920 style: { height: chartHeight + 'px' }
4921 })
4922 )
4923 );
4924 }
4925 }]);
4926
4927 return EchartsPie;
4928}(_react2.default.Component);
4929
4930var _initialiseProps = function _initialiseProps() {
4931 var _this2 = this;
4932
4933 this.onTitleChange = function (title) {
4934 _this2.setState({ title: title });
4935 _this2.handleConfigChange({ title: title });
4936 };
4937
4938 this.onThemeChange = function (_ref) {
4939 var theme = _ref.theme,
4940 backgroundColor = _ref.backgroundColor;
4941
4942 _this2.setState({ theme: theme, backgroundColor: backgroundColor });
4943 _this2.handleConfigChange({ theme: theme, backgroundColor: backgroundColor });
4944 };
4945
4946 this.onChartHeightChange = function (chartHeight) {
4947 var intChartHeight = _.parseInt(chartHeight);
4948 _this2.setState({ chartHeight: intChartHeight });
4949 _this2.handleConfigChange({ chartHeight: intChartHeight });
4950 };
4951
4952 this.onToolboxChange = function (toolbox) {
4953 _this2.setState({ toolbox: toolbox });
4954 _this2.handleConfigChange({ toolbox: toolbox });
4955 };
4956
4957 this.onLegendChange = function (legend) {
4958 _this2.setState({ legend: legend });
4959 _this2.handleConfigChange({ legend: legend });
4960 };
4961
4962 this.onSeriesChange = function (series) {
4963 _this2.setState({ series: series });
4964 _this2.handleConfigChange({ series: series });
4965 };
4966
4967 this.getOption = function () {
4968 var _state2 = _this2.state,
4969 title = _state2.title,
4970 backgroundColor = _state2.backgroundColor,
4971 toolbox = _state2.toolbox,
4972 legend = _state2.legend,
4973 series = _state2.series,
4974 dataset = _state2.dataset;
4975
4976
4977 return {
4978 color: colors,
4979 backgroundColor: backgroundColor,
4980 title: title,
4981 toolbox: toolbox,
4982 legend: legend,
4983 series: series,
4984 dataset: dataset
4985 };
4986 };
4987
4988 this.handleConfigChange = function () {
4989 var newConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4990 var onChange = _this2.props.onChange;
4991
4992 if (_.isFunction(onChange)) {
4993 var _state3 = _this2.state,
4994 title = _state3.title,
4995 theme = _state3.theme,
4996 backgroundColor = _state3.backgroundColor,
4997 chartHeight = _state3.chartHeight,
4998 toolbox = _state3.toolbox,
4999 legend = _state3.legend,
5000 series = _state3.series,
5001 dataset = _state3.dataset;
5002
5003 var oldConfigs = {
5004 title: title,
5005 theme: theme,
5006 backgroundColor: backgroundColor,
5007 chartHeight: chartHeight,
5008 toolbox: toolbox,
5009 legend: legend,
5010 series: series,
5011 dataset: dataset
5012 };
5013
5014 var finalConfigs = _.assign(oldConfigs, newConfig);
5015
5016 // 回传
5017 onChange(finalConfigs);
5018 }
5019 };
5020};
5021
5022EchartsPie.propTypes = {
5023 editable: _propTypes2.default.bool,
5024 style: _propTypes2.default.object,
5025 configStyle: _propTypes2.default.object,
5026 title: _propTypes2.default.object,
5027 theme: _propTypes2.default.oneOf(['default', 'dark']), // 默认已注册的主题
5028 backgroundColor: _propTypes2.default.string,
5029 colorPickerConfig: _propTypes2.default.object,
5030 chartHeight: _propTypes2.default.number,
5031 toolbox: _propTypes2.default.object,
5032 legend: _propTypes2.default.object,
5033 series: _propTypes2.default.arrayOf(_propTypes2.default.object),
5034 dataset: _propTypes2.default.object,
5035 onChange: _propTypes2.default.func
5036};
5037
5038EchartsPie.defaultProps = {
5039 editable: true,
5040 style: {},
5041 configStyle: {},
5042 title: undefined,
5043 theme: 'default',
5044 backgroundColor: '#FFFFFF',
5045 colorPickerConfig: undefined,
5046 chartHeight: 420,
5047 toolbox: { feature: { saveAsImage: { title: '下载', pixelRatio: 5 } }, top: '10%' },
5048 legend: undefined,
5049 series: [{ type: 'pie' }],
5050 dataset: undefined,
5051 onChange: undefined
5052};
5053
5054exports.default = EchartsPie;
5055/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
5056
5057/***/ }),
5058/* 48 */
5059/***/ (function(module, exports, __webpack_require__) {
5060
5061"use strict";
5062/* WEBPACK VAR INJECTION */(function(_) {
5063
5064Object.defineProperty(exports, "__esModule", {
5065 value: true
5066});
5067
5068var _row = __webpack_require__(7);
5069
5070var _row2 = _interopRequireDefault(_row);
5071
5072var _col = __webpack_require__(5);
5073
5074var _col2 = _interopRequireDefault(_col);
5075
5076var _form = __webpack_require__(3);
5077
5078var _form2 = _interopRequireDefault(_form);
5079
5080var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
5081
5082var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5083
5084__webpack_require__(8);
5085
5086__webpack_require__(6);
5087
5088__webpack_require__(4);
5089
5090var _react = __webpack_require__(1);
5091
5092var _react2 = _interopRequireDefault(_react);
5093
5094var _propTypes = __webpack_require__(0);
5095
5096var _propTypes2 = _interopRequireDefault(_propTypes);
5097
5098var _echartsForReact = __webpack_require__(13);
5099
5100var _echartsForReact2 = _interopRequireDefault(_echartsForReact);
5101
5102__webpack_require__(71);
5103
5104__webpack_require__(72);
5105
5106var _Title = __webpack_require__(17);
5107
5108var _Title2 = _interopRequireDefault(_Title);
5109
5110var _Theme = __webpack_require__(16);
5111
5112var _Theme2 = _interopRequireDefault(_Theme);
5113
5114var _Height = __webpack_require__(15);
5115
5116var _Height2 = _interopRequireDefault(_Height);
5117
5118var _Toolbox = __webpack_require__(18);
5119
5120var _Toolbox2 = _interopRequireDefault(_Toolbox);
5121
5122var _WordCloud = __webpack_require__(34);
5123
5124var _WordCloud2 = _interopRequireDefault(_WordCloud);
5125
5126var _Baseline = __webpack_require__(31);
5127
5128var _Baseline2 = _interopRequireDefault(_Baseline);
5129
5130function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5131
5132function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5133
5134function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
5135
5136function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
5137// import Legend from './configs/Legend';
5138
5139
5140var colors = ['#2874D7', '#70D12D', '#ECB513', '#1BCFE7', '#B8C0F2', '#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80', '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa', '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050', '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089'];
5141
5142var defaultConfigs = {
5143 type: 'wordCloud',
5144 shape: 'circle',
5145 left: 'center',
5146 top: 'center',
5147 width: '70%',
5148 height: '80%',
5149 rotationStep: 45,
5150 drawOutOfBound: false,
5151 gridSize: 8,
5152 rotationRange: [-90, 90],
5153 sizeRange: [12, 60],
5154 textStyle: {
5155 emphasis: { shadowBlur: 10, shadowColor: '#333' },
5156 normal: {
5157 fontWeight: 'normal',
5158 color: function color() {
5159 return 'rgb(' + [Math.round(Math.random() * 160), Math.round(Math.random() * 160), Math.round(Math.random() * 160)].join(',') + ')';
5160 }
5161 }
5162 }
5163};
5164
5165/**
5166 echarts 词云图配置器 - 使用图形化的方式配置 echarts4.x 图表
5167
5168 - 除 theme、chartHeight 外其它参数均为 echarts4.x 的标准参数,简称[标准参数]
5169 - [标准参数]只能是 echarts4.x 的顶级参数
5170 即: http://www.echartsjs.com/option.html#title 中 .setOption() 中直接子参数
5171 - 每一个[标准参数]都返回其所有的配置,如 title = {text: '', ....}
5172 - 数据需要在本组件外处理完成,并通过[标准参数]中的 dataset 传递,只支持以下一种格式
5173 即: 只有两列,(第一行为 dimensions(维度名、表头),使用时排除掉,返回时再添加:
5174 dataset = {
5175 source: [
5176 ['词', '值'],
5177 ['搞笑幽默', 3535333],
5178 ['新闻趣事', 786129],
5179 ['视频音乐', 745129],
5180 ['八卦杂谈', 692445],
5181 ]
5182 }
5183 注意:
5184 - 在实际上,词云的数据是保存在 series[0].data 中,但为了统一,放在了 dataset.source 中,
5185 所以在接收 dataset 参数时需要将数据转到 series[0].data 中,在返回时需要做相反操作
5186 - series[0].data 格式为 [ {name: xxx, value: xxx} ]
5187 - dataset.source 第一列维度、表头,使用时需要排除,返回时再添加
5188
5189 @author Witee<github.com/Witee>
5190 @date 2018-12-05
5191 @update 2018-12-10
5192*/
5193
5194var EchartsWordCloud = function (_React$Component) {
5195 _inherits(EchartsWordCloud, _React$Component);
5196
5197 function EchartsWordCloud(props) {
5198 _classCallCheck(this, EchartsWordCloud);
5199
5200 var _this = _possibleConstructorReturn(this, (EchartsWordCloud.__proto__ || Object.getPrototypeOf(EchartsWordCloud)).call(this, props));
5201
5202 _initialiseProps.call(_this);
5203
5204 var theme = props.theme,
5205 chartHeight = props.chartHeight,
5206 title = props.title,
5207 backgroundColor = props.backgroundColor,
5208 toolbox = props.toolbox,
5209 series = props.series,
5210 dataset = props.dataset;
5211
5212 /**
5213 首次加载时保存 header,在返回值时会使用
5214 */
5215
5216 _this.header = _.get(dataset, ['source', 0], []);
5217
5218 var _this$exchangeValues = _this.exchangeValues('toSeries', series, dataset),
5219 _this$exchangeValues2 = _slicedToArray(_this$exchangeValues, 2),
5220 newSeries = _this$exchangeValues2[0],
5221 newDataset = _this$exchangeValues2[1];
5222
5223 _this.state = {
5224 theme: theme,
5225 chartHeight: chartHeight,
5226 // [标准参数]
5227 title: title,
5228 backgroundColor: backgroundColor,
5229 toolbox: toolbox,
5230 // legend,
5231 series: [_.assign(defaultConfigs, newSeries[0])],
5232 dataset: newDataset
5233 };
5234 return _this;
5235 }
5236
5237 /**
5238 完成加载后回传一次数据,使父层获取初始值
5239 */
5240
5241
5242 _createClass(EchartsWordCloud, [{
5243 key: 'componentDidMount',
5244 value: function componentDidMount() {
5245 this.handleConfigChange();
5246 }
5247 }, {
5248 key: 'componentWillReceiveProps',
5249 value: function componentWillReceiveProps(nextProps) {
5250 var _props = this.props,
5251 title = _props.title,
5252 theme = _props.theme,
5253 backgroundColor = _props.backgroundColor,
5254 chartHeight = _props.chartHeight,
5255 toolbox = _props.toolbox,
5256 series = _props.series,
5257 dataset = _props.dataset;
5258
5259 var _exchangeValues = this.exchangeValues('toSeries', series, dataset),
5260 _exchangeValues2 = _slicedToArray(_exchangeValues, 2),
5261 newSeries = _exchangeValues2[0],
5262 newDataset = _exchangeValues2[1];
5263
5264 var _exchangeValues3 = this.exchangeValues('toSeries', nextProps.series, nextProps.dataset),
5265 _exchangeValues4 = _slicedToArray(_exchangeValues3, 2),
5266 nextSeries = _exchangeValues4[0],
5267 nextDataset = _exchangeValues4[1];
5268
5269 var needUpdate = {};
5270
5271 if (!_.isEqual(title, nextProps.title)) {
5272 needUpdate.title = nextProps.title;
5273 }
5274 if (!_.isEqual(theme, nextProps.theme)) {
5275 needUpdate.theme = nextProps.theme;
5276 }
5277 if (!_.isEqual(backgroundColor, nextProps.backgroundColor)) {
5278 needUpdate.backgroundColor = nextProps.backgroundColor;
5279 }
5280 if (!_.isEqual(chartHeight, nextProps.chartHeight)) {
5281 needUpdate.chartHeight = nextProps.chartHeight;
5282 }
5283 if (!_.isEqual(toolbox, nextProps.toolbox)) {
5284 needUpdate.toolbox = nextProps.toolbox;
5285 }
5286 // if (!_.isEqual(legend, nextProps.legend)) { needUpdate.legend = nextProps.legend; }
5287 if (!_.isEqual(newSeries, nextSeries)) {
5288 needUpdate.series = nextSeries;
5289 }
5290 if (!_.isEqual(newDataset, nextDataset)) {
5291 needUpdate.dataset = nextDataset;
5292 }
5293
5294 if (!_.isEmpty(needUpdate)) {
5295 this.setState(needUpdate);
5296 }
5297 }
5298
5299 // onLegendChange = (legend) => {
5300 // this.setState({ legend });
5301 // this.handleConfigChange({ legend });
5302 // };
5303
5304 /**
5305 监听所有配置变化,通过 onChange 返回
5306 注意参数 newConfig 必须是对象
5307 */
5308
5309
5310 /**
5311 将值在 series[0].data 与 dataset.source 之间移动,并转换格式
5312 - toDataset 表示将 series[0].data 的值移动到 dataset.source 中
5313 - toSeries 表示将 dataset.source 的值移动到 series[0].data 中
5314 数据格式转换:
5315 - dataset.source 第一列为表头,toSeries 时需要排除掉,toDataset 时需要添加(header 保存在 this.header 中)
5316 - series[0].data = [{name: xxx, value: xxx}, ...]
5317 - dataset.source = [[xxx, xxx], ...]
5318 */
5319
5320 }, {
5321 key: 'render',
5322 value: function render() {
5323 var _props2 = this.props,
5324 editable = _props2.editable,
5325 style = _props2.style,
5326 configStyle = _props2.configStyle,
5327 colorPickerConfig = _props2.colorPickerConfig;
5328 var _state = this.state,
5329 title = _state.title,
5330 theme = _state.theme,
5331 backgroundColor = _state.backgroundColor,
5332 chartHeight = _state.chartHeight,
5333 toolbox = _state.toolbox,
5334 series = _state.series;
5335
5336 /**
5337 配置区域的高度跟随图表高度
5338 */
5339
5340 var newConfigHeight = _.get(configStyle, 'height', chartHeight + 'px');
5341 var oldConfigStyle = { height: newConfigHeight, overflow: 'scroll', padding: '0 0.8rem 0 0', backgroundColor: '#f7f7f7', borderRadius: '4px' };
5342 var newConfigStyle = _.assign(oldConfigStyle, configStyle);
5343
5344 return _react2.default.createElement(
5345 _row2.default,
5346 { style: style, gutter: 16 },
5347 editable && _react2.default.createElement(
5348 _col2.default,
5349 { span: editable ? 8 : 0, style: newConfigStyle },
5350 _react2.default.createElement(
5351 _form2.default,
5352 null,
5353 _react2.default.createElement(_Title2.default, {
5354 title: _.cloneDeep(title),
5355 onChange: this.onTitleChange
5356 }),
5357 _react2.default.createElement(_Theme2.default, {
5358 theme: theme,
5359 backgroundColor: backgroundColor,
5360 colorPickerConfig: colorPickerConfig,
5361 onChange: this.onThemeChange
5362 }),
5363 _react2.default.createElement(_Height2.default, {
5364 defaultValue: chartHeight,
5365 onHeightSet: this.onChartHeightChange
5366 }),
5367 _react2.default.createElement(_Toolbox2.default
5368 /**
5369 const { toolbox } = this.state; 是 toolbox 的浅拷贝,对 toolbox 的修改就是对其本身的修改
5370 所以需要创建一个新的对象才能使 equal 对比时出现不相等的情况
5371 */
5372 , { toolbox: _.cloneDeep(toolbox),
5373 onChange: this.onToolboxChange
5374 }),
5375 _react2.default.createElement(_WordCloud2.default, {
5376 series: _.cloneDeep(series),
5377 onChange: this.onSeriesChange
5378 })
5379 ),
5380 _react2.default.createElement(_Baseline2.default, null)
5381 ),
5382 _react2.default.createElement(
5383 _col2.default,
5384 { span: editable ? 16 : 24 },
5385 _react2.default.createElement(_echartsForReact2.default, {
5386 option: this.getOption(),
5387 notMerge: false,
5388 lazyUpdate: false,
5389 theme: theme,
5390 style: { height: chartHeight + 'px' }
5391 })
5392 )
5393 );
5394 }
5395 }]);
5396
5397 return EchartsWordCloud;
5398}(_react2.default.Component);
5399
5400var _initialiseProps = function _initialiseProps() {
5401 var _this2 = this;
5402
5403 this.onTitleChange = function (title) {
5404 _this2.setState({ title: title });
5405 _this2.handleConfigChange({ title: title });
5406 };
5407
5408 this.onThemeChange = function (_ref) {
5409 var theme = _ref.theme,
5410 backgroundColor = _ref.backgroundColor;
5411
5412 _this2.setState({ theme: theme, backgroundColor: backgroundColor });
5413 _this2.handleConfigChange({ theme: theme, backgroundColor: backgroundColor });
5414 };
5415
5416 this.onChartHeightChange = function (chartHeight) {
5417 var intChartHeight = _.parseInt(chartHeight);
5418 _this2.setState({ chartHeight: intChartHeight });
5419 _this2.handleConfigChange({ chartHeight: intChartHeight });
5420 };
5421
5422 this.onToolboxChange = function (toolbox) {
5423 _this2.setState({ toolbox: toolbox });
5424 _this2.handleConfigChange({ toolbox: toolbox });
5425 };
5426
5427 this.onSeriesChange = function (series) {
5428 _this2.setState({ series: series });
5429 _this2.handleConfigChange({ series: series });
5430 };
5431
5432 this.getOption = function () {
5433 var _state2 = _this2.state,
5434 title = _state2.title,
5435 backgroundColor = _state2.backgroundColor,
5436 toolbox = _state2.toolbox,
5437 series = _state2.series,
5438 dataset = _state2.dataset;
5439
5440
5441 return {
5442 color: colors,
5443 backgroundColor: backgroundColor,
5444 title: title,
5445 toolbox: toolbox,
5446 // legend,
5447 series: series,
5448 dataset: dataset
5449 };
5450 };
5451
5452 this.handleConfigChange = function () {
5453 var newConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5454 var onChange = _this2.props.onChange;
5455
5456 if (_.isFunction(onChange)) {
5457 var _state3 = _this2.state,
5458 title = _state3.title,
5459 theme = _state3.theme,
5460 backgroundColor = _state3.backgroundColor,
5461 chartHeight = _state3.chartHeight,
5462 toolbox = _state3.toolbox,
5463 series = _state3.series,
5464 dataset = _state3.dataset;
5465
5466 var _exchangeValues5 = _this2.exchangeValues('toDataset', series, dataset),
5467 _exchangeValues6 = _slicedToArray(_exchangeValues5, 2),
5468 newSeries = _exchangeValues6[0],
5469 newDataset = _exchangeValues6[1];
5470
5471 var oldConfigs = {
5472 title: title,
5473 theme: theme,
5474 backgroundColor: backgroundColor,
5475 chartHeight: chartHeight,
5476 toolbox: toolbox,
5477 // legend,
5478 series: series,
5479 dataset: dataset
5480 };
5481
5482 var finalConfigs = _.assign(oldConfigs, newConfig, { series: newSeries }, { dataset: newDataset });
5483
5484 // 回传
5485 onChange(finalConfigs);
5486 }
5487 };
5488
5489 this.exchangeValues = function (type, series, dataset) {
5490 var clonedSeries = _.cloneDeep(series);
5491 var clonedDataset = _.cloneDeep(dataset);
5492
5493 if (type === 'toDataset') {
5494 /**
5495 [{name: xxx, value: xxx}, ...] --> [[xxx, xxx], ...]
5496 第一条数据为表头,需要添加
5497 */
5498 var data = _.get(clonedSeries, [0, 'data'], []);
5499 var newData = [];
5500 _.forEach(data, function (d) {
5501 newData.push([_.get(d, 'name', null), _.get(d, 'value', null)]);
5502 });
5503
5504 newData.unshift(_this2.header);
5505
5506 _.set(clonedDataset, 'source', newData);
5507 _.unset(clonedSeries, [0, 'data']);
5508 } else if (type === 'toSeries') {
5509 /**
5510 [[xxx, xxx], ...] --> [{name: xxx, value: xxx}, ...]
5511 第一条数据为表头,需要排除
5512 */
5513 var _data = _.get(clonedDataset, 'source', []);
5514 var body = _.slice(_data, 1);
5515 var _newData = [];
5516 _.forEach(body, function (b) {
5517 _newData.push({
5518 name: _.get(b, 0, null),
5519 value: _.get(b, 1, null)
5520 });
5521 });
5522
5523 _.set(clonedSeries, [0, 'data'], _newData);
5524 _.unset(clonedDataset, 'source');
5525 }
5526
5527 return [clonedSeries, clonedDataset];
5528 };
5529};
5530
5531EchartsWordCloud.propTypes = {
5532 editable: _propTypes2.default.bool,
5533 style: _propTypes2.default.object,
5534 configStyle: _propTypes2.default.object,
5535 title: _propTypes2.default.object,
5536 theme: _propTypes2.default.oneOf(['default', 'dark']), // 默认已注册的主题
5537 backgroundColor: _propTypes2.default.string,
5538 colorPickerConfig: _propTypes2.default.object,
5539 chartHeight: _propTypes2.default.number,
5540 toolbox: _propTypes2.default.object,
5541 // legend: PropTypes.object,
5542 series: _propTypes2.default.arrayOf(_propTypes2.default.object),
5543 dataset: _propTypes2.default.object,
5544 onChange: _propTypes2.default.func
5545};
5546
5547EchartsWordCloud.defaultProps = {
5548 editable: true,
5549 style: {},
5550 configStyle: {},
5551 title: undefined,
5552 theme: 'default',
5553 backgroundColor: '#FFFFFF',
5554 colorPickerConfig: undefined,
5555 chartHeight: 420,
5556 toolbox: { feature: { saveAsImage: { title: '下载', pixelRatio: 5 } }, top: '10%' },
5557 // legend: undefined,
5558 series: [{ type: 'wordCloud' }],
5559 dataset: undefined,
5560 onChange: undefined
5561};
5562
5563exports.default = EchartsWordCloud;
5564/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
5565
5566/***/ }),
5567/* 49 */
5568/***/ (function(module, exports, __webpack_require__) {
5569
5570"use strict";
5571
5572
5573Object.defineProperty(exports, "__esModule", {
5574 value: true
5575});
5576
5577var _react = __webpack_require__(1);
5578
5579var _react2 = _interopRequireDefault(_react);
5580
5581var _propTypes = __webpack_require__(0);
5582
5583var _propTypes2 = _interopRequireDefault(_propTypes);
5584
5585var _echartsForReact = __webpack_require__(13);
5586
5587var _echartsForReact2 = _interopRequireDefault(_echartsForReact);
5588
5589function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5590
5591function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
5592
5593/**
5594 基于 EChart 的常用图表 - 基础
5595 title、description、children 未定义时将不进行显示
5596
5597 @author Witee<github.com/Witee>
5598 @date 2018-07-05
5599*/
5600
5601var OCDReactEcharts = function OCDReactEcharts(props) {
5602 var style = props.style,
5603 args = _objectWithoutProperties(props, ['style']);
5604
5605 return _react2.default.createElement(
5606 'div',
5607 { style: style },
5608 _react2.default.createElement(_echartsForReact2.default, args)
5609 );
5610};
5611
5612OCDReactEcharts.propTypes = {
5613 style: _propTypes2.default.object
5614};
5615
5616OCDReactEcharts.defaultProps = {
5617 style: {}
5618};
5619
5620exports.default = OCDReactEcharts;
5621
5622/***/ }),
5623/* 50 */
5624/***/ (function(module, exports, __webpack_require__) {
5625
5626"use strict";
5627
5628
5629Object.defineProperty(exports, "__esModule", {
5630 value: true
5631});
5632var help = 'data:image/png;base64,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md27d/PAAw9QV1eHYRicffbZXH311SiKwgcffMCCBQswDIPu3btz++23ExcXF9rXMAyam5t5/PHH+eKLL7BareTn53P55Zej6zpffPEFTz75JF6vl5SUFG6++WYyMzM5ePAgjz32GNu2bcNqtXL++ecze/Zs+fAQQgjxowRPIxoz4nQsCYmULHyRypUr8FRWkjZzFtFDh6FoGpbEJDmdaBckYbQTMQyDhx56iDPOOIOpU6dSVVXFddddx5gxY3A6nTz44IM8/PDDZGVl8cQTT/Doo49yzz33hPb3er0sW7aMffv28fjjj9PY2MicOXPIysqif//+PPDAA9x8880MHDiQt99+m/vvv5+HH36YxYsXU1dXx+OPP05dXR133XUXOTk5DB8+PIxHQwghRGeiKAqYTDh79qL79TdhS8+g9JWX2fvvf+LI6o7JbseR05P0y6/EEhsb7uqKDiRhtJMZM2YM5513HhEREfj9fnw+HyaTibVr15Kbm0tubi6qqnLBBRdw4403hrrzAXw+H59++innnHMOcXFxOJ1Ohg8fzieffAKAzWZj9OjRaJrGxIkTWbBgASUlJaxbt45LL72U2NhY7HY7gwcPZv369RJGhRBC/CSh5Z+SEkmdPgNF02gpKiT7pv/BVX6Amk/WUPvpWpInTQ53VUUHkjDaycyYMQOz2cytt97K9u3bycnJISsri2XLltGtWzdMrd0bKSkpNDY20tLSgtPpDI0zLS8vJy0tLdBloqokJiayfft2KioqSEpKQtMCL4mIiAjsdjvV1dXt9jGZTCQkJLB3795QndxuNy+99BJutxsItOAWFxfT0tJCSUlJxx8kIYQ4SXVr/SufjWB4vTQpCiaThmK1opoteN1umqur8YX5+FitViIjI7FarWGtR1chYbQTURQFi8UCwH333UdpaSlz5sxh6dKlmEwmPG1OuabrOkAoXAapqhq6Lbid2WzGZDKh6zqKomAYBoqi4Pf7sVgsodvg0OQps9nc7j579OgRenxd1/H5fBQWFmK320/MwRBCiE5MPhsBux1t8BDqS0spuPFaVKsNe+/eJI4dhxrm46Np2vdOBBbHl4TRTqSuro5rrrmG+fPn43Q66dmzJ3379qWkpIQePXrw5ptvhoLkd999R48ePdqFRpPJREZGBrt372bkyJHous6+ffvo3bs3GRkZ7N+/H4/H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0zj77LPxer0sXLgQu93O7bffTs+ePQG4++67ee211ygoKKB3797MnDkTs9nM1KlTURSF559/noiICO666y7S09OPVU0hhBBCiB9NMdpOtxYnteA6oYczmUxomobf78fj8WAYBpqmYTabQxOdDhw4wEUXXQQEZtX7fD4ALBYLJpMJwzBC9x8cP9q2i9/r9eL3+9vtcyw+n49169axfPly5s6dezwPgRBC/HzBrlf52hPipCIto52IoijfO7PPZDJht9uPKB86dCiqqobGwJjNZsxm8xH3rShKu0Xy22obTIUQQgghjhcJo12ALE0hhBBCiJOVhNEuQGYFCiGEEOJkJVMKhRBCCCFE2EgYFUIIIYQQYSNhVAghhBBChI2EUSGEEEIIETYSRoUQQgghRNhIGBVCCCGEEGEjYVQIIYQQQoSNhFEhhBBCCBE2EkaFEEIIIUTYSBgVQgghhBBhI2FUCCGEEEKEjYRRIYQQQggRNhJGhRBCCCFE2EgYFUIIIYQQYaOFuwJCCCHEcVdYCDfcAIYRuK4oh2678MJAebDs8cchM7Pj6yiEACSMCiGEOBVlZEBBQSCUHu6ddw5dzswMbCuECBvpphdCCHHqURS46KIf3m769PatpkKIDidhVAghxKlp+vTjs40Q4oSSMCqEEOLUNHo0pKQc+/bUVBg1quPqI4Q4KgmjQgghTk2qCtOmHfv2adMC2wghwkrehUIIIU5d39cNL130QpwUJIwKIYQ4dY0bB/HxR5bHx8PYsR1fHyHEEWRpp05q//79vP/++1x77bWhsl27drFo0SIaGhoYPHgws2bNwmw2h243DAOv18uqVatYs2YNNpuN8847jxEjRmAYBiUlJSxatIiqqir69OnD7NmzcTqdeL1e3n33XTZs2IDT6eTCCy8kLy8vHE9bCCF+Gk2DKVPguefal0+dGrhNCBF20jLayVRVVfH6668zZ84ctmzZEiqvr6/nlltuoV+/flx99dV8/vnnPPvss+329fv9rFmzhhdeeIHp06czYcIEHnroIbZt20ZTUxN33303sbGxXHnllRw4cIAHH3wQn8/He++9x5tvvsns2bM544wzmDt3Lrt37+7opy6EED/P0brjpYteiJOGhNFOxuPx4PV6SU1NRdf1UPmaNWtISkriwgsvpHfv3vzyl79k2bJlGMGzjwBer5cVK1YwadIk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';
5633
5634exports.default = help;
5635
5636/***/ }),
5637/* 51 */
5638/***/ (function(module, exports, __webpack_require__) {
5639
5640"use strict";
5641/* WEBPACK VAR INJECTION */(function(_) {
5642
5643Object.defineProperty(exports, "__esModule", {
5644 value: true
5645});
5646
5647var _row = __webpack_require__(7);
5648
5649var _row2 = _interopRequireDefault(_row);
5650
5651var _input = __webpack_require__(9);
5652
5653var _input2 = _interopRequireDefault(_input);
5654
5655var _col = __webpack_require__(5);
5656
5657var _col2 = _interopRequireDefault(_col);
5658
5659var _button = __webpack_require__(22);
5660
5661var _button2 = _interopRequireDefault(_button);
5662
5663var _radio = __webpack_require__(11);
5664
5665var _radio2 = _interopRequireDefault(_radio);
5666
5667var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
5668
5669var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5670
5671__webpack_require__(8);
5672
5673__webpack_require__(10);
5674
5675__webpack_require__(6);
5676
5677__webpack_require__(23);
5678
5679__webpack_require__(12);
5680
5681var _react = __webpack_require__(1);
5682
5683var _react2 = _interopRequireDefault(_react);
5684
5685var _propTypes = __webpack_require__(0);
5686
5687var _propTypes2 = _interopRequireDefault(_propTypes);
5688
5689var _Table = __webpack_require__(19);
5690
5691var _Table2 = _interopRequireDefault(_Table);
5692
5693var _table = __webpack_require__(20);
5694
5695var _table2 = _interopRequireDefault(_table);
5696
5697function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5698
5699function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5700
5701function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
5702
5703function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
5704
5705/**
5706 全功能数据编辑器 - 二维表格式,第一行是表头,其它行是数据
5707
5708 如下:
5709 dataSource = [
5710 ["日期", "声量"]
5711 ["2018-07-09", 58212]
5712 ["2018-07-08", 78254]
5713 ["2018-07-07", 41032]
5714 ["2018-07-06", 12755]
5715 ["2018-07-05", 20145]
5716 ["2018-07-04", 79146]
5717 ["2018-07-03", 91852]
5718 ["2018-07-02", 101852]
5719 ]
5720
5721 @author Witee<github.com/Witee>
5722 @date 2018-07-24
5723*/
5724
5725var Common = function (_React$Component) {
5726 _inherits(Common, _React$Component);
5727
5728 function Common(props) {
5729 _classCallCheck(this, Common);
5730
5731 var _this = _possibleConstructorReturn(this, (Common.__proto__ || Object.getPrototypeOf(Common)).call(this, props));
5732
5733 _initialiseProps.call(_this);
5734
5735 var dataSource = props.dataSource,
5736 tableFilters = props.tableFilters,
5737 tableSorter = props.tableSorter;
5738
5739 var fixedDataSource = _table2.default.fixData(dataSource);
5740 var newDataSource = _table2.default.filterAndSorter(fixedDataSource, tableFilters, tableSorter);
5741
5742 _this.state = {
5743 dataEditorType: 'table',
5744 dataSource: newDataSource,
5745 filteredInfo: tableFilters,
5746 sorter: tableSorter
5747 };
5748 return _this;
5749 }
5750
5751 _createClass(Common, [{
5752 key: 'componentWillReceiveProps',
5753 value: function componentWillReceiveProps(nextProps) {
5754 var fixedData = _table2.default.fixData(nextProps.dataSource);
5755 this.setState({ dataSource: fixedData });
5756 }
5757
5758 /**
5759 切换数据的显示方式,表格或文本
5760 */
5761
5762
5763 /**
5764 监听文本框编辑
5765 */
5766
5767
5768 /**
5769 监听表格过滤、排序,并将处理后的结果及过滤、排序条件返回,
5770 */
5771
5772
5773 /**
5774 恢复原始数据
5775 */
5776
5777 }, {
5778 key: 'render',
5779 value: function render() {
5780 var _props = this.props,
5781 title = _props.title,
5782 tableParams = _props.tableParams,
5783 originData = _props.originData;
5784 var _state = this.state,
5785 dataEditorType = _state.dataEditorType,
5786 dataSource = _state.dataSource,
5787 filteredInfo = _state.filteredInfo,
5788 sorter = _state.sorter;
5789
5790 /**
5791 这里的 rows 分成了 2 种,
5792 rows = dataSource.slice(1) 用于表格内容的显示
5793 orginRows = originData.slice(1) 用于表格过滤条件的渲染
5794 */
5795
5796 var newDataSource = dataSource;
5797 var header = _.get(dataSource, 0, []);
5798 var rows = dataSource.length >= 2 ? dataSource.slice(1) : [];
5799 var orginRows = _.get(originData, 'length', null) >= 2 ? originData.slice(1) : [];
5800 /**
5801 每一列都添加排序与过滤,其中数值型的使用数值大小排序
5802 */
5803 var columns = _.map(header, function (h, i) {
5804 return {
5805 key: h,
5806 title: h,
5807 dataIndex: h,
5808 filters: _.uniqBy(_.map(orginRows, function (r) {
5809 return { text: '' + _.get(r, i, '-'), value: _.get(r, i, '-') };
5810 }), 'text'),
5811 filteredValue: _.get(filteredInfo, h, null),
5812 onFilter: function onFilter(value, record) {
5813 return _.toString(_.get(record, h, null)).includes(value);
5814 },
5815 sorter: true, // 在 Table 的 onChange 中进行了排序,并回传至上层,上层再传回,实现排序
5816 sortOrder: _.get(sorter, 'field', null) === h ? _.get(sorter, 'order', false) : undefined
5817 };
5818 });
5819 /**
5820 如果设置了sorter,说明需要按此排序,所以对 tableDataSource 作排序处理
5821 */
5822 if (!_.isEmpty(sorter) && _.get(sorter, 'field', null) && _.get(sorter, 'order', null)) {
5823 newDataSource = _table2.default.filterAndSorter(dataSource, filteredInfo, sorter);
5824 rows = newDataSource.length >= 2 ? newDataSource.slice(1) : [];
5825 }
5826 var tableDataSource = _.map(rows, function (r, index) {
5827 var data = {
5828 key: _.get(r, 0, '') + ' = ' + index
5829 };
5830 _.forEach(header, function (h, i) {
5831 data[h] = _.get(r, i, null);
5832 });
5833 return data;
5834 });
5835
5836 return _react2.default.createElement(
5837 _row2.default,
5838 null,
5839 _react2.default.createElement(
5840 _col2.default,
5841 {
5842 style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center' },
5843 className: 'margin-top-bottom-middle'
5844 },
5845 title,
5846 _react2.default.createElement(
5847 _radio2.default.Group,
5848 {
5849 value: dataEditorType,
5850 size: 'small',
5851 onChange: this.onDataEditorTypeChange,
5852 className: 'justify-self-right'
5853 },
5854 _react2.default.createElement(
5855 _radio2.default.Button,
5856 { key: 'table', value: 'table' },
5857 '\u8868\u683C'
5858 ),
5859 _react2.default.createElement(
5860 _radio2.default.Button,
5861 { key: 'text', value: 'text' },
5862 '\u6587\u672C'
5863 )
5864 ),
5865 _react2.default.createElement(
5866 _button2.default,
5867 {
5868 icon: 'reload',
5869 size: 'small',
5870 className: 'margin-left-small',
5871 disabled: !originData,
5872 onClick: this.onReloadClick
5873 },
5874 '\u8FD8\u539F'
5875 )
5876 ),
5877 _react2.default.createElement(
5878 _col2.default,
5879 null,
5880 dataEditorType === 'table' ? _react2.default.createElement(_Table2.default, _extends({
5881 dataSource: tableDataSource,
5882 columns: columns,
5883 onChange: this.onTableChange
5884 }, _.assign({
5885 size: 'default'
5886 }, tableParams))) : _react2.default.createElement(_input2.default.TextArea, {
5887 value: _.join(_.map(newDataSource, function (d) {
5888 return '' + _.join(d, ',');
5889 }), '\n'),
5890 rows: 15,
5891 onChange: this.onTextAreaChange
5892 })
5893 )
5894 );
5895 }
5896 }]);
5897
5898 return Common;
5899}(_react2.default.Component);
5900
5901var _initialiseProps = function _initialiseProps() {
5902 var _this2 = this;
5903
5904 this.onDataEditorTypeChange = function (e) {
5905 _this2.setState({ dataEditorType: e.target.value });
5906 };
5907
5908 this.onTextAreaChange = function (e) {
5909 var onChange = _this2.props.onChange;
5910
5911
5912 var splitedData = _.compact(_.split(e.target.value, '\n'));
5913 if (_.isFunction(onChange)) {
5914 onChange(_.map(splitedData, function (d) {
5915 return _.split(d, ',');
5916 }));
5917 }
5918 };
5919
5920 this.onTableChange = function (pagination, filters, sorter) {
5921 var onChange = _this2.props.onChange;
5922 var dataSource = _this2.state.dataSource;
5923
5924
5925 var newDataSource = _.cloneDeep(dataSource);
5926
5927 /**
5928 如果数据长度小于等于2,则认为只有表头或表头+一条数据,所以原样返回
5929 */
5930 if (newDataSource.length >= 2) {
5931 /**
5932 处理过虑、排序
5933 */
5934 newDataSource = _table2.default.filterAndSorter(newDataSource, filters, sorter);
5935 }
5936 if (_.isFunction(onChange)) {
5937 onChange(newDataSource, filters, sorter);
5938 }
5939
5940 /**
5941 将过滤条件保存,方便在渲染 columns 时使用
5942 */
5943 _this2.setState({ filteredInfo: filters, sorter: sorter });
5944 };
5945
5946 this.onReloadClick = function () {
5947 var _props2 = _this2.props,
5948 onChange = _props2.onChange,
5949 originData = _props2.originData;
5950
5951
5952 _this2.setState({ dataSource: originData, filteredInfo: {}, sorter: {} });
5953 /**
5954 恢复之后将原始数据回传
5955 */
5956 if (_.isFunction(onChange)) {
5957 onChange(originData, null, null, true);
5958 }
5959 };
5960};
5961
5962Common.propTypes = {
5963 title: _propTypes2.default.node,
5964 originData: _propTypes2.default.arrayOf(_propTypes2.default.array),
5965 dataSource: _propTypes2.default.arrayOf(_propTypes2.default.array),
5966 onChange: _propTypes2.default.func.isRequired,
5967 tableParams: _propTypes2.default.object,
5968 tableFilters: _propTypes2.default.object,
5969 tableSorter: _propTypes2.default.object
5970};
5971
5972Common.defaultProps = {
5973 title: _react2.default.createElement(
5974 'h3',
5975 null,
5976 '\u6E90\u6570\u636E'
5977 ),
5978 originData: undefined,
5979 dataSource: [[]],
5980 tableParams: {},
5981 tableFilters: {},
5982 tableSorter: {}
5983};
5984
5985exports.default = Common;
5986/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
5987
5988/***/ }),
5989/* 52 */
5990/***/ (function(module, exports, __webpack_require__) {
5991
5992"use strict";
5993/* WEBPACK VAR INJECTION */(function(_) {
5994
5995Object.defineProperty(exports, "__esModule", {
5996 value: true
5997});
5998
5999var _row = __webpack_require__(7);
6000
6001var _row2 = _interopRequireDefault(_row);
6002
6003var _col = __webpack_require__(5);
6004
6005var _col2 = _interopRequireDefault(_col);
6006
6007var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
6008
6009var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6010
6011__webpack_require__(8);
6012
6013__webpack_require__(6);
6014
6015var _react = __webpack_require__(1);
6016
6017var _react2 = _interopRequireDefault(_react);
6018
6019var _propTypes = __webpack_require__(0);
6020
6021var _propTypes2 = _interopRequireDefault(_propTypes);
6022
6023var _Table = __webpack_require__(19);
6024
6025var _Table2 = _interopRequireDefault(_Table);
6026
6027var _table = __webpack_require__(20);
6028
6029var _table2 = _interopRequireDefault(_table);
6030
6031function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6032
6033function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
6034
6035function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6036
6037function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
6038
6039function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
6040
6041/**
6042 表格编辑器 - 使用 antd Table 编辑二维表
6043
6044 - onChange 会将 filters、sorter 和经过 filters、sorter 处理的 result 返回
6045
6046 - 推荐使用方法: dataSource 始终传递 [原始数据],即 props.dataSource,
6047 父层使用时经过 filters、sorter 处理,或直接使用 onChange 返回的 result 参数,
6048 如将 onChange 返回的 result 再次传递给 DataEditor.Table 会由于已有的 filters 选项造成不能生成所有的过滤列表
6049
6050 - filters, sorter 需要在 onChange 返回之后再次传回;
6051
6052 - 输入与输出数据格式均为 echarts4.x 中 dataset 的格式
6053 即: 第一行为表头,其它行为数据,每一行中以英文逗号分隔
6054 dataSource = [
6055 ['日期', '平台', '声量'],
6056 ['2018-07-20', '微博', 52872],
6057 ['2018-07-20', '微信', 8510],
6058 ['2018-07-21', '微博', 47381],
6059 ['2018-07-21', '微信', 8195],
6060 ['2018-07-22', '微博', 37072],
6061 ['2018-07-22', '微信', 6925],
6062 ['2018-07-23', '微博', 44665],
6063 ['2018-07-23', '微信', 7934],
6064 ['2018-07-24', '微博', 46858],
6065 ['2018-07-24', '微信', 8889],
6066 ['2018-07-25', '微博', 30272],
6067 ['2018-07-25', '微信', 3925],
6068 ];
6069
6070 @author Witee<github.com/Witee>
6071 @date 2018-12-06
6072*/
6073
6074var Table = function (_React$Component) {
6075 _inherits(Table, _React$Component);
6076
6077 function Table(props) {
6078 _classCallCheck(this, Table);
6079
6080 var _this = _possibleConstructorReturn(this, (Table.__proto__ || Object.getPrototypeOf(Table)).call(this, props));
6081
6082 _initialiseProps.call(_this);
6083
6084 var dataSource = props.dataSource,
6085 filters = props.filters,
6086 sorter = props.sorter;
6087
6088
6089 _this.state = { dataSource: dataSource, filters: filters, sorter: sorter };
6090 return _this;
6091 }
6092
6093 _createClass(Table, [{
6094 key: 'componentWillReceiveProps',
6095 value: function componentWillReceiveProps(nextProps) {
6096 var dataSource = nextProps.dataSource,
6097 filters = nextProps.filters,
6098 sorter = nextProps.sorter;
6099
6100 this.setState({ dataSource: dataSource, filters: filters, sorter: sorter });
6101 }
6102
6103 /**
6104 推荐使用方法: dataSource 应始终保持为 [原始数据],
6105 filters, sorter 为对[原始数据]的处理方法,result 为处理结果
6106 sorter 只需要返回 field、order
6107 注意: pagination 并未使用,所以 dataSource 必须为全部数据
6108 */
6109
6110 }, {
6111 key: 'render',
6112 value: function render() {
6113 var _props = this.props,
6114 toolbar = _props.toolbar,
6115 args = _objectWithoutProperties(_props, ['toolbar']);
6116
6117 var _state = this.state,
6118 dataSource = _state.dataSource,
6119 filters = _state.filters,
6120 sorter = _state.sorter;
6121
6122
6123 var tableDataSource = [];
6124 var columns = [];
6125
6126 var fixedDataSource = _table2.default.fixData(dataSource);
6127 var newDataSource = _table2.default.filterAndSorter(fixedDataSource, filters, sorter);
6128 var header = _.get(fixedDataSource, 0, []);
6129 /**
6130 这里有两种 body,
6131 - body 是排序、过滤后的
6132 - originBody 是生成过滤列表专用的
6133 */
6134 var originBody = _.slice(fixedDataSource, 1);
6135 var body = _.slice(newDataSource, 1);
6136
6137 /**
6138 只有 header 有数据时才会设置 tableDataSource,否则无论怎么操作都不符合 antd Table dataSource 参数格式
6139 */
6140 if (_.get(header, 'length', 0) > 0) {
6141 /**
6142 表格标题
6143 每一列都添加排序与过滤,其中数值型的使用数值大小排序
6144 */
6145 columns = _.map(header, function (h, i) {
6146 var filterOptions = _.uniqBy(_.map(originBody, function (r) {
6147 var option = _.get(r, i, '-');
6148 return { text: option, value: option };
6149 }), 'text');
6150 return {
6151 title: h,
6152 dataIndex: h,
6153 filters: filterOptions,
6154 filteredValue: _.get(filters, h, null), // 这里要设置成 null,不能是 undefined,否则不能清除 filter 状态
6155 onFilter: function onFilter(value, record) {
6156 return _.toString(_.get(record, h, null)).includes(value);
6157 },
6158 sorter: true, // 在 Table 的 onChange 中进行了排序,并回传至上层,上层再传回,实现排序
6159 sortOrder: _.get(sorter, 'field', null) === h ? _.get(sorter, 'order', false) : undefined
6160 };
6161 });
6162
6163 /**
6164 表格数据
6165 将列表格式的数据转换为 antd Table 需要的格式
6166 即:
6167 old = [
6168 ['日期', '平台', '声量'],
6169 ['2018-07-20', '微博', 52872],
6170 ]
6171 new = [
6172 {key: INDEX, '日期': '2018-07-20', '平台': '微博', '声量', 52872},
6173 ]
6174 */
6175 tableDataSource = _.map(body, function (value, index) {
6176 var objData = _.zipObject(header, value);
6177 _.set(objData, 'key', _.get(value, 0, '') + ' = ' + index);
6178
6179 return objData;
6180 });
6181 }
6182
6183 /**
6184 ...args 会将定义处的其它 props 参数都包含进来,
6185 所以在使用的时候需要提前删除已定义的参数或不能被覆盖的参数
6186 */
6187 var filteredArgs = _.cloneDeep(args);
6188 var protectedArgs = ['dataSource', 'columns', 'onChange', 'filters', 'sorter'];
6189 _.map(protectedArgs, function (arg) {
6190 _.unset(filteredArgs, arg);
6191 });
6192
6193 return _react2.default.createElement(
6194 _row2.default,
6195 null,
6196 toolbar && _react2.default.createElement(
6197 _col2.default,
6198 { className: 'margin-top-bottom-middle' },
6199 toolbar
6200 ),
6201 _react2.default.createElement(
6202 _col2.default,
6203 null,
6204 _react2.default.createElement(_Table2.default, _extends({
6205 dataSource: tableDataSource,
6206 columns: columns,
6207 onChange: this.onTableChange
6208 }, filteredArgs))
6209 )
6210 );
6211 }
6212 }]);
6213
6214 return Table;
6215}(_react2.default.Component);
6216
6217var _initialiseProps = function _initialiseProps() {
6218 var _this2 = this;
6219
6220 this.onTableChange = function (pagination, filters, sorter) {
6221 var onChange = _this2.props.onChange;
6222 var dataSource = _this2.state.dataSource;
6223
6224
6225 var newSorter = { field: sorter.field, order: sorter.order };
6226
6227 _this2.setState({ filters: filters, sorter: newSorter });
6228
6229 if (_.isFunction(onChange)) {
6230 var fixedDataSource = _table2.default.fixData(dataSource);
6231 var result = _table2.default.filterAndSorter(fixedDataSource, filters, newSorter);
6232
6233 onChange({ filters: filters, sorter: newSorter, result: result });
6234 }
6235 };
6236};
6237
6238Table.propTypes = {
6239 toolbar: _propTypes2.default.node,
6240 dataSource: _propTypes2.default.arrayOf(_propTypes2.default.array), // 需要始终传递 [原始数据]
6241 onChange: _propTypes2.default.func,
6242 filters: _propTypes2.default.object,
6243 sorter: _propTypes2.default.object
6244};
6245
6246Table.defaultProps = {
6247 toolbar: undefined,
6248 dataSource: [[]],
6249 onChange: undefined,
6250 filters: {},
6251 sorter: {}
6252};
6253
6254exports.default = Table;
6255/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
6256
6257/***/ }),
6258/* 53 */
6259/***/ (function(module, exports, __webpack_require__) {
6260
6261"use strict";
6262/* WEBPACK VAR INJECTION */(function(_) {
6263
6264Object.defineProperty(exports, "__esModule", {
6265 value: true
6266});
6267
6268var _row = __webpack_require__(7);
6269
6270var _row2 = _interopRequireDefault(_row);
6271
6272var _input = __webpack_require__(9);
6273
6274var _input2 = _interopRequireDefault(_input);
6275
6276var _col = __webpack_require__(5);
6277
6278var _col2 = _interopRequireDefault(_col);
6279
6280var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
6281
6282var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6283
6284__webpack_require__(8);
6285
6286__webpack_require__(10);
6287
6288__webpack_require__(6);
6289
6290var _react = __webpack_require__(1);
6291
6292var _react2 = _interopRequireDefault(_react);
6293
6294var _propTypes = __webpack_require__(0);
6295
6296var _propTypes2 = _interopRequireDefault(_propTypes);
6297
6298function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6299
6300function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
6301
6302function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6303
6304function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
6305
6306function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
6307
6308/**
6309 文本编辑器 - 在文本框中编辑二维表
6310
6311 - onChange 会将修改后的 dataSource 返回
6312
6313 - 推荐用法: 父层需要将 onChange 返回的 dataSource 再次传递给 DataEditor.Text 的 dataSource 参数
6314
6315 - 输入与输出数据格式均为 echarts4.x 中 dataset 的格式
6316 即: 第一行为表头,其它行为数据,每一行中以英文逗号分隔
6317
6318 dataSource = [
6319 ['日期', '平台', '声量'],
6320 ['2018-07-20', '微博', 52872],
6321 ['2018-07-20', '微信', 8510],
6322 ['2018-07-21', '微博', 47381],
6323 ['2018-07-21', '微信', 8195],
6324 ['2018-07-22', '微博', 37072],
6325 ['2018-07-22', '微信', 6925],
6326 ['2018-07-23', '微博', 44665],
6327 ['2018-07-23', '微信', 7934],
6328 ['2018-07-24', '微博', 46858],
6329 ['2018-07-24', '微信', 8889],
6330 ['2018-07-25', '微博', 30272],
6331 ['2018-07-25', '微信', 3925],
6332 ];
6333
6334 @author Witee<github.com/Witee>
6335 @date 2018-12-04
6336*/
6337
6338var Text = function (_React$Component) {
6339 _inherits(Text, _React$Component);
6340
6341 function Text(props) {
6342 _classCallCheck(this, Text);
6343
6344 var _this = _possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).call(this, props));
6345
6346 _this.onTextAreaSubmit = function (_ref) {
6347 var value = _ref.target.value;
6348 var onChange = _this.props.onChange;
6349
6350
6351 if (_.isFunction(onChange)) {
6352 onChange(_this.textToArray(value));
6353 }
6354 };
6355
6356 _this.onTextAreaChange = function (_ref2) {
6357 var value = _ref2.target.value;
6358
6359 _this.setState({ dataSource: _this.textToArray(value) });
6360 };
6361
6362 _this.textToArray = function (text) {
6363 var newData = [];
6364 var rawData = _.compact(_.split(text, '\n'));
6365 _.forEach(rawData, function (v) {
6366 newData.push(_.split(v, ','));
6367 });
6368 return newData;
6369 };
6370
6371 var dataSource = props.dataSource;
6372
6373
6374 _this.state = { dataSource: dataSource };
6375 return _this;
6376 }
6377
6378 _createClass(Text, [{
6379 key: 'componentWillReceiveProps',
6380 value: function componentWillReceiveProps(nextProps) {
6381 var dataSource = nextProps.dataSource;
6382
6383 this.setState({ dataSource: dataSource });
6384 }
6385
6386 /**
6387 提交,将以逗号分隔的字符串还原成列表
6388 */
6389
6390
6391 /**
6392 监听文档变化
6393 */
6394
6395 }, {
6396 key: 'render',
6397 value: function render() {
6398 var _props = this.props,
6399 toolbar = _props.toolbar,
6400 args = _objectWithoutProperties(_props, ['toolbar']);
6401
6402 var dataSource = this.state.dataSource;
6403
6404 /**
6405 将列表格式的数据,转换成以逗号分隔的数据
6406 */
6407
6408 var textData = [];
6409 _.map(dataSource, function (value) {
6410 textData.push(_.join(value, ','));
6411 });
6412
6413 /**
6414 ...args 会将定义处的其它 props 参数都包含进来,
6415 所以在使用的时候需要提前删除已定义的参数或不能被覆盖的参数
6416 */
6417 var filteredArgs = _.cloneDeep(args);
6418 var protectedArgs = ['value', 'onBlur', 'dataSource', 'onChange'];
6419 _.map(protectedArgs, function (arg) {
6420 _.unset(filteredArgs, arg);
6421 });
6422
6423 return _react2.default.createElement(
6424 _row2.default,
6425 null,
6426 toolbar && _react2.default.createElement(
6427 _col2.default,
6428 { className: 'margin-top-bottom-middle' },
6429 toolbar
6430 ),
6431 _react2.default.createElement(
6432 _col2.default,
6433 null,
6434 _react2.default.createElement(_input2.default.TextArea, _extends({
6435 value: _.join(textData, '\n'),
6436 onBlur: this.onTextAreaSubmit,
6437 onChange: this.onTextAreaChange
6438 }, filteredArgs))
6439 )
6440 );
6441 }
6442 }]);
6443
6444 return Text;
6445}(_react2.default.Component);
6446
6447Text.propTypes = {
6448 toolbar: _propTypes2.default.node,
6449 dataSource: _propTypes2.default.array,
6450 onChange: _propTypes2.default.func
6451};
6452
6453Text.defaultProps = {
6454 toolbar: undefined,
6455 dataSource: [[]],
6456 onChange: undefined
6457};
6458
6459exports.default = Text;
6460/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
6461
6462/***/ }),
6463/* 54 */
6464/***/ (function(module, exports, __webpack_require__) {
6465
6466"use strict";
6467
6468
6469Object.defineProperty(exports, "__esModule", {
6470 value: true
6471});
6472
6473var _row = __webpack_require__(7);
6474
6475var _row2 = _interopRequireDefault(_row);
6476
6477var _col = __webpack_require__(5);
6478
6479var _col2 = _interopRequireDefault(_col);
6480
6481__webpack_require__(8);
6482
6483__webpack_require__(6);
6484
6485var _react = __webpack_require__(1);
6486
6487var _react2 = _interopRequireDefault(_react);
6488
6489var _propTypes = __webpack_require__(0);
6490
6491var _propTypes2 = _interopRequireDefault(_propTypes);
6492
6493function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6494
6495/**
6496 常用布局中是基本的使用方法,目的是统一工具栏与内容的间隔
6497
6498 @author Witee<github.com/Witee>
6499 @date 2018-07-04
6500*/
6501
6502var Layout = function Layout(props) {
6503 var style = props.style,
6504 toolbar = props.toolbar,
6505 children = props.children;
6506
6507
6508 return _react2.default.createElement(
6509 _row2.default,
6510 { style: style },
6511 _react2.default.createElement(
6512 _col2.default,
6513 { className: 'margin-bottom-middle' },
6514 toolbar
6515 ),
6516 _react2.default.createElement(
6517 _col2.default,
6518 null,
6519 children
6520 )
6521 );
6522};
6523
6524Layout.propTypes = {
6525 style: _propTypes2.default.object,
6526 toolbar: _propTypes2.default.node,
6527 children: _propTypes2.default.node
6528};
6529
6530Layout.defaultProps = {
6531 style: {},
6532 toolbar: _react2.default.createElement(
6533 'div',
6534 { style: { backgroundColor: 'yellow', minHeight: '3em', minWidth: '35em' } },
6535 'toolbar'
6536 ),
6537 children: _react2.default.createElement(
6538 'div',
6539 { style: { backgroundColor: 'grey', minHeight: '15em', minWidth: '35em' } },
6540 'children'
6541 )
6542};
6543
6544exports.default = Layout;
6545
6546/***/ }),
6547/* 55 */
6548/***/ (function(module, exports, __webpack_require__) {
6549
6550"use strict";
6551
6552
6553Object.defineProperty(exports, "__esModule", {
6554 value: true
6555});
6556
6557var _row = __webpack_require__(7);
6558
6559var _row2 = _interopRequireDefault(_row);
6560
6561var _col = __webpack_require__(5);
6562
6563var _col2 = _interopRequireDefault(_col);
6564
6565var _popconfirm = __webpack_require__(67);
6566
6567var _popconfirm2 = _interopRequireDefault(_popconfirm);
6568
6569var _button = __webpack_require__(22);
6570
6571var _button2 = _interopRequireDefault(_button);
6572
6573var _input = __webpack_require__(9);
6574
6575var _input2 = _interopRequireDefault(_input);
6576
6577__webpack_require__(8);
6578
6579__webpack_require__(6);
6580
6581__webpack_require__(68);
6582
6583__webpack_require__(23);
6584
6585__webpack_require__(10);
6586
6587var _react = __webpack_require__(1);
6588
6589var _react2 = _interopRequireDefault(_react);
6590
6591var _propTypes = __webpack_require__(0);
6592
6593var _propTypes2 = _interopRequireDefault(_propTypes);
6594
6595var _Table = __webpack_require__(19);
6596
6597var _Table2 = _interopRequireDefault(_Table);
6598
6599function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6600
6601/**
6602 常用布局中常用组合方式,工具栏中包含对内容的搜索、删除、添加
6603
6604 @author Witee<github.com/Witee>
6605 @date 2018-07-04
6606*/
6607
6608var Layout = function Layout(props) {
6609 var style = props.style,
6610 searchHidden = props.searchHidden,
6611 searchStyle = props.searchStyle,
6612 searchPlaceholder = props.searchPlaceholder,
6613 onSearch = props.onSearch,
6614 deleteHidden = props.deleteHidden,
6615 deleteDisabled = props.deleteDisabled,
6616 deleteOnClick = props.deleteOnClick,
6617 text = props.text,
6618 addHidden = props.addHidden,
6619 addDisabled = props.addDisabled,
6620 addOnClick = props.addOnClick,
6621 tableColumns = props.tableColumns,
6622 tableDataSource = props.tableDataSource,
6623 tableScroll = props.tableScroll,
6624 tableLoading = props.tableLoading,
6625 tableRowSelection = props.tableRowSelection,
6626 tableTotal = props.tableTotal,
6627 tableCurrentPage = props.tableCurrentPage,
6628 tableRowClassName = props.tableRowClassName,
6629 tableOnChange = props.tableOnChange,
6630 tableExpandedRowRender = props.tableExpandedRowRender,
6631 tableExpandedRowKeys = props.tableExpandedRowKeys,
6632 tableOnExpand = props.tableOnExpand;
6633
6634
6635 return _react2.default.createElement(
6636 _row2.default,
6637 { style: style },
6638 _react2.default.createElement(
6639 _col2.default,
6640 { className: 'margin-bottom-middle', style: { display: 'flex', alignItems: 'center' } },
6641 searchHidden || _react2.default.createElement(_input2.default.Search, {
6642 style: searchStyle,
6643 className: 'margin-right-small',
6644 placeholder: searchPlaceholder,
6645 onSearch: onSearch
6646 }),
6647 deleteHidden || _react2.default.createElement(
6648 _popconfirm2.default,
6649 {
6650 title: '\u786E\u5B9A\u5220\u9664\uFF1F',
6651 okText: '\u786E\u5B9A',
6652 cancelText: '\u53D6\u6D88',
6653 onConfirm: deleteOnClick
6654 },
6655 _react2.default.createElement(
6656 _button2.default,
6657 {
6658 icon: 'delete',
6659 disabled: deleteDisabled,
6660 className: 'margin-right-small'
6661 },
6662 '\u5220\u9664'
6663 )
6664 ),
6665 text,
6666 addHidden || _react2.default.createElement(
6667 _button2.default,
6668 {
6669 icon: 'plus',
6670 disabled: addDisabled,
6671 className: 'justify-self-right',
6672 onClick: addOnClick
6673 },
6674 '\u6DFB\u52A0'
6675 )
6676 ),
6677 _react2.default.createElement(
6678 _col2.default,
6679 null,
6680 _react2.default.createElement(_Table2.default, {
6681 columns: tableColumns,
6682 dataSource: tableDataSource,
6683 scroll: tableScroll,
6684 loading: tableLoading,
6685 rowSelection: tableRowSelection,
6686 total: tableTotal,
6687 currentPage: tableCurrentPage,
6688 rowClassName: tableRowClassName,
6689 onChange: tableOnChange,
6690 expandedRowRender: tableExpandedRowRender,
6691 expandedRowKeys: tableExpandedRowKeys,
6692 onExpand: tableOnExpand
6693 })
6694 )
6695 );
6696};
6697
6698Layout.propTypes = {
6699 style: _propTypes2.default.object,
6700
6701 searchHidden: _propTypes2.default.bool,
6702 searchStyle: _propTypes2.default.object,
6703 searchPlaceholder: _propTypes2.default.string,
6704 onSearch: _propTypes2.default.func,
6705
6706 deleteHidden: _propTypes2.default.bool,
6707 deleteDisabled: _propTypes2.default.bool,
6708 deleteOnClick: _propTypes2.default.func,
6709
6710 text: _propTypes2.default.node,
6711
6712 addHidden: _propTypes2.default.bool,
6713 addDisabled: _propTypes2.default.bool,
6714 addOnClick: _propTypes2.default.func,
6715
6716 tableColumns: _propTypes2.default.array,
6717 tableDataSource: _propTypes2.default.array,
6718 tableScroll: _propTypes2.default.object,
6719 tableLoading: _propTypes2.default.bool,
6720 tableRowSelection: _propTypes2.default.object,
6721 tableTotal: _propTypes2.default.number,
6722 tableCurrentPage: _propTypes2.default.number,
6723 tableRowClassName: _propTypes2.default.func,
6724 tableOnChange: _propTypes2.default.func,
6725 tableExpandedRowRender: _propTypes2.default.func,
6726 tableExpandedRowKeys: _propTypes2.default.array,
6727 tableOnExpand: _propTypes2.default.func
6728};
6729
6730Layout.defaultProps = {
6731 style: {},
6732
6733 searchHidden: false,
6734 searchStyle: { width: '10em' },
6735 searchPlaceholder: '输入关键字搜索',
6736 // eslint-disable-next-line
6737 onSearch: function onSearch(value) {
6738 console.log('onSearch: ', value);
6739 },
6740
6741 deleteHidden: false,
6742 deleteDisabled: false,
6743 // eslint-disable-next-line
6744 deleteOnClick: function deleteOnClick(value) {
6745 console.log('onDeleteClick');
6746 },
6747
6748 text: undefined,
6749
6750 addHidden: false,
6751 addDisabled: false,
6752 // eslint-disable-next-line
6753 addOnClick: function addOnClick(value) {
6754 console.log('onAddClick');
6755 },
6756
6757 tableColumns: [],
6758 tableDataSource: [],
6759 tableScroll: {},
6760 tableLoading: undefined,
6761 tableRowSelection: undefined,
6762 tableTotal: undefined,
6763 tableCurrentPage: undefined,
6764 tableRowClassName: undefined,
6765 tableOnChange: undefined,
6766 tableExpandedRowRender: undefined,
6767 tableExpandedRowKeys: [],
6768 tableOnExpand: undefined
6769};
6770
6771exports.default = Layout;
6772
6773/***/ }),
6774/* 56 */
6775/***/ (function(module, exports, __webpack_require__) {
6776
6777"use strict";
6778
6779
6780var _Input = __webpack_require__(40);
6781
6782var _Input2 = _interopRequireDefault(_Input);
6783
6784var _Placeholder = __webpack_require__(30);
6785
6786var _Placeholder2 = _interopRequireDefault(_Placeholder);
6787
6788var _Input3 = __webpack_require__(29);
6789
6790var _Input4 = _interopRequireDefault(_Input3);
6791
6792var _Layout = __webpack_require__(42);
6793
6794var _Layout2 = _interopRequireDefault(_Layout);
6795
6796var _Chart = __webpack_require__(41);
6797
6798var _Chart2 = _interopRequireDefault(_Chart);
6799
6800var _DataEditor = __webpack_require__(28);
6801
6802var _DataEditor2 = _interopRequireDefault(_DataEditor);
6803
6804__webpack_require__(43);
6805
6806function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6807
6808module.exports = {
6809 PopoverInput: _Input2.default,
6810
6811 Placeholder: _Placeholder2.default,
6812 Input: _Input4.default,
6813 Layout: _Layout2.default,
6814 Chart: _Chart2.default,
6815 DataEditor: _DataEditor2.default
6816};
6817
6818/***/ }),
6819/* 57 */
6820/***/ (function(module, exports, __webpack_require__) {
6821
6822"use strict";
6823
6824
6825Object.defineProperty(exports, "__esModule", {
6826 value: true
6827});
6828
6829// 常用 js 正则表达式
6830
6831var cnEnNumSpaceUnderlineLine = /^[\u4e00-\u9fa5a-zA-Z0-9-_\s]+$/;
6832// 中文和空格
6833var cnSpace = /^[\u4e00-\u9fa5\s]+$/;
6834
6835exports.default = {
6836 cnEnNumSpaceUnderlineLine: cnEnNumSpaceUnderlineLine,
6837 cnSpace: cnSpace
6838};
6839
6840/***/ }),
6841/* 58 */
6842/***/ (function(module, exports, __webpack_require__) {
6843
6844exports = module.exports = __webpack_require__(14)(false);
6845// imports
6846
6847
6848// module
6849exports.push([module.i, "/*\n 定义了一系列控制间距的样式,全部以 em 为单位,即根据 font-size 设置\n em与px换算公式为: px / font-size = em\n 以 font-size = 12px 为例\n small : 4px / 12px = 0.3333em;\n middle : 8px / 12px = 0.6666em;\n large : 16px / 12px = 1.3333em;\n huge : 32px / 12px = 2.6666em;\n*/\n\n/* 元素并列时与左侧的间距 */\n.margin-left-small {\n margin-left: 0.3333em;\n}\n.margin-left-middle {\n margin-left: 0.6666em;\n}\n.margin-left-large {\n margin-left: 1.3333em;\n}\n.margin-left-huge {\n margin-left: 2.6666em;\n}\n/* 元素并列时与右侧的间距 */\n.margin-right-small {\n margin-right: 0.3333em;\n}\n.margin-right-middle {\n margin-right: 0.6666em;\n}\n.margin-right-large {\n margin-right: 1.3333em;\n}\n.margin-right-huge {\n margin-right: 2.6666em;\n}\n\n/* 内边距设置 */\n.padding-around-small {\n padding: 0.3333em;\n}\n.padding-around-middle {\n padding: 0.6666em;\n}\n.padding-around-large {\n padding: 1.3333em;\n}\n.padding-around-huge {\n padding: 2.6666em;\n}\n\n/* 外边距设置 */\n.margin-around-small {\n margin: 0.3333em;\n}\n.margin-around-middle {\n margin: 0.6666em;\n}\n.margin-around-large {\n margin: 1.3333em;\n}\n.margin-around-huge {\n margin: 2.6666em;\n}\n\n.margin-top-bottom-small {\n margin-top: 0.3333em;\n margin-bottom: 0.3333em;\n}\n.margin-top-bottom-middle {\n margin-top: 0.6666em;\n margin-bottom: 0.6666em;\n}\n.margin-top-bottom-large {\n margin-top: 1.3333em;\n margin-bottom: 1.3333em;\n}\n.margin-top-bottom-huge {\n margin-top: 2.6666em;\n margin-bottom: 2.6666em;\n}\n\n.margin-top-small {\n margin-top: 0.3333em;\n}\n.margin-top-middle {\n margin-top: 0.6666em;\n}\n.margin-top-large {\n margin-top: 1.3333em;\n}\n.margin-top-huge {\n margin-top: 2.6666em;\n}\n\n.margin-bottom-small {\n margin-bottom: 0.3333em;\n}\n.margin-bottom-middle {\n margin-bottom: 0.6666em;\n}\n.margin-bottom-large {\n margin-bottom: 1.3333em;\n}\n.margin-bottom-huge {\n margin-bottom: 2.6666em;\n}\n\n/* 选择框 */\n/* 只容纳一个字,如: 日、时 */\n.select-width-mini {\n width: 4em;\n}\n/* 正常的宽度 */\n.select-width-default {\n width: 16.6666em;\n}\n\n.display-flex {\n display: 'flex' !important;\n}\n\n/* 使用flex布局时默认左对齐,使单独一个元素右对齐,需要在父元素上使用 display: flex */\n.justify-self-right {\n margin-left: auto;\n}\n\n/* 水平尾部对齐 */\n.flex-justify-content-end {\n display: 'flex';\n justify-content: 'flex-end';\n}\n/* 水平两端对齐 */\n.flex-justify-content-space-between {\n display: 'flex';\n justify-content: 'space-between';\n}\n/* 每个项目两侧间隔相等 */\n.flex-justify-content-space-around {\n display: 'flex';\n justify-content: 'space-around';\n}\n/* 垂直居中 */\n.flex-align-items-center {\n display: 'flex';\n align-items: 'center';\n}\n\n.font-size-small {\n font-size: 0.3333em;\n}\n.font-size-middle {\n font-size: 0.6666em;\n}\n.font-size-large {\n font-size: 1.3333em;\n}\n.font-size-huge {\n font-size: 2.6666em;\n}\n\n.font-color-red {\n color: #f04134;\n}\n.font-color-yellow {\n color: #ffbf00;\n}\n\n.border-color-red,.border-color-red:hover {\n border-color: #f04134;\n}\n.border-color-yellow {\n border-color: #ffbf00;\n}\n\n/* 光标形状恢复默认 */\n.cursor-default {\n cursor : default;\n}\n/* 光标变成手形状 */\n.cursor-pointer {\n cursor : pointer;\n}\n\n.width-max {\n width: 100%;\n}\n.background-color-white {\n background-color: '#fff';\n}\n\n/* 解决小型表格的表头 padding 生成的左右露出背景色的问题 */\n.ant-table-small .ant-table-header > table, .ant-table-small .ant-table-body > table {\n background-color: #fff;\n}\n", ""]);
6850
6851// exports
6852
6853
6854/***/ }),
6855/* 59 */
6856/***/ (function(module, exports, __webpack_require__) {
6857
6858exports = module.exports = __webpack_require__(14)(false);
6859// imports
6860
6861
6862// module
6863exports.push([module.i, ".baseline-wrapper {\n width: 100%;\n height: 2rem;\n text-align: center;\n margin-top: 5rem;\n}\n\n.baseline-line {\n display: inline-block;\n width: 30%;\n border-top: 0.5px dashed #999;\n border-bottom: 0.5px dashed #999;\n vertical-align: middle;\n margin: 0.5rem;\n}", ""]);
6864
6865// exports
6866
6867
6868/***/ }),
6869/* 60 */
6870/***/ (function(module, exports, __webpack_require__) {
6871
6872exports = module.exports = __webpack_require__(14)(false);
6873// imports
6874
6875
6876// module
6877exports.push([module.i, ".ant-radio-wrapper.ant-radio-wrapper-checked .twitter-picker {\n left: -5rem;\n}\n\nform>.ant-form-item>.ant-form-item-label>label {\n font-weight: 500\n}", ""]);
6878
6879// exports
6880
6881
6882/***/ }),
6883/* 61 */
6884/***/ (function(module, exports, __webpack_require__) {
6885
6886
6887var content = __webpack_require__(59);
6888
6889if(typeof content === 'string') content = [[module.i, content, '']];
6890
6891var transform;
6892var insertInto;
6893
6894
6895
6896var options = {"hmr":true}
6897
6898options.transform = transform
6899options.insertInto = undefined;
6900
6901var update = __webpack_require__(21)(content, options);
6902
6903if(content.locals) module.exports = content.locals;
6904
6905if(false) {
6906 module.hot.accept("!!../../../../node_modules/css-loader/index.js!./style.css", function() {
6907 var newContent = require("!!../../../../node_modules/css-loader/index.js!./style.css");
6908
6909 if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
6910
6911 var locals = (function(a, b) {
6912 var key, idx = 0;
6913
6914 for(key in a) {
6915 if(!b || a[key] !== b[key]) return false;
6916 idx++;
6917 }
6918
6919 for(key in b) idx--;
6920
6921 return idx === 0;
6922 }(content.locals, newContent.locals));
6923
6924 if(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');
6925
6926 update(newContent);
6927 });
6928
6929 module.hot.dispose(function() { update(); });
6930}
6931
6932/***/ }),
6933/* 62 */
6934/***/ (function(module, exports, __webpack_require__) {
6935
6936
6937var content = __webpack_require__(60);
6938
6939if(typeof content === 'string') content = [[module.i, content, '']];
6940
6941var transform;
6942var insertInto;
6943
6944
6945
6946var options = {"hmr":true}
6947
6948options.transform = transform
6949options.insertInto = undefined;
6950
6951var update = __webpack_require__(21)(content, options);
6952
6953if(content.locals) module.exports = content.locals;
6954
6955if(false) {
6956 module.hot.accept("!!../../../../node_modules/css-loader/index.js!./style.css", function() {
6957 var newContent = require("!!../../../../node_modules/css-loader/index.js!./style.css");
6958
6959 if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
6960
6961 var locals = (function(a, b) {
6962 var key, idx = 0;
6963
6964 for(key in a) {
6965 if(!b || a[key] !== b[key]) return false;
6966 idx++;
6967 }
6968
6969 for(key in b) idx--;
6970
6971 return idx === 0;
6972 }(content.locals, newContent.locals));
6973
6974 if(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');
6975
6976 update(newContent);
6977 });
6978
6979 module.hot.dispose(function() { update(); });
6980}
6981
6982/***/ }),
6983/* 63 */
6984/***/ (function(module, exports) {
6985
6986module.exports = require("antd/es/card");
6987
6988/***/ }),
6989/* 64 */
6990/***/ (function(module, exports) {
6991
6992module.exports = require("antd/es/card/style/css");
6993
6994/***/ }),
6995/* 65 */
6996/***/ (function(module, exports) {
6997
6998module.exports = require("antd/es/input-number");
6999
7000/***/ }),
7001/* 66 */
7002/***/ (function(module, exports) {
7003
7004module.exports = require("antd/es/input-number/style/css");
7005
7006/***/ }),
7007/* 67 */
7008/***/ (function(module, exports) {
7009
7010module.exports = require("antd/es/popconfirm");
7011
7012/***/ }),
7013/* 68 */
7014/***/ (function(module, exports) {
7015
7016module.exports = require("antd/es/popconfirm/style/css");
7017
7018/***/ }),
7019/* 69 */
7020/***/ (function(module, exports) {
7021
7022module.exports = require("antd/es/table");
7023
7024/***/ }),
7025/* 70 */
7026/***/ (function(module, exports) {
7027
7028module.exports = require("antd/es/table/style/css");
7029
7030/***/ }),
7031/* 71 */
7032/***/ (function(module, exports) {
7033
7034module.exports = require("echarts-wordcloud");
7035
7036/***/ }),
7037/* 72 */
7038/***/ (function(module, exports) {
7039
7040module.exports = require("echarts/theme/macarons.js");
7041
7042/***/ }),
7043/* 73 */
7044/***/ (function(module, exports) {
7045
7046module.exports = require("moment");
7047
7048/***/ })
7049/******/ ]);
7050//# sourceMappingURL=index.js.map
\No newline at end of file