dtable-statistic 4.0.2-test-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +3 -0
  2. package/es/api/dtable-db-api.js +43 -0
  3. package/es/assets/css/color-picker.css +53 -0
  4. package/es/assets/css/color-rules-popover.css +144 -0
  5. package/es/assets/css/color-theme-dialog.css +40 -0
  6. package/es/assets/css/dashboard.css +562 -0
  7. package/es/assets/css/dialog.css +415 -0
  8. package/es/assets/css/mobile-dashboard.module.css +91 -0
  9. package/es/assets/css/slider.css +77 -0
  10. package/es/assets/css/statistic-chart.module.css +11 -0
  11. package/es/assets/css/statistic-custom-title.module.css +3 -0
  12. package/es/assets/css/statistic-custom.module.css +4 -0
  13. package/es/assets/css/statistic-numeric-column-item.module.css +43 -0
  14. package/es/assets/css/statistic-time-picker.module.css +21 -0
  15. package/es/assets/css/theme.css +61 -0
  16. package/es/assets/images/icon.png +0 -0
  17. package/es/calculator/base-calculator.js +111 -0
  18. package/es/calculator/basic-chart-calculator.js +571 -0
  19. package/es/calculator/combination-calculator.js +296 -0
  20. package/es/calculator/compare-bar-calculator.js +291 -0
  21. package/es/calculator/completeness-calculator.js +307 -0
  22. package/es/calculator/copy-value.js +47 -0
  23. package/es/calculator/dashboard-calculator.js +146 -0
  24. package/es/calculator/heat-map-calculator.js +225 -0
  25. package/es/calculator/horizontal-bar-calculator.js +100 -0
  26. package/es/calculator/index.js +88 -0
  27. package/es/calculator/map-calculator.js +169 -0
  28. package/es/calculator/mirror-calculator.js +217 -0
  29. package/es/calculator/number-card-calculator.js +135 -0
  30. package/es/calculator/pivot-table-calculator.js +810 -0
  31. package/es/calculator/scatter-calculator.js +150 -0
  32. package/es/calculator/thread-manager.js +70 -0
  33. package/es/calculator/trend-calculator.js +204 -0
  34. package/es/calculator/workers/basic-chart-calculator-worker.js +410 -0
  35. package/es/calculator/workers/calculator.worker.js +22 -0
  36. package/es/calculator/workers/card-calculator-worker.js +28 -0
  37. package/es/calculator/workers/combination-calculator-worker.js +257 -0
  38. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +149 -0
  39. package/es/calculator/workers/completeness-calculator-worker.js +153 -0
  40. package/es/calculator/workers/dashboard-calculator-worker.js +56 -0
  41. package/es/calculator/workers/mirror-calculator-worker.js +132 -0
  42. package/es/calculator/workers/pivot-table-calculator-worker.js +615 -0
  43. package/es/calculator/workers/scatter-calculator-worker.js +67 -0
  44. package/es/calculator/workers/trend-calculator-worker.js +93 -0
  45. package/es/calculator/world-map-calculator.js +193 -0
  46. package/es/components/common-add-tool.js +19 -0
  47. package/es/components/dialog/chart-addition-edit-dialog.js +89 -0
  48. package/es/components/dialog/chart-addition-widgets/chart-selector.js +261 -0
  49. package/es/components/dialog/chart-addition-widgets/statistic-chart-selector.module.css +74 -0
  50. package/es/components/dialog/color-theme-dialog.js +71 -0
  51. package/es/components/dialog/enlarged-chart-dialog.js +73 -0
  52. package/es/components/dialog/new-table-dialog.js +113 -0
  53. package/es/components/dialog/new-view-dialog.js +87 -0
  54. package/es/components/dialog/rename-view-dialog.js +87 -0
  55. package/es/components/dialog/statistic-record-dialog/index.css +114 -0
  56. package/es/components/dialog/statistic-record-dialog/index.js +174 -0
  57. package/es/components/dialog/table-select-dialog.js +93 -0
  58. package/es/components/dropdown-menu/statistic-dropdown-menu.js +94 -0
  59. package/es/components/dtable-popover.js +109 -0
  60. package/es/components/dtable-search-input.js +137 -0
  61. package/es/components/dtable-select.js +104 -0
  62. package/es/components/index.js +11 -0
  63. package/es/components/loading.js +8 -0
  64. package/es/components/modal-portal.js +36 -0
  65. package/es/components/popover/color-rules/color-rule.js +179 -0
  66. package/es/components/popover/color-rules/index.js +87 -0
  67. package/es/components/popover/color-rules/rule-filters/filter.js +214 -0
  68. package/es/components/popover/color-rules/rule-filters/index.css +214 -0
  69. package/es/components/popover/color-rules/rule-filters/index.js +97 -0
  70. package/es/components/popover/color-rules/rule-filters/number-input.js +85 -0
  71. package/es/components/popover/color-rules-popover.js +213 -0
  72. package/es/components/popover/color-selector-popover.js +85 -0
  73. package/es/components/seatable-radio/index.css +51 -0
  74. package/es/components/seatable-radio/index.js +28 -0
  75. package/es/components/select/index.js +2 -0
  76. package/es/components/select/option-group.css +104 -0
  77. package/es/components/select/option-group.js +225 -0
  78. package/es/components/select/option.js +51 -0
  79. package/es/components/select/select.css +211 -0
  80. package/es/components/select/select.js +157 -0
  81. package/es/components/toast/alert.js +130 -0
  82. package/es/components/toast/index.js +3 -0
  83. package/es/components/toast/toast.js +164 -0
  84. package/es/components/toast/toastManager.js +150 -0
  85. package/es/components/toast/toaster.js +64 -0
  86. package/es/constants/color-rules.js +8 -0
  87. package/es/constants/dtable-select-style.js +61 -0
  88. package/es/constants/event-types.js +1 -0
  89. package/es/constants/index.js +501 -0
  90. package/es/constants/key-codes.js +102 -0
  91. package/es/constants/zIndexes.js +1 -0
  92. package/es/custom-g2.js +614 -0
  93. package/es/dashboard.js +408 -0
  94. package/es/desktop-dashboard.js +299 -0
  95. package/es/index.js +33 -0
  96. package/es/locale/index.js +17 -0
  97. package/es/locale/lang/de.js +237 -0
  98. package/es/locale/lang/en.js +237 -0
  99. package/es/locale/lang/fr.js +237 -0
  100. package/es/locale/lang/zh_CN.js +237 -0
  101. package/es/mobile-dashboard.js +103 -0
  102. package/es/model/collaborators.js +11 -0
  103. package/es/model/stat-item.js +340 -0
  104. package/es/model/statistic-dashboard.js +8 -0
  105. package/es/service/chart-service.js +192 -0
  106. package/es/service/dashboard-service.js +415 -0
  107. package/es/stat-editor/chart-name-editor.js +75 -0
  108. package/es/stat-editor/index.js +74 -0
  109. package/es/stat-editor/stat-settings/advance-chart-settings/basic-number-card-settings.js +149 -0
  110. package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +415 -0
  111. package/es/stat-editor/stat-settings/advance-chart-settings/dashboard-chart-settings.js +193 -0
  112. package/es/stat-editor/stat-settings/advance-chart-settings/geo-granularity-settings.js +13 -0
  113. package/es/stat-editor/stat-settings/advance-chart-settings/heat-map-settings.js +107 -0
  114. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +332 -0
  115. package/es/stat-editor/stat-settings/advance-chart-settings/map-settings.js +170 -0
  116. package/es/stat-editor/stat-settings/advance-chart-settings/mirror-settings.js +141 -0
  117. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +219 -0
  118. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/heat-map-settings.js +89 -0
  119. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/map-setting.js +132 -0
  120. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +319 -0
  121. package/es/stat-editor/stat-settings/advance-chart-settings/trend-chart-settings.js +138 -0
  122. package/es/stat-editor/stat-settings/advance-chart-settings/world-map-settings.js +135 -0
  123. package/es/stat-editor/stat-settings/basic-chart-settings/advance-bar-chart-settings.js +156 -0
  124. package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +147 -0
  125. package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +195 -0
  126. package/es/stat-editor/stat-settings/basic-chart-settings/custom-bar-settings.js +126 -0
  127. package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +169 -0
  128. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-axis-group-settings.js +352 -0
  129. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-bar-settings.js +145 -0
  130. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-group-chart-settings.js +153 -0
  131. package/es/stat-editor/stat-settings/basic-chart-settings/index.js +466 -0
  132. package/es/stat-editor/stat-settings/basic-chart-settings/pie-settings.js +183 -0
  133. package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +542 -0
  134. package/es/stat-editor/stat-settings/basic-chart-settings/scatter-settings.js +111 -0
  135. package/es/stat-editor/stat-settings/basic-chart-settings/stack-item-settings.js +86 -0
  136. package/es/stat-editor/stat-settings/basic-chart-settings/stacks-settings.js +169 -0
  137. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +273 -0
  138. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/completeness-style.js +105 -0
  139. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +243 -0
  140. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/label-font-size-editor.js +65 -0
  141. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +318 -0
  142. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/time-compare-style.js +49 -0
  143. package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +124 -0
  144. package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +150 -0
  145. package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +267 -0
  146. package/es/stat-editor/stat-settings/basic-chart-settings/timer-picker.js +109 -0
  147. package/es/stat-editor/stat-settings/basic-chart-settings/y-axis-group-settings.js +351 -0
  148. package/es/stat-editor/stat-settings/color-setting/color-group-selector.js +60 -0
  149. package/es/stat-editor/stat-settings/color-setting/color-picker.js +129 -0
  150. package/es/stat-editor/stat-settings/color-setting/color-use-type-selector.js +348 -0
  151. package/es/stat-editor/stat-settings/public-setting/axis-label-position-setting.js +102 -0
  152. package/es/stat-editor/stat-settings/public-setting/base-settings.js +124 -0
  153. package/es/stat-editor/stat-settings/public-setting/calender.js +124 -0
  154. package/es/stat-editor/stat-settings/public-setting/column-settings.js +15 -0
  155. package/es/stat-editor/stat-settings/public-setting/custom-title-setting.js +60 -0
  156. package/es/stat-editor/stat-settings/public-setting/data-sort-setting.js +57 -0
  157. package/es/stat-editor/stat-settings/public-setting/ind-toggle-setting.js +41 -0
  158. package/es/stat-editor/stat-settings/public-setting/min-max-setting.js +64 -0
  159. package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +118 -0
  160. package/es/stat-editor/stat-settings/public-setting/toggle-setting.js +39 -0
  161. package/es/stat-list/chart-preview.js +139 -0
  162. package/es/stat-list/index.js +275 -0
  163. package/es/stat-view/area-chart.js +521 -0
  164. package/es/stat-view/bar-chart.js +568 -0
  165. package/es/stat-view/base-chart.js +44 -0
  166. package/es/stat-view/basic-number-card.js +255 -0
  167. package/es/stat-view/combination-chart.js +558 -0
  168. package/es/stat-view/compare-chart.js +485 -0
  169. package/es/stat-view/completeness-chart.js +389 -0
  170. package/es/stat-view/custom-bar.js +433 -0
  171. package/es/stat-view/dashboard-chart.js +317 -0
  172. package/es/stat-view/heat-map.js +501 -0
  173. package/es/stat-view/horizontal-bar-chart.js +569 -0
  174. package/es/stat-view/index.js +183 -0
  175. package/es/stat-view/line-chart.js +505 -0
  176. package/es/stat-view/map.js +428 -0
  177. package/es/stat-view/mirror.js +285 -0
  178. package/es/stat-view/pie-chart.js +326 -0
  179. package/es/stat-view/pivot-table/index.js +206 -0
  180. package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +133 -0
  181. package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +164 -0
  182. package/es/stat-view/pivot-table/statistic-pivot-table.module.css +132 -0
  183. package/es/stat-view/pivot-table/two-dimension-table.js +344 -0
  184. package/es/stat-view/ring-chart.js +416 -0
  185. package/es/stat-view/scatter-chart.js +367 -0
  186. package/es/stat-view/treemap-chart.js +318 -0
  187. package/es/stat-view/trend-chart.js +299 -0
  188. package/es/stat-view/world-map.js +443 -0
  189. package/es/tabs/index.js +252 -0
  190. package/es/tabs/statistic-tabs.module.css +154 -0
  191. package/es/tabs/tab.js +167 -0
  192. package/es/utils/basic-chart-utils.js +24 -0
  193. package/es/utils/cell-format.js +110 -0
  194. package/es/utils/cell-value.js +27 -0
  195. package/es/utils/collaborator.js +31 -0
  196. package/es/utils/color-utils.js +112 -0
  197. package/es/utils/column-utils.js +18 -0
  198. package/es/utils/column.js +13 -0
  199. package/es/utils/common-utils.js +303 -0
  200. package/es/utils/date-format.js +65 -0
  201. package/es/utils/export-table-utils.js +632 -0
  202. package/es/utils/index.js +26 -0
  203. package/es/utils/object.js +26 -0
  204. package/es/utils/row-utils.js +115 -0
  205. package/es/utils/search.js +67 -0
  206. package/es/utils/sql-utils.js +293 -0
  207. package/es/utils/stat-utils.js +353 -0
  208. package/es/utils/trend-utils.js +136 -0
  209. package/index.js +1 -0
  210. package/package.json +188 -0
@@ -0,0 +1,104 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+ import Select, { components } from 'react-select';
7
+ import { MenuSelectStyle } from '../constants';
8
+ var DropdownIndicator = function DropdownIndicator(props) {
9
+ return components.DropdownIndicator && /*#__PURE__*/React.createElement(components.DropdownIndicator, props, /*#__PURE__*/React.createElement("span", {
10
+ className: "dtable-font dtable-icon-drop-down",
11
+ style: {
12
+ fontSize: '12px'
13
+ }
14
+ }));
15
+ };
16
+ var MenuList = function MenuList(props) {
17
+ return /*#__PURE__*/React.createElement("div", {
18
+ onClick: function onClick(e) {
19
+ return e.nativeEvent.stopImmediatePropagation();
20
+ },
21
+ onMouseDown: function onMouseDown(e) {
22
+ return e.nativeEvent.stopImmediatePropagation();
23
+ }
24
+ }, /*#__PURE__*/React.createElement(components.MenuList, props, props.children));
25
+ };
26
+ var Option = function Option(props) {
27
+ return /*#__PURE__*/React.createElement("div", {
28
+ style: props.data.style
29
+ }, /*#__PURE__*/React.createElement(components.Option, props));
30
+ };
31
+ var DTableSelect = /*#__PURE__*/function (_React$Component) {
32
+ _inherits(DTableSelect, _React$Component);
33
+ var _super = _createSuper(DTableSelect);
34
+ function DTableSelect() {
35
+ var _this;
36
+ _classCallCheck(this, DTableSelect);
37
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
38
+ args[_key] = arguments[_key];
39
+ }
40
+ _this = _super.call.apply(_super, [this].concat(args));
41
+ _this.getMenuPortalTarget = function () {
42
+ var menuPortalTarget = _this.props.menuPortalTarget;
43
+ return document.querySelector(menuPortalTarget);
44
+ };
45
+ return _this;
46
+ }
47
+ _createClass(DTableSelect, [{
48
+ key: "render",
49
+ value: function render() {
50
+ var _this$props = this.props,
51
+ options = _this$props.options,
52
+ onChange = _this$props.onChange,
53
+ value = _this$props.value,
54
+ isSearchable = _this$props.isSearchable,
55
+ placeholder = _this$props.placeholder,
56
+ isMulti = _this$props.isMulti,
57
+ menuPosition = _this$props.menuPosition,
58
+ isClearable = _this$props.isClearable,
59
+ noOptionsMessage = _this$props.noOptionsMessage,
60
+ classNamePrefix = _this$props.classNamePrefix,
61
+ innerRef = _this$props.innerRef,
62
+ isDisabled = _this$props.isDisabled;
63
+ return /*#__PURE__*/React.createElement(Select, {
64
+ value: value,
65
+ isDisabled: isDisabled,
66
+ ref: innerRef,
67
+ onChange: onChange,
68
+ options: options,
69
+ isMulti: isMulti,
70
+ classNamePrefix: classNamePrefix,
71
+ styles: MenuSelectStyle,
72
+ components: {
73
+ Option: Option,
74
+ DropdownIndicator: DropdownIndicator,
75
+ MenuList: MenuList
76
+ },
77
+ placeholder: placeholder,
78
+ isSearchable: isSearchable,
79
+ isClearable: isClearable,
80
+ menuPosition: menuPosition || 'fixed' // when use default menuPosition(absolute), menuPortalTarget is unnecessary.
81
+ ,
82
+ menuShouldScrollIntoView: true,
83
+ menuPortalTarget: this.getMenuPortalTarget(),
84
+ captureMenuScroll: false,
85
+ noOptionsMessage: noOptionsMessage
86
+ });
87
+ }
88
+ }]);
89
+ return DTableSelect;
90
+ }(React.Component);
91
+ DTableSelect.defaultProps = {
92
+ options: [],
93
+ value: {},
94
+ isDisabled: false,
95
+ isSearchable: false,
96
+ isClearable: false,
97
+ placeholder: '',
98
+ isMulti: false,
99
+ menuPortalTarget: '.modal',
100
+ noOptionsMessage: function noOptionsMessage() {
101
+ return null;
102
+ }
103
+ };
104
+ export default DTableSelect;
@@ -0,0 +1,11 @@
1
+ import CommonAddTool from './common-add-tool';
2
+ import DTablePopover from './dtable-popover';
3
+ import DtableSearchInput from './dtable-search-input';
4
+ import DTableSelect from './dtable-select';
5
+ import Loading from './loading';
6
+ import ModalPortal from './modal-portal';
7
+ import NewTableDialog from './dialog/new-table-dialog';
8
+ import SeaTableRadio from './seatable-radio';
9
+ import Select from './select';
10
+ import toaster from './toast';
11
+ export { toaster, CommonAddTool, DTablePopover, DtableSearchInput, DTableSelect, Loading, ModalPortal, NewTableDialog, SeaTableRadio, Select };
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ function Loading() {
3
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
+ return /*#__PURE__*/React.createElement("span", Object.assign({}, props, {
5
+ className: "loading-icon loading-tip"
6
+ }));
7
+ }
8
+ export default Loading;
@@ -0,0 +1,36 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+ import ReactDOM from 'react-dom';
7
+ var modalRoot = document.getElementById('modal-wrapper');
8
+ var ModalPortal = /*#__PURE__*/function (_React$Component) {
9
+ _inherits(ModalPortal, _React$Component);
10
+ var _super = _createSuper(ModalPortal);
11
+ function ModalPortal(props) {
12
+ var _this;
13
+ _classCallCheck(this, ModalPortal);
14
+ _this = _super.call(this, props);
15
+ _this.el = document.createElement('div');
16
+ return _this;
17
+ }
18
+ _createClass(ModalPortal, [{
19
+ key: "componentDidMount",
20
+ value: function componentDidMount() {
21
+ modalRoot.appendChild(this.el);
22
+ }
23
+ }, {
24
+ key: "componentWillUnmount",
25
+ value: function componentWillUnmount() {
26
+ modalRoot.removeChild(this.el);
27
+ }
28
+ }, {
29
+ key: "render",
30
+ value: function render() {
31
+ return ReactDOM.createPortal(this.props.children, this.el);
32
+ }
33
+ }]);
34
+ return ModalPortal;
35
+ }(React.Component);
36
+ export default ModalPortal;
@@ -0,0 +1,179 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
+ import React, { Component } from 'react';
7
+ import classnames from 'classnames';
8
+ import intl from 'react-intl-universal';
9
+ import RuleFilters from './rule-filters';
10
+ import ColorSelectorPopover from '../color-selector-popover';
11
+ import { CommonAddTool } from '../../index';
12
+ var ColorRule = /*#__PURE__*/function (_Component) {
13
+ _inherits(ColorRule, _Component);
14
+ var _super = _createSuper(ColorRule);
15
+ function ColorRule(props) {
16
+ var _this;
17
+ _classCallCheck(this, ColorRule);
18
+ _this = _super.call(this, props);
19
+ _this.onColorPopoverToggle = function (event) {
20
+ event.stopPropagation();
21
+ event.nativeEvent.stopImmediatePropagation();
22
+ _this.setState({
23
+ isColorPopoverShow: !_this.state.isColorPopoverShow
24
+ });
25
+ };
26
+ _this.hideColorPopover = function () {
27
+ _this.setState({
28
+ isColorPopoverShow: false
29
+ });
30
+ };
31
+ _this.onSelectColor = function (color) {
32
+ var _this$props = _this.props,
33
+ rule = _this$props.rule,
34
+ ruleIndex = _this$props.ruleIndex;
35
+ var updatedRule = Object.assign({}, rule, {
36
+ color: color
37
+ });
38
+ _this.props.updateRule(ruleIndex, updatedRule);
39
+ };
40
+ _this.deleteRule = function (e) {
41
+ e.nativeEvent.stopImmediatePropagation();
42
+ e.stopPropagation();
43
+ var ruleIndex = _this.props.ruleIndex;
44
+ _this.props.deleteRule(ruleIndex);
45
+ };
46
+ _this.addFilter = function () {
47
+ var _this$props2 = _this.props,
48
+ colorRuleTypes = _this$props2.colorRuleTypes,
49
+ rule = _this$props2.rule;
50
+ var filters = rule.filters;
51
+ var defaultFilter = _this.props.generateDefaultFilter(colorRuleTypes[0]);
52
+ if (!defaultFilter || filters.length >= 8) return;
53
+ var updatedFilters = _toConsumableArray(filters);
54
+ updatedFilters.push(defaultFilter);
55
+ _this.updateFilters(updatedFilters);
56
+ };
57
+ _this.updateFilter = function (filterIndex, updatedFilter) {
58
+ var rule = _this.props.rule;
59
+ var filters = rule.filters;
60
+ var updatedFilters = _toConsumableArray(filters);
61
+ updatedFilters[filterIndex] = updatedFilter;
62
+ _this.updateFilters(updatedFilters);
63
+ };
64
+ _this.modifyFilterConjunction = function (filterConjunction) {
65
+ var _this$props3 = _this.props,
66
+ rule = _this$props3.rule,
67
+ ruleIndex = _this$props3.ruleIndex;
68
+ var updatedRule = Object.assign({}, rule, {
69
+ filter_conjunction: filterConjunction
70
+ });
71
+ _this.props.updateRule(ruleIndex, updatedRule);
72
+ };
73
+ _this.updateFilters = function (filters) {
74
+ var _this$props4 = _this.props,
75
+ rule = _this$props4.rule,
76
+ ruleIndex = _this$props4.ruleIndex;
77
+ if (filters.length === 0) {
78
+ _this.props.deleteRule(ruleIndex);
79
+ } else {
80
+ var updatedRule = Object.assign({}, rule, {
81
+ filters: filters
82
+ });
83
+ _this.props.updateRule(ruleIndex, updatedRule);
84
+ }
85
+ };
86
+ _this.onMouseDown = function (e) {
87
+ e.stopPropagation();
88
+ e.nativeEvent.stopImmediatePropagation();
89
+ };
90
+ _this.state = {
91
+ isColorPopoverShow: false
92
+ };
93
+ return _this;
94
+ }
95
+ _createClass(ColorRule, [{
96
+ key: "render",
97
+ value: function render() {
98
+ var _this2 = this;
99
+ var _this$props5 = this.props,
100
+ labelColorConfigs = _this$props5.labelColorConfigs,
101
+ colorRuleTypes = _this$props5.colorRuleTypes,
102
+ rule = _this$props5.rule,
103
+ isEditing = _this$props5.isEditing,
104
+ ruleIndex = _this$props5.ruleIndex,
105
+ ruleName = _this$props5.ruleName;
106
+ var color = rule.color,
107
+ filter_conjunction = rule.filter_conjunction,
108
+ filters = rule.filters;
109
+ var target = "row-color-rule-".concat(ruleIndex);
110
+ var selectedColorConfig = this.props.getColorConfigByColor(color);
111
+ var ruleTitle = ruleName || intl.get('Define_rule');
112
+ var canAddFilter = filters.length < 8;
113
+ return /*#__PURE__*/React.createElement("div", {
114
+ className: classnames('statistic-color-rule-item', {
115
+ 'editing': isEditing
116
+ })
117
+ }, /*#__PURE__*/React.createElement("div", {
118
+ className: "d-flex justify-content-between pr-4"
119
+ }, /*#__PURE__*/React.createElement("div", {
120
+ className: "statistic-color-rule-title",
121
+ onClick: function onClick() {
122
+ return _this2.props.setEditingRuleIndex(ruleIndex);
123
+ }
124
+ }, /*#__PURE__*/React.createElement("span", {
125
+ ref: function ref(_ref) {
126
+ return _this2.rowColorRule = _ref;
127
+ },
128
+ className: "statistic-color-rule-dropdown",
129
+ style: {
130
+ backgroundColor: color
131
+ },
132
+ onMouseDown: this.onMouseDown,
133
+ onClick: this.onColorPopoverToggle,
134
+ id: target
135
+ }, /*#__PURE__*/React.createElement("i", {
136
+ className: "dtable-font dtable-icon-drop-down",
137
+ style: {
138
+ color: selectedColorConfig.text_color
139
+ }
140
+ }), this.state.isColorPopoverShow && /*#__PURE__*/React.createElement(ColorSelectorPopover, {
141
+ placement: "bottom-start",
142
+ hideArrow: false,
143
+ target: target,
144
+ selectedColor: color,
145
+ colorConfigs: labelColorConfigs,
146
+ toggle: this.hideColorPopover,
147
+ onSelectColor: this.onSelectColor
148
+ })), /*#__PURE__*/React.createElement("div", {
149
+ className: classnames('statistic-color-rule-name text-truncate', {
150
+ 'invalid': !!ruleName
151
+ }),
152
+ title: ruleTitle
153
+ }, ruleTitle)), /*#__PURE__*/React.createElement("span", {
154
+ className: "statistic-delete-color-rule"
155
+ }, /*#__PURE__*/React.createElement("i", {
156
+ className: "dtable-font dtable-icon-delete",
157
+ onClick: this.deleteRule
158
+ }))), isEditing && /*#__PURE__*/React.createElement("div", {
159
+ className: "statistic-color-rule-filters-wrapper"
160
+ }, /*#__PURE__*/React.createElement(RuleFilters, {
161
+ filterTypes: colorRuleTypes,
162
+ filters: rule.filters,
163
+ filterConjunction: filter_conjunction,
164
+ getFilterConfigByType: this.props.getFilterConfigByType,
165
+ modifyConjunction: this.modifyFilterConjunction,
166
+ updateFilters: this.updateFilters
167
+ }), /*#__PURE__*/React.createElement(CommonAddTool, {
168
+ className: classnames('statistic-btn-add-color-rule-filter', {
169
+ 'disabled': !canAddFilter
170
+ }),
171
+ callBack: this.addFilter,
172
+ footerName: intl.get('Add_condition'),
173
+ addIconClassName: "popover-add-icon"
174
+ })));
175
+ }
176
+ }]);
177
+ return ColorRule;
178
+ }(Component);
179
+ export default ColorRule;
@@ -0,0 +1,87 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
+ import React, { Component } from 'react';
7
+ import ColorRule from './color-rule';
8
+ var ColorRules = /*#__PURE__*/function (_Component) {
9
+ _inherits(ColorRules, _Component);
10
+ var _super = _createSuper(ColorRules);
11
+ function ColorRules(props) {
12
+ var _this;
13
+ _classCallCheck(this, ColorRules);
14
+ _this = _super.call(this, props);
15
+ _this.setEditingRuleIndex = function (editingRuleIndex) {
16
+ if (_this.state.editingRuleIndex === editingRuleIndex) {
17
+ _this.setState({
18
+ editingRuleIndex: -1
19
+ });
20
+ return;
21
+ }
22
+ _this.setState({
23
+ editingRuleIndex: editingRuleIndex
24
+ }, function () {
25
+ _this.props.resetPopoverPosition();
26
+ });
27
+ };
28
+ _this.updateRule = function (ruleIndex, updatedRule) {
29
+ var rules = _this.props.rules;
30
+ var isAddingFilter = updatedRule.filters.length > rules[ruleIndex].filters.length;
31
+ var updatedRules = _toConsumableArray(rules);
32
+ updatedRules[ruleIndex] = updatedRule;
33
+ _this.props.updateRules({
34
+ colorRules: updatedRules,
35
+ callback: function callback() {
36
+ isAddingFilter && _this.props.resetPopoverPosition();
37
+ }
38
+ });
39
+ };
40
+ _this.deleteRule = function (ruleIndex) {
41
+ var rules = _this.props.rules;
42
+ var updatedRules = _toConsumableArray(rules);
43
+ updatedRules.splice(ruleIndex, 1);
44
+ _this.props.updateRules({
45
+ colorRules: updatedRules
46
+ });
47
+ };
48
+ _this.state = {
49
+ editingRuleIndex: -1
50
+ };
51
+ return _this;
52
+ }
53
+ _createClass(ColorRules, [{
54
+ key: "render",
55
+ value: function render() {
56
+ var _this2 = this;
57
+ var _this$props = this.props,
58
+ rules = _this$props.rules,
59
+ labelColorConfigs = _this$props.labelColorConfigs,
60
+ colorRuleTypes = _this$props.colorRuleTypes,
61
+ rulesName = _this$props.rulesName;
62
+ var editingRuleIndex = this.state.editingRuleIndex;
63
+ return /*#__PURE__*/React.createElement("div", {
64
+ className: "statistic-color-rules"
65
+ }, rules.map(function (rule, ruleIndex) {
66
+ var isEditing = editingRuleIndex === ruleIndex;
67
+ return /*#__PURE__*/React.createElement(ColorRule, {
68
+ key: "statistic-color-rule-".concat(ruleIndex),
69
+ ruleIndex: ruleIndex,
70
+ rule: rule,
71
+ labelColorConfigs: labelColorConfigs,
72
+ colorRuleTypes: colorRuleTypes,
73
+ isEditing: isEditing,
74
+ ruleName: rulesName[ruleIndex],
75
+ setEditingRuleIndex: _this2.setEditingRuleIndex,
76
+ getColorConfigByColor: _this2.props.getColorConfigByColor,
77
+ getFilterConfigByType: _this2.props.getFilterConfigByType,
78
+ generateDefaultFilter: _this2.props.generateDefaultFilter,
79
+ updateRule: _this2.updateRule,
80
+ deleteRule: _this2.deleteRule
81
+ });
82
+ }));
83
+ }
84
+ }]);
85
+ return ColorRules;
86
+ }(Component);
87
+ export default ColorRules;
@@ -0,0 +1,214 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+ import intl from 'react-intl-universal';
7
+ import { Select } from '../../../index';
8
+ import NumberInput from './number-input';
9
+ import { COLOR_RULE_FILTER_TYPE_MAP, EMPTY_PREDICATE } from '../../../../constants/color-rules';
10
+ var INPUT_CMP_TYPE_MAP = {
11
+ NUMBER: 'number'
12
+ };
13
+ var Filter = /*#__PURE__*/function (_React$Component) {
14
+ _inherits(Filter, _React$Component);
15
+ var _super = _createSuper(Filter);
16
+ function Filter(_props) {
17
+ var _this;
18
+ _classCallCheck(this, Filter);
19
+ _this = _super.call(this, _props);
20
+ _this.initSelectOptions = function (props) {
21
+ var filter = props.filter;
22
+ var _this$props$getFilter = _this.props.getFilterConfigByType(filter.filter_type),
23
+ filterPredicateList = _this$props$getFilter.filterPredicateList;
24
+ _this.predicateOptions = filterPredicateList ? filterPredicateList.map(function (predicate) {
25
+ if (EMPTY_PREDICATE.includes(predicate)) {
26
+ return null;
27
+ }
28
+ return {
29
+ value: predicate,
30
+ label: /*#__PURE__*/React.createElement("span", {
31
+ className: "select-option-name"
32
+ }, intl.get(predicate))
33
+ };
34
+ }).filter(Boolean) : [];
35
+ };
36
+ _this.onDeleteFilter = function (event) {
37
+ event.nativeEvent.stopImmediatePropagation();
38
+ var index = _this.props.index;
39
+ _this.props.deleteFilter(index);
40
+ };
41
+ _this.onSelectConjunction = function (filterConjunction) {
42
+ if (filterConjunction === _this.props.filterConjunction) {
43
+ return;
44
+ }
45
+ _this.props.modifyConjunction(filterConjunction);
46
+ };
47
+ _this.onSelectFilterBy = function (filterType) {
48
+ var _this$props = _this.props,
49
+ index = _this$props.index,
50
+ filter = _this$props.filter;
51
+ if (filter.filter_type === filterType) return;
52
+ var _this$props$getFilter2 = _this.props.getFilterConfigByType(filter.filter_type),
53
+ filterPredicateList = _this$props$getFilter2.filterPredicateList;
54
+ if (!filterPredicateList) return;
55
+ var updatedFilter = Object.assign({}, filter, {
56
+ filter_type: filterType,
57
+ filter_predicate: filterPredicateList[0]
58
+ });
59
+ _this.props.updateFilter(index, updatedFilter);
60
+ };
61
+ _this.onSelectPredicate = function (predicate) {
62
+ var _this$props2 = _this.props,
63
+ index = _this$props2.index,
64
+ filter = _this$props2.filter;
65
+ if (filter.filter_predicate === predicate) {
66
+ return;
67
+ }
68
+ var updatedFilter = Object.assign({}, filter, {
69
+ filter_predicate: predicate
70
+ });
71
+ _this.props.updateFilter(index, updatedFilter);
72
+ };
73
+ _this.onNumberFilterTermChanged = function (newFilterTerm) {
74
+ var _this$props3 = _this.props,
75
+ index = _this$props3.index,
76
+ filter = _this$props3.filter;
77
+ if (newFilterTerm === filter.filter_term) return;
78
+ var newFilter = Object.assign({}, filter, {
79
+ filter_term: newFilterTerm
80
+ });
81
+ _this.props.updateFilter(index, newFilter);
82
+ };
83
+ _this.getInputComponent = function (type) {
84
+ var filter = _this.props.filter;
85
+ var filter_term = filter.filter_term;
86
+ switch (type) {
87
+ case INPUT_CMP_TYPE_MAP.NUMBER:
88
+ {
89
+ var number = filter_term || filter_term == 0 ? filter_term : '';
90
+ return /*#__PURE__*/React.createElement(NumberInput, {
91
+ value: number,
92
+ onChange: _this.onNumberFilterTermChanged
93
+ });
94
+ }
95
+ default:
96
+ {
97
+ return null;
98
+ }
99
+ }
100
+ };
101
+ _this.renderConjunction = function () {
102
+ var _this$props4 = _this.props,
103
+ index = _this$props4.index,
104
+ filterConjunction = _this$props4.filterConjunction,
105
+ conjunctionOptions = _this$props4.conjunctionOptions;
106
+ switch (index) {
107
+ case 0:
108
+ {
109
+ return null;
110
+ }
111
+ case 1:
112
+ {
113
+ var selectedConjunction = conjunctionOptions.find(function (option) {
114
+ return option.value === filterConjunction;
115
+ });
116
+ return /*#__PURE__*/React.createElement(Select, {
117
+ value: selectedConjunction,
118
+ options: conjunctionOptions,
119
+ onSelectOption: _this.onSelectConjunction
120
+ });
121
+ }
122
+ default:
123
+ {
124
+ return /*#__PURE__*/React.createElement("span", {
125
+ className: "selected-conjunction-show"
126
+ }, intl.get(filterConjunction));
127
+ }
128
+ }
129
+ };
130
+ _this.renderFilterTerm = function () {
131
+ var filter = _this.props.filter;
132
+ var filter_type = filter.filter_type,
133
+ filter_predicate = filter.filter_predicate;
134
+
135
+ // predicate is empty or not empty
136
+ if (EMPTY_PREDICATE.includes(filter_predicate)) {
137
+ return null;
138
+ }
139
+ switch (filter_type) {
140
+ case COLOR_RULE_FILTER_TYPE_MAP.NUMERIC_VALUE:
141
+ {
142
+ return _this.getInputComponent(INPUT_CMP_TYPE_MAP.NUMBER);
143
+ }
144
+ default:
145
+ {
146
+ return null;
147
+ }
148
+ }
149
+ };
150
+ _this.initSelectOptions(_props);
151
+ return _this;
152
+ }
153
+ _createClass(Filter, [{
154
+ key: "UNSAFE_componentWillReceiveProps",
155
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
156
+ var filter = this.props.filter;
157
+ if (nextProps.filter !== filter) {
158
+ this.initSelectOptions(nextProps);
159
+ }
160
+ }
161
+ }, {
162
+ key: "shouldComponentUpdate",
163
+ value: function shouldComponentUpdate(nextProps) {
164
+ var currentProps = this.props;
165
+ var shouldUpdated = nextProps.index !== currentProps.index || nextProps.filter !== currentProps.filter || nextProps.filterConjunction !== currentProps.filterConjunction;
166
+ return shouldUpdated;
167
+ }
168
+ }, {
169
+ key: "render",
170
+ value: function render() {
171
+ var _this$props5 = this.props,
172
+ filterTypeOptions = _this$props5.filterTypeOptions,
173
+ filter = _this$props5.filter;
174
+ var filter_type = filter.filter_type,
175
+ filter_predicate = filter.filter_predicate;
176
+ var selectedFilterType = filterTypeOptions.find(function (option) {
177
+ return option.value === filter_type;
178
+ });
179
+ var selectedPredicate = this.predicateOptions.find(function (option) {
180
+ return option.value === filter_predicate;
181
+ });
182
+ return /*#__PURE__*/React.createElement("div", {
183
+ className: "filter-item"
184
+ }, /*#__PURE__*/React.createElement("div", {
185
+ className: "delete-filter",
186
+ onClick: this.onDeleteFilter
187
+ }, /*#__PURE__*/React.createElement("i", {
188
+ className: "dtable-font dtable-icon-fork-number"
189
+ })), /*#__PURE__*/React.createElement("div", {
190
+ className: "condition"
191
+ }, /*#__PURE__*/React.createElement("div", {
192
+ className: "filter-conjunction"
193
+ }, this.renderConjunction()), /*#__PURE__*/React.createElement("div", {
194
+ className: "filter-container"
195
+ }, /*#__PURE__*/React.createElement("div", {
196
+ className: "filter-column"
197
+ }, /*#__PURE__*/React.createElement(Select, {
198
+ value: selectedFilterType,
199
+ options: filterTypeOptions,
200
+ onSelectOption: this.onSelectFilterBy
201
+ })), /*#__PURE__*/React.createElement("div", {
202
+ className: "filter-predicate ml-2"
203
+ }, /*#__PURE__*/React.createElement(Select, {
204
+ value: selectedPredicate,
205
+ options: this.predicateOptions,
206
+ onSelectOption: this.onSelectPredicate
207
+ })), /*#__PURE__*/React.createElement("div", {
208
+ className: "filter-term ml-2"
209
+ }, this.renderFilterTerm()))));
210
+ }
211
+ }]);
212
+ return Filter;
213
+ }(React.Component);
214
+ export default Filter;