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,351 @@
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, Fragment } from 'react';
7
+ import intl from 'react-intl-universal';
8
+ import { DTableSelect } from '../../../components';
9
+ import GroupbySettings from './groupby-settings';
10
+ import SummaryMethodSettings from './summary-method-setting';
11
+ import NumericSummaryItem from '../public-setting/numeric-summary-item';
12
+ import { GROUPBY_TYPE, STATISTICS_COUNT_SHOW, SUMMARY_METHOD, SUMMARY_TYPE } from '../../../constants';
13
+ var GROUP_TYPES = {
14
+ COUNT: 'count',
15
+ SINGLE_NUMERIC_COLUMN: 'single_numeric_column',
16
+ MULTIPLE_NUMERIC_COLUMN: 'multiple_numeric_column'
17
+ };
18
+ var GroupingSettings = /*#__PURE__*/function (_Component) {
19
+ _inherits(GroupingSettings, _Component);
20
+ var _super = _createSuper(GroupingSettings);
21
+ function GroupingSettings(props) {
22
+ var _this;
23
+ _classCallCheck(this, GroupingSettings);
24
+ _this = _super.call(this, props);
25
+ _this.getSummaryMethodsOptions = function () {
26
+ return SUMMARY_METHOD.map(function (m) {
27
+ return {
28
+ value: m,
29
+ label: /*#__PURE__*/React.createElement("span", {
30
+ className: 'select-module select-module-name'
31
+ }, intl.get(STATISTICS_COUNT_SHOW[m]))
32
+ };
33
+ });
34
+ };
35
+ _this.getDefaultColumnGroupbyType = function (_ref) {
36
+ var y_axis_summary_type = _ref.y_axis_summary_type;
37
+ if (y_axis_summary_type === SUMMARY_TYPE.ADVANCED) {
38
+ return GROUP_TYPES.SINGLE_NUMERIC_COLUMN;
39
+ } else if (y_axis_summary_type === SUMMARY_TYPE.ADVANCED) {
40
+ return GROUP_TYPES.SINGLE_NUMERIC_COLUMN;
41
+ }
42
+ return GROUP_TYPES.COUNT;
43
+ };
44
+ _this.getGroupTypeOptions = function () {
45
+ return [{
46
+ value: GROUP_TYPES.COUNT,
47
+ label: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
48
+ className: 'select-module select-module-name'
49
+ }, intl.get(STATISTICS_COUNT_SHOW['count'])), /*#__PURE__*/React.createElement("div", {
50
+ className: "summary-type-explanation"
51
+ }, intl.get('Count_the_number_of_records_in_each_group')))
52
+ }, {
53
+ value: GROUP_TYPES.SINGLE_NUMERIC_COLUMN,
54
+ label: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
55
+ className: 'select-module select-module-name'
56
+ }, intl.get(STATISTICS_COUNT_SHOW['advanced'])), /*#__PURE__*/React.createElement("div", {
57
+ className: "summary-type-explanation"
58
+ }, intl.get('Compute_the_sum_maximum_or_minimum_value_of_records_in_each_group_by_a_field')))
59
+ }, {
60
+ value: GROUP_TYPES.MULTIPLE_NUMERIC_COLUMN,
61
+ label: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
62
+ className: 'select-module select-module-name'
63
+ }, intl.get('Summarize_multiple_fields')), /*#__PURE__*/React.createElement("div", {
64
+ className: "summary-type-explanation"
65
+ }, intl.get('Compute_the_sum_maximum_or_minimum_value_of_records_in_each_group_by_multiple_fields')))
66
+ }];
67
+ };
68
+ _this.onChangeGroupType = function (option) {
69
+ var value = option.value;
70
+ if (value === _this.state.columnGroupbyType) return;
71
+ var statItem = _this.props.statItem;
72
+ var _ref2 = _this.props.statItem || {},
73
+ column_groupby_column_key = _ref2.column_groupby_column_key,
74
+ column_groupby_date_granularity = _ref2.column_groupby_date_granularity,
75
+ column_groupby_geolocation_granularity = _ref2.column_groupby_geolocation_granularity,
76
+ column_groupby_multiple_numeric_column = _ref2.column_groupby_multiple_numeric_column,
77
+ column_groupby_numeric_columns = _ref2.column_groupby_numeric_columns,
78
+ x_axis_column_key = _ref2.x_axis_column_key,
79
+ y_axis_summary_type = _ref2.y_axis_summary_type,
80
+ y_axis_column_key = _ref2.y_axis_column_key,
81
+ y_axis_summary_method = _ref2.y_axis_summary_method;
82
+ if (value === GROUP_TYPES.SINGLE_NUMERIC_COLUMN) {
83
+ y_axis_summary_type = SUMMARY_TYPE.ADVANCED;
84
+ y_axis_column_key = null;
85
+ column_groupby_multiple_numeric_column = false;
86
+ column_groupby_numeric_columns = [];
87
+ column_groupby_date_granularity = null;
88
+ column_groupby_column_key = null;
89
+ column_groupby_geolocation_granularity = null;
90
+ y_axis_summary_method = SUMMARY_METHOD[0];
91
+ } else if (value === GROUP_TYPES.COUNT) {
92
+ column_groupby_multiple_numeric_column = false;
93
+ column_groupby_numeric_columns = [];
94
+ var groupColumn = _this.props.columnGroupbyColumnsOptions.find(function (column) {
95
+ var key = column.key,
96
+ type = column.type;
97
+ return key !== x_axis_column_key && (type !== 'date' || type !== 'geolocation');
98
+ }) || {};
99
+ column_groupby_column_key = groupColumn.key;
100
+ y_axis_summary_type = SUMMARY_TYPE.COUNT;
101
+ y_axis_column_key = null;
102
+ column_groupby_date_granularity = null;
103
+ column_groupby_geolocation_granularity = null;
104
+ } else if (value === GROUP_TYPES.MULTIPLE_NUMERIC_COLUMN) {
105
+ y_axis_summary_type = SUMMARY_TYPE.ADVANCED;
106
+ column_groupby_multiple_numeric_column = true;
107
+ column_groupby_numeric_columns = [];
108
+ y_axis_summary_type = SUMMARY_TYPE.ADVANCED;
109
+ y_axis_column_key = _this.props.numericColumnsOptions.length > 0 ? _this.props.numericColumnsOptions[0].value.key : null;
110
+ column_groupby_date_granularity = null;
111
+ column_groupby_geolocation_granularity = null;
112
+ y_axis_summary_method = SUMMARY_METHOD[0];
113
+ }
114
+ var updated = {
115
+ column_groupby_column_key: column_groupby_column_key,
116
+ column_groupby_date_granularity: column_groupby_date_granularity,
117
+ column_groupby_geolocation_granularity: column_groupby_geolocation_granularity,
118
+ column_groupby_multiple_numeric_column: column_groupby_multiple_numeric_column,
119
+ column_groupby_numeric_columns: column_groupby_numeric_columns,
120
+ y_axis_summary_type: y_axis_summary_type,
121
+ y_axis_column_key: y_axis_column_key,
122
+ y_axis_summary_method: y_axis_summary_method
123
+ };
124
+ _this.setState({
125
+ columnGroupbyType: value
126
+ }, function () {
127
+ _this.props.updateStatItem(Object.assign({}, statItem, updated));
128
+ });
129
+ };
130
+ _this.getSelectedGroupType = function () {
131
+ var statItem = _this.props.statItem;
132
+ var column_groupby_multiple_numeric_column = statItem.column_groupby_multiple_numeric_column,
133
+ y_axis_summary_type = statItem.y_axis_summary_type;
134
+ if (column_groupby_multiple_numeric_column) {
135
+ return _this.groupTypeOptions.find(function (item) {
136
+ return item.value === GROUP_TYPES.MULTIPLE_NUMERIC_COLUMN;
137
+ });
138
+ }
139
+ if (y_axis_summary_type === SUMMARY_TYPE.COUNT) {
140
+ return _this.groupTypeOptions[0];
141
+ }
142
+ if (y_axis_summary_type === SUMMARY_TYPE.ADVANCED) {
143
+ return _this.groupTypeOptions[1];
144
+ }
145
+ };
146
+ _this.onSelectGroupbyColumn = function (type, groupbyColumnKey, groupbyDateGranularity, groupbyGeolocationGranularity) {
147
+ var updated = {
148
+ column_groupby_column_key: groupbyColumnKey,
149
+ column_groupby_date_granularity: groupbyDateGranularity,
150
+ column_groupby_geolocation_granularity: groupbyGeolocationGranularity
151
+ };
152
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, updated));
153
+ };
154
+ _this.onSelectGroupbyDateGranularity = function (type, dateGranularity) {
155
+ var updated = {
156
+ column_groupby_date_granularity: dateGranularity
157
+ };
158
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, updated));
159
+ };
160
+ _this.onSelectGroupbyGeolocationGranularity = function (type, geolocationGranularity) {
161
+ var updated = {
162
+ column_groupby_geolocation_granularity: geolocationGranularity
163
+ };
164
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, updated));
165
+ };
166
+ _this.updateSummaryMethod = function (summaryMethod) {
167
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
168
+ y_axis_summary_method: summaryMethod
169
+ }));
170
+ };
171
+ _this.updateSummaryColumn = function (summaryColumnKey) {
172
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
173
+ y_axis_column_key: summaryColumnKey
174
+ }));
175
+ };
176
+ _this.renderGroupbyNumericColumns = function () {
177
+ var statItem = _this.props.statItem;
178
+ var column_groupby_numeric_columns = statItem.column_groupby_numeric_columns;
179
+ if (!column_groupby_numeric_columns || !Array.isArray(column_groupby_numeric_columns)) return null;
180
+ return column_groupby_numeric_columns.map(function (item, index) {
181
+ return /*#__PURE__*/React.createElement(NumericSummaryItem, {
182
+ statItem: statItem,
183
+ key: "number-column-".concat(index),
184
+ numericColumnsOptions: _this.props.numericColumnsOptions,
185
+ summaryMethodOptions: _this.summaryMethodsOptions,
186
+ index: index + 1,
187
+ numericColumnItem: item,
188
+ onDeleteNumericColumnItem: _this.onDeleteNumericColumnItem,
189
+ onChangeColumnOption: _this.onChangeGroupbyNumericColumn,
190
+ onChangeSummaryMethod: _this.onChangeSummaryMethod
191
+ });
192
+ });
193
+ };
194
+ _this.onAddNumericColumn = function () {
195
+ var _this$props = _this.props,
196
+ statItem = _this$props.statItem,
197
+ numericColumnsOptions = _this$props.numericColumnsOptions;
198
+ var _ref3 = statItem || {},
199
+ column_groupby_numeric_columns = _ref3.column_groupby_numeric_columns;
200
+ var newNumericColumnKey = numericColumnsOptions[0].value.key;
201
+ if (Array.isArray(column_groupby_numeric_columns)) {
202
+ column_groupby_numeric_columns = _toConsumableArray(column_groupby_numeric_columns);
203
+ column_groupby_numeric_columns.push({
204
+ column_key: newNumericColumnKey,
205
+ summary_method: SUMMARY_METHOD[0]
206
+ });
207
+ } else {
208
+ column_groupby_numeric_columns = [{
209
+ column_key: newNumericColumnKey,
210
+ summary_method: SUMMARY_METHOD[0]
211
+ }];
212
+ }
213
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
214
+ column_groupby_numeric_columns: _toConsumableArray(column_groupby_numeric_columns)
215
+ }));
216
+ };
217
+ _this.onChangeGroupbyNumericColumn = function (index, columnOption) {
218
+ if (index === 0) {
219
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
220
+ y_axis_column_key: columnOption.value.key
221
+ }));
222
+ } else {
223
+ var _ref4 = _this.props.statItem || {},
224
+ column_groupby_numeric_columns = _ref4.column_groupby_numeric_columns;
225
+ column_groupby_numeric_columns = column_groupby_numeric_columns || [];
226
+ column_groupby_numeric_columns = _toConsumableArray(column_groupby_numeric_columns);
227
+ var selectedItem = column_groupby_numeric_columns[index - 1];
228
+ selectedItem = Object.assign({}, selectedItem, {
229
+ column_key: columnOption.value.key
230
+ });
231
+ column_groupby_numeric_columns[index - 1] = selectedItem;
232
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
233
+ column_groupby_numeric_columns: column_groupby_numeric_columns
234
+ }));
235
+ }
236
+ };
237
+ _this.onDeleteNumericColumnItem = function (index) {
238
+ var _ref5 = _this.props.statItem || {},
239
+ column_groupby_numeric_columns = _ref5.column_groupby_numeric_columns;
240
+ column_groupby_numeric_columns = column_groupby_numeric_columns || [];
241
+ column_groupby_numeric_columns = _toConsumableArray(column_groupby_numeric_columns);
242
+ column_groupby_numeric_columns.splice(index - 1, 1);
243
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
244
+ column_groupby_numeric_columns: _toConsumableArray(column_groupby_numeric_columns)
245
+ }));
246
+ };
247
+ _this.onChangeSummaryMethod = function (index, option) {
248
+ if (index === 0) {
249
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
250
+ y_axis_summary_method: option.value
251
+ }));
252
+ } else {
253
+ var _ref6 = _this.props.statItem || {},
254
+ column_groupby_numeric_columns = _ref6.column_groupby_numeric_columns;
255
+ column_groupby_numeric_columns = column_groupby_numeric_columns || [];
256
+ column_groupby_numeric_columns = _toConsumableArray(column_groupby_numeric_columns);
257
+ var selectedItem = column_groupby_numeric_columns[index - 1];
258
+ selectedItem = Object.assign({}, selectedItem, {
259
+ summary_method: option.value
260
+ });
261
+ column_groupby_numeric_columns[index - 1] = selectedItem;
262
+ _this.props.updateStatItem(Object.assign({}, _this.props.statItem, {
263
+ column_groupby_numeric_columns: column_groupby_numeric_columns
264
+ }));
265
+ }
266
+ };
267
+ _this.groupTypeOptions = _this.getGroupTypeOptions();
268
+ _this.summaryMethodsOptions = _this.getSummaryMethodsOptions();
269
+ _this.state = {
270
+ columnGroupbyType: _this.getDefaultColumnGroupbyType(props.statItem)
271
+ };
272
+ return _this;
273
+ }
274
+ _createClass(GroupingSettings, [{
275
+ key: "render",
276
+ value: function render() {
277
+ var _this$props2 = this.props,
278
+ label = _this$props2.label,
279
+ statItem = _this$props2.statItem,
280
+ selectedTable = _this$props2.selectedTable,
281
+ columnGroupbyColumnsOptions = _this$props2.columnGroupbyColumnsOptions,
282
+ numericColumnsOptions = _this$props2.numericColumnsOptions,
283
+ dateGranularityOptions = _this$props2.dateGranularityOptions,
284
+ geolocationGranularityOptions = _this$props2.geolocationGranularityOptions;
285
+ var selectedGroupItem = this.getSelectedGroupType();
286
+ var _ref7 = statItem || {},
287
+ y_axis_summary_type = _ref7.y_axis_summary_type,
288
+ y_axis_column_key = _ref7.y_axis_column_key,
289
+ y_axis_summary_method = _ref7.y_axis_summary_method,
290
+ column_groupby_column_key = _ref7.column_groupby_column_key,
291
+ column_groupby_date_granularity = _ref7.column_groupby_date_granularity,
292
+ column_groupby_geolocation_granularity = _ref7.column_groupby_geolocation_granularity,
293
+ column_groupby_multiple_numeric_column = _ref7.column_groupby_multiple_numeric_column;
294
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
295
+ className: "statistic-chart-parameter-item"
296
+ }, /*#__PURE__*/React.createElement("label", null, label), /*#__PURE__*/React.createElement(DTableSelect, {
297
+ classNamePrefix: "statistic-chart-summary-types",
298
+ value: selectedGroupItem,
299
+ onChange: this.onChangeGroupType,
300
+ options: this.groupTypeOptions
301
+ })), y_axis_summary_type === SUMMARY_TYPE.ADVANCED && (column_groupby_multiple_numeric_column ? /*#__PURE__*/React.createElement(NumericSummaryItem, {
302
+ statItem: statItem,
303
+ key: "number-column-".concat(0),
304
+ numericColumnsOptions: numericColumnsOptions,
305
+ summaryMethodOptions: this.summaryMethodsOptions,
306
+ index: 0,
307
+ numericColumnItem: {
308
+ column_key: y_axis_column_key,
309
+ summary_method: y_axis_summary_method
310
+ },
311
+ onChangeColumnOption: this.onChangeGroupbyNumericColumn,
312
+ onChangeSummaryMethod: this.onChangeSummaryMethod
313
+ }) : /*#__PURE__*/React.createElement(SummaryMethodSettings, {
314
+ statItem: statItem,
315
+ numericColumnsOptions: numericColumnsOptions,
316
+ summaryType: y_axis_summary_type,
317
+ summaryColumnKey: y_axis_column_key,
318
+ summaryMethod: y_axis_summary_method,
319
+ getSelectedColumnOption: this.props.getSelectedColumnOption,
320
+ onChangeSummaryType: this.updatedSummaryType,
321
+ onSelectSummaryMethod: this.updateSummaryMethod,
322
+ onSelectNumericColumn: this.updateSummaryColumn,
323
+ updateStatItem: this.props.updateStatItem
324
+ })), column_groupby_multiple_numeric_column && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
325
+ className: "statistics-add-number"
326
+ }, this.renderGroupbyNumericColumns()), Array.isArray(numericColumnsOptions) && numericColumnsOptions.length > 0 && /*#__PURE__*/React.createElement("div", {
327
+ className: "statistics-add-number-column",
328
+ onClick: this.onAddNumericColumn
329
+ }, /*#__PURE__*/React.createElement("span", {
330
+ className: "number-column-item dtable-font dtable-icon-add-table"
331
+ }), /*#__PURE__*/React.createElement("span", {
332
+ className: "number-column-item add-number-column-description"
333
+ }, intl.get('Add_new_numeric_column')))), (!column_groupby_multiple_numeric_column && y_axis_summary_type === SUMMARY_TYPE.ADVANCED || y_axis_summary_type === SUMMARY_TYPE.COUNT) && /*#__PURE__*/React.createElement(GroupbySettings, {
334
+ selectedTable: selectedTable,
335
+ columnsOptions: columnGroupbyColumnsOptions,
336
+ dateGranularityOptions: dateGranularityOptions,
337
+ geolocationGranularityOptions: geolocationGranularityOptions,
338
+ label: intl.get('Group_by'),
339
+ groupbyColumnKey: column_groupby_column_key,
340
+ groupbyDateGranularity: column_groupby_date_granularity,
341
+ groupbyGeolocationGranularity: column_groupby_geolocation_granularity,
342
+ getSelectedColumnOption: this.props.getSelectedColumnOption,
343
+ onSelectGroupbyColumn: this.onSelectGroupbyColumn.bind(this, GROUPBY_TYPE.COLUMN),
344
+ onSelectGroupbyDateGranularity: this.onSelectGroupbyDateGranularity.bind(this, GROUPBY_TYPE.COLUMN),
345
+ onSelectGroupbyGeolocationGranularity: this.onSelectGroupbyGeolocationGranularity.bind(this, GROUPBY_TYPE.COLUMN)
346
+ }));
347
+ }
348
+ }]);
349
+ return GroupingSettings;
350
+ }(Component);
351
+ export default GroupingSettings;
@@ -0,0 +1,60 @@
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, { Component } from 'react';
6
+ import intl from 'react-intl-universal';
7
+ import { DTableSelect } from '../../../components';
8
+ import { COLOR_OPTIONS } from '../../../constants';
9
+ var ColorGroupSelector = /*#__PURE__*/function (_Component) {
10
+ _inherits(ColorGroupSelector, _Component);
11
+ var _super = _createSuper(ColorGroupSelector);
12
+ function ColorGroupSelector(props) {
13
+ var _this;
14
+ _classCallCheck(this, ColorGroupSelector);
15
+ _this = _super.call(this, props);
16
+ _this.getColorOptions = function () {
17
+ return COLOR_OPTIONS.map(function (colorOption) {
18
+ return {
19
+ value: colorOption.name,
20
+ label: /*#__PURE__*/React.createElement("div", {
21
+ className: "statistic-color-option d-flex"
22
+ }, colorOption.exampleColors.map(function (color, index) {
23
+ return /*#__PURE__*/React.createElement("span", {
24
+ className: "statistic-color-block",
25
+ key: index,
26
+ style: {
27
+ background: "".concat(color)
28
+ }
29
+ });
30
+ }))
31
+ };
32
+ });
33
+ };
34
+ _this.changeColor = function (option) {
35
+ var selected = option.value;
36
+ _this.props.onChangeColor(selected);
37
+ };
38
+ _this.colorOptions = _this.getColorOptions();
39
+ return _this;
40
+ }
41
+ _createClass(ColorGroupSelector, [{
42
+ key: "render",
43
+ value: function render() {
44
+ var currentColor = this.props.currentColor;
45
+ var currentOption = this.colorOptions.filter(function (item) {
46
+ return item.value == currentColor;
47
+ })[0] || this.colorOptions[0];
48
+ return /*#__PURE__*/React.createElement("div", {
49
+ className: "statistic-chart-parameter-item"
50
+ }, /*#__PURE__*/React.createElement("label", null, intl.get('Color')), /*#__PURE__*/React.createElement(DTableSelect, {
51
+ classNamePrefix: 'chart-color',
52
+ value: currentOption,
53
+ onChange: this.changeColor,
54
+ options: this.colorOptions
55
+ }));
56
+ }
57
+ }]);
58
+ return ColorGroupSelector;
59
+ }(Component);
60
+ export default ColorGroupSelector;
@@ -0,0 +1,129 @@
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 { ChromePicker } from 'react-color';
7
+ import '../../../assets/css/color-picker.css';
8
+ var COVER = {
9
+ position: 'fixed',
10
+ top: '0px',
11
+ right: '0px',
12
+ bottom: '0px',
13
+ left: '0px'
14
+ };
15
+ var ColorPicker = /*#__PURE__*/function (_React$PureComponent) {
16
+ _inherits(ColorPicker, _React$PureComponent);
17
+ var _super = _createSuper(ColorPicker);
18
+ function ColorPicker(props) {
19
+ var _this;
20
+ _classCallCheck(this, ColorPicker);
21
+ _this = _super.call(this, props);
22
+ _this.onInputChanged = function (event) {
23
+ var value = event.target.value;
24
+ if (value === _this.state.activeColor) return;
25
+ // todo valid color
26
+ _this.updateColor(value);
27
+ _this.setState({
28
+ activeColor: value
29
+ });
30
+ };
31
+ _this.onPickColorToggle = function () {
32
+ var readOnly = _this.props.readOnly;
33
+ if (readOnly) return;
34
+ _this.setState({
35
+ isShowColorPicker: !_this.state.isShowColorPicker
36
+ });
37
+ };
38
+ _this.onPickChanged = function (color) {
39
+ if (color.hex === _this.state.activeColor) return;
40
+ _this.updateColor(color);
41
+ _this.setState({
42
+ activeColor: color.hex
43
+ });
44
+ };
45
+ _this.updateColor = function (color) {
46
+ var isPickAllColor = _this.props.isPickAllColor;
47
+ var colorValue = isPickAllColor ? color : color.hex;
48
+ _this.props.onColorChanged(colorValue);
49
+ };
50
+ _this.getPopoverStyle = function () {
51
+ if (!_this.colorPickerContainerRef) return {};
52
+ var _this$colorPickerCont = _this.colorPickerContainerRef.getBoundingClientRect(),
53
+ top = _this$colorPickerCont.top,
54
+ height = _this$colorPickerCont.height;
55
+ var clientHeight = document.body.clientHeight;
56
+ var selectTop = top + height;
57
+ if (clientHeight - selectTop < 247) {
58
+ // 247: ChromePicker's height
59
+ return {
60
+ position: 'absolute',
61
+ left: 0,
62
+ bottom: '2.375rem',
63
+ zIndex: '2'
64
+ };
65
+ }
66
+ return {
67
+ position: 'absolute',
68
+ left: 0,
69
+ zIndex: '2'
70
+ };
71
+ };
72
+ _this.state = {
73
+ isShowColorPicker: false,
74
+ activeColor: props.activeColor
75
+ };
76
+ _this.colorPickerContainerRef = null;
77
+ return _this;
78
+ }
79
+ _createClass(ColorPicker, [{
80
+ key: "UNSAFE_componentWillReceiveProps",
81
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
82
+ this.setState({
83
+ activeColor: nextProps.activeColor
84
+ });
85
+ }
86
+ }, {
87
+ key: "render",
88
+ value: function render() {
89
+ var _this2 = this;
90
+ var activeColor = this.state.activeColor;
91
+ var isWhiteColor = activeColor && activeColor.toUpperCase() === '#FFFFFF';
92
+ var readOnly = this.props.readOnly;
93
+ return /*#__PURE__*/React.createElement("div", {
94
+ className: "statistic-chart-color-picker-container",
95
+ ref: function ref(_ref) {
96
+ return _this2.colorPickerContainerRef = _ref;
97
+ }
98
+ }, /*#__PURE__*/React.createElement("div", {
99
+ className: "picker-control ".concat(readOnly ? 'readOnly' : '')
100
+ }, /*#__PURE__*/React.createElement("div", {
101
+ className: "color-control ".concat(isWhiteColor ? 'white-color' : '', " ").concat(readOnly ? 'readOnly' : ''),
102
+ onClick: this.onPickColorToggle,
103
+ style: {
104
+ background: activeColor
105
+ }
106
+ }), /*#__PURE__*/React.createElement("input", {
107
+ className: "text-control",
108
+ type: "text",
109
+ value: activeColor,
110
+ onChange: this.onInputChanged,
111
+ readOnly: readOnly
112
+ })), this.state.isShowColorPicker && /*#__PURE__*/React.createElement("div", {
113
+ style: this.getPopoverStyle()
114
+ }, /*#__PURE__*/React.createElement("div", {
115
+ style: COVER,
116
+ onClick: this.onPickColorToggle
117
+ }), /*#__PURE__*/React.createElement(ChromePicker, {
118
+ disableAlpha: true,
119
+ color: activeColor,
120
+ onChange: this.onPickChanged
121
+ })));
122
+ }
123
+ }]);
124
+ return ColorPicker;
125
+ }(React.PureComponent);
126
+ ColorPicker.defaultProps = {
127
+ activeColor: '#000000'
128
+ };
129
+ export default ColorPicker;