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,415 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
5
+ import StatisticDashBoard from '../model/statistic-dashboard';
6
+ import StatItem from '../model/stat-item';
7
+ import { hasOwnProperty } from '../utils';
8
+ import { generatorUniqueId } from '../utils/common-utils';
9
+ import { DASHBOARD_ACTION_TYPE, STAT_TYPE, SUMMARY_TYPE } from '../constants';
10
+ var ADVANCED_STATISTICS_NAME = 'advanced-statistics';
11
+ var DashBoardService = /*#__PURE__*/function () {
12
+ function DashBoardService(_ref) {
13
+ var value = _ref.value,
14
+ defaultDashboardName = _ref.defaultDashboardName,
15
+ chartCalculator = _ref.chartCalculator,
16
+ updateStatistics = _ref.updateStatistics,
17
+ deletePluginSettings = _ref.deletePluginSettings;
18
+ _classCallCheck(this, DashBoardService);
19
+ this.defaultDashboardName = defaultDashboardName;
20
+ this.chartCalculator = chartCalculator;
21
+ this.initStatistics(value, updateStatistics, deletePluginSettings);
22
+ }
23
+ _createClass(DashBoardService, [{
24
+ key: "initStatistics",
25
+ value: function initStatistics(value, updateStatistics, deletePluginSettings) {
26
+ this.statistics = value && value.statistics || [];
27
+ if (this.statistics.length === 0) {
28
+ this.statistics = [new StatisticDashBoard({
29
+ _id: generatorUniqueId([]),
30
+ stat_items: [],
31
+ name: this.defaultDashboardName
32
+ })];
33
+ return;
34
+ }
35
+ this.needSave = false;
36
+
37
+ // convert to advance-statistic
38
+ if (!hasOwnProperty(this.statistics[0], 'stat_items')) {
39
+ this.needSave = true;
40
+ this.convert2AdvanceStatistic();
41
+ }
42
+ this.mergeAdvancedStatistics(value, deletePluginSettings);
43
+ this.filterInvalidCharts();
44
+ if (this.needSave) {
45
+ this.needSave = false;
46
+ updateStatistics(this.statistics);
47
+ }
48
+ }
49
+ }, {
50
+ key: "convert2AdvanceStatistic",
51
+ value: function convert2AdvanceStatistic() {
52
+ var _this = this;
53
+ var statItems = this.statistics.map(function (chart) {
54
+ var type = chart.type;
55
+ switch (type) {
56
+ case STAT_TYPE.PIVOT_TABLE:
57
+ {
58
+ return _this.convertPivotTable(chart);
59
+ }
60
+ case STAT_TYPE.BAR:
61
+ {
62
+ return _this.convertChartBar(chart);
63
+ }
64
+ case STAT_TYPE.LINE:
65
+ {
66
+ return _this.convertChartLine(chart);
67
+ }
68
+ case STAT_TYPE.PIE:
69
+ {
70
+ return new StatItem(_objectSpread(_objectSpread({}, chart), {}, {
71
+ type: STAT_TYPE.RING
72
+ }));
73
+ }
74
+ default:
75
+ {
76
+ return null;
77
+ }
78
+ }
79
+ }).filter(Boolean);
80
+ this.statistics = [new StatisticDashBoard({
81
+ _id: generatorUniqueId([]),
82
+ stat_items: statItems,
83
+ name: this.defaultDashboardName
84
+ })];
85
+ }
86
+ }, {
87
+ key: "convertPivotTable",
88
+ value: function convertPivotTable(chart) {
89
+ var summary_type = chart.summary_type,
90
+ summary_columns_option = chart.summary_columns_option;
91
+ var convertedChart = _objectSpread({}, chart);
92
+ if (summary_type === SUMMARY_TYPE.ADVANCED && summary_columns_option && summary_columns_option.length > 0) {
93
+ convertedChart.column_groupby_multiple_numeric_column = true;
94
+ }
95
+ return new StatItem(convertedChart);
96
+ }
97
+ }, {
98
+ key: "convertChartBar",
99
+ value: function convertChartBar(chart) {
100
+ var column_groupby_column_key = chart.column_groupby_column_key,
101
+ y_axis_use_stack = chart.y_axis_use_stack,
102
+ y_axis_summary_method = chart.y_axis_summary_method,
103
+ column_groupby_multiple_numeric_column = chart.column_groupby_multiple_numeric_column,
104
+ column_groupby_numeric_column_keys = chart.column_groupby_numeric_column_keys;
105
+ var convertedChart = _objectSpread({}, chart);
106
+ var isGroupbyMultipleNumericColumns = column_groupby_multiple_numeric_column && column_groupby_numeric_column_keys && column_groupby_numeric_column_keys.length > 0;
107
+ if (column_groupby_column_key || isGroupbyMultipleNumericColumns) {
108
+ convertedChart.type = STAT_TYPE.BAR_GROUP;
109
+ if (y_axis_use_stack) {
110
+ convertedChart.type = STAT_TYPE.BAR_STACK;
111
+ }
112
+ if (isGroupbyMultipleNumericColumns) {
113
+ convertedChart.column_groupby_multiple_numeric_column = column_groupby_multiple_numeric_column;
114
+ convertedChart.column_groupby_numeric_columns = column_groupby_numeric_column_keys.map(function (key) {
115
+ if (!key) return null;
116
+ return {
117
+ column_key: key,
118
+ summary_method: y_axis_summary_method
119
+ };
120
+ }).filter(Boolean);
121
+ }
122
+ }
123
+ return new StatItem(convertedChart);
124
+ }
125
+ }, {
126
+ key: "convertChartLine",
127
+ value: function convertChartLine(chart) {
128
+ var column_groupby_column_key = chart.column_groupby_column_key,
129
+ column_groupby_multiple_numeric_column = chart.column_groupby_multiple_numeric_column,
130
+ column_groupby_numeric_column_keys = chart.column_groupby_numeric_column_keys,
131
+ y_axis_summary_method = chart.y_axis_summary_method;
132
+ var isGroupbyMultipleNumericColumns = column_groupby_multiple_numeric_column && column_groupby_numeric_column_keys && column_groupby_numeric_column_keys.length > 0;
133
+ var convertedChart = _objectSpread({}, chart);
134
+ if (column_groupby_column_key) {
135
+ convertedChart.type = STAT_TYPE.GROUP_LINE;
136
+ if (isGroupbyMultipleNumericColumns) {
137
+ convertedChart.column_groupby_multiple_numeric_column = column_groupby_multiple_numeric_column;
138
+ convertedChart.column_groupby_numeric_columns = column_groupby_numeric_column_keys.map(function (key) {
139
+ if (!key) return null;
140
+ return {
141
+ column_key: key,
142
+ summary_method: y_axis_summary_method
143
+ };
144
+ }).filter(Boolean);
145
+ }
146
+ }
147
+ return new StatItem(convertedChart);
148
+ }
149
+ }, {
150
+ key: "mergeAdvancedStatistics",
151
+ value: function mergeAdvancedStatistics(value, deletePluginSettings) {
152
+ if (!value || !hasOwnProperty(value, 'plugin_settings') || !hasOwnProperty(value.plugin_settings, ADVANCED_STATISTICS_NAME)) {
153
+ return;
154
+ }
155
+ var advancedStatistics = value.plugin_settings[ADVANCED_STATISTICS_NAME];
156
+ if (!Array.isArray(advancedStatistics) || advancedStatistics.length === 0 || this.statistics.some(function (dashboard) {
157
+ return dashboard.from_advanced;
158
+ }) // already merged from advanced
159
+ ) {
160
+ return;
161
+ }
162
+ var mergedStatistics = _toConsumableArray(this.statistics);
163
+ advancedStatistics.forEach(function (dashboard) {
164
+ var convertedDashboard = _objectSpread(_objectSpread({}, dashboard), {}, {
165
+ _id: generatorUniqueId(mergedStatistics),
166
+ from_advanced: true
167
+ });
168
+ var convertedCharts = Array.isArray(dashboard.stat_items) ? dashboard.stat_items.map(function (chart) {
169
+ if (!chart) return null;
170
+ var convertedChart = _objectSpread({}, chart);
171
+
172
+ // fix code spell from advanced
173
+ if (hasOwnProperty(chart, 'column_groupby_mutiple_numeric_column')) {
174
+ convertedChart.column_groupby_multiple_numeric_column = chart.column_groupby_mutiple_numeric_column;
175
+ }
176
+ if (hasOwnProperty(chart, 'y_axis_left_group_by_mutiple_numeric_column')) {
177
+ convertedChart.y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_mutiple_numeric_column;
178
+ }
179
+ return convertedChart;
180
+ }).filter(Boolean) : [];
181
+ convertedDashboard.stat_items = convertedCharts;
182
+ mergedStatistics.push(convertedDashboard);
183
+ });
184
+ this.needSave = true;
185
+ this.statistics = mergedStatistics;
186
+ deletePluginSettings(ADVANCED_STATISTICS_NAME);
187
+ }
188
+ }, {
189
+ key: "filterInvalidCharts",
190
+ value: function filterInvalidCharts() {
191
+ var _this2 = this;
192
+ this.statistics = this.statistics.map(function (dashboard) {
193
+ var charts = dashboard.stat_items || dashboard.statItems;
194
+ if (!Array.isArray(charts) || charts.length === 0) {
195
+ return dashboard;
196
+ }
197
+ charts = charts.filter(function (chart) {
198
+ return _this2.chartCalculator.isValidChart(chart);
199
+ });
200
+ charts = charts.map(function (chart, index) {
201
+ if (!chart.layout) {
202
+ return _objectSpread(_objectSpread({}, chart), {}, {
203
+ layout: {
204
+ i: chart._id,
205
+ x: index % 2 * 2,
206
+ y: Infinity,
207
+ w: 2,
208
+ h: 7
209
+ }
210
+ });
211
+ }
212
+ return chart;
213
+ });
214
+ return _objectSpread(_objectSpread({}, dashboard), {}, {
215
+ stat_items: charts
216
+ });
217
+ });
218
+ }
219
+ }, {
220
+ key: "getStatistics",
221
+ value: function getStatistics() {
222
+ return this.statistics;
223
+ }
224
+ }, {
225
+ key: "getStatisticById",
226
+ value: function getStatisticById(id) {
227
+ return this.statistics.find(function (statistic) {
228
+ return statistic._id === id;
229
+ });
230
+ }
231
+ }, {
232
+ key: "getColorThemeName",
233
+ value: function getColorThemeName() {
234
+ return this.statistics[0].chart_color_theme || 'theme0';
235
+ }
236
+ }, {
237
+ key: "update",
238
+ value: function update(_ref2) {
239
+ var action = _ref2.action,
240
+ payload = _ref2.payload;
241
+ switch (action) {
242
+ case DASHBOARD_ACTION_TYPE.MODIFY_COLOR_THEME:
243
+ {
244
+ var colorThemeName = payload.colorThemeName;
245
+ this.statistics = this.statistics.map(function (statistic) {
246
+ return _objectSpread(_objectSpread({}, statistic), {}, {
247
+ chart_color_theme: colorThemeName
248
+ });
249
+ });
250
+ break;
251
+ }
252
+ case DASHBOARD_ACTION_TYPE.ADD_DASHBOARD:
253
+ {
254
+ var dashboard = payload.dashboard;
255
+ this.statistics = [].concat(_toConsumableArray(this.statistics), [dashboard]);
256
+ break;
257
+ }
258
+ case DASHBOARD_ACTION_TYPE.RENAME_DASHBOARD:
259
+ {
260
+ var index = payload.index,
261
+ name = payload.name;
262
+ if (!this.statistics[index]) {
263
+ break;
264
+ }
265
+ var updatedStatistics = _toConsumableArray(this.statistics);
266
+ updatedStatistics[index].name = name;
267
+ this.statistics = updatedStatistics;
268
+ break;
269
+ }
270
+ case DASHBOARD_ACTION_TYPE.DELETE_DASHBOARD:
271
+ {
272
+ var _index = payload.index;
273
+ if (!this.statistics[_index]) {
274
+ break;
275
+ }
276
+ var _updatedStatistics = _toConsumableArray(this.statistics);
277
+ _updatedStatistics.splice(_index, 1);
278
+ this.statistics = _updatedStatistics;
279
+ break;
280
+ }
281
+ case DASHBOARD_ACTION_TYPE.MOVE_DASHBOARD:
282
+ {
283
+ var draggedDashboardId = payload.draggedDashboardId,
284
+ targetBoardId = payload.targetBoardId,
285
+ relativePosition = payload.relativePosition;
286
+ var draggedDashboard = this.getStatisticById(draggedDashboardId);
287
+ var targetDashboard = this.getStatisticById(targetBoardId);
288
+ var draggedDashboardIndex = this.statistics.indexOf(draggedDashboard);
289
+ var targetDashboardIndex = this.statistics.indexOf(targetDashboard);
290
+ targetDashboardIndex += relativePosition == 'before' ? 0 : 1;
291
+ var _updatedStatistics2 = _toConsumableArray(this.statistics);
292
+ if (draggedDashboardIndex < targetDashboardIndex) {
293
+ if (targetDashboardIndex < _updatedStatistics2.length) {
294
+ _updatedStatistics2.splice(targetDashboardIndex, 0, draggedDashboard);
295
+ } else {
296
+ // drag it to the end
297
+ _updatedStatistics2.push(draggedDashboard);
298
+ }
299
+ _updatedStatistics2.splice(draggedDashboardIndex, 1);
300
+ } else {
301
+ _updatedStatistics2.splice(draggedDashboardIndex, 1);
302
+ _updatedStatistics2.splice(targetDashboardIndex, 0, draggedDashboard);
303
+ }
304
+ this.statistics = _updatedStatistics2;
305
+ break;
306
+ }
307
+ case DASHBOARD_ACTION_TYPE.MODIFY_DASHBOARD_LAYOUT:
308
+ {
309
+ var _index2 = payload.index,
310
+ layout = payload.layout;
311
+ var idChartLayoutMap = {};
312
+ layout && layout.forEach(function (chartLayout) {
313
+ idChartLayoutMap[chartLayout.i] = chartLayout;
314
+ });
315
+ var _updatedStatistics3 = _toConsumableArray(this.statistics);
316
+ var updatedDashboard = _updatedStatistics3[_index2];
317
+ if (!updatedDashboard) {
318
+ break;
319
+ }
320
+ var stat_items = updatedDashboard.stat_items;
321
+ updatedDashboard.stat_items = stat_items.map(function (chart) {
322
+ var chartLayout = idChartLayoutMap[chart._id];
323
+ if (!chartLayout) return chart;
324
+ var x = chartLayout.x,
325
+ y = chartLayout.y,
326
+ w = chartLayout.w,
327
+ h = chartLayout.h,
328
+ i = chartLayout.i;
329
+ return Object.assign({}, chart, {
330
+ layout: {
331
+ x: x,
332
+ y: y,
333
+ w: w,
334
+ h: h,
335
+ i: i
336
+ }
337
+ });
338
+ });
339
+ _updatedStatistics3[_index2] = updatedDashboard;
340
+ this.statistics = _updatedStatistics3;
341
+ break;
342
+ }
343
+ case DASHBOARD_ACTION_TYPE.ADD_CHART:
344
+ {
345
+ var _index3 = payload.index,
346
+ chart = payload.chart;
347
+ var _updatedStatistics4 = _toConsumableArray(this.statistics);
348
+ var _updatedDashboard = _updatedStatistics4[_index3];
349
+ if (!_updatedDashboard) {
350
+ break;
351
+ }
352
+ var statItemsLen = _updatedDashboard.stat_items.length;
353
+ if (!chart.layout) {
354
+ chart.layout = {
355
+ i: chart._id,
356
+ x: statItemsLen % 2 * 2,
357
+ y: Infinity,
358
+ w: 2,
359
+ h: 7
360
+ };
361
+ }
362
+ _updatedDashboard.stat_items.push(chart);
363
+ this.statistics = _updatedStatistics4;
364
+ break;
365
+ }
366
+ case DASHBOARD_ACTION_TYPE.DELETE_CHART:
367
+ {
368
+ var _index4 = payload.index,
369
+ chart_id = payload.chart_id;
370
+ var _updatedStatistics5 = _toConsumableArray(this.statistics);
371
+ var _updatedDashboard2 = _updatedStatistics5[_index4];
372
+ if (!_updatedDashboard2) {
373
+ break;
374
+ }
375
+ var deleteIndex = _updatedDashboard2.stat_items.findIndex(function (chart) {
376
+ return chart._id === chart_id;
377
+ });
378
+ if (deleteIndex < 0) {
379
+ break;
380
+ }
381
+ _updatedDashboard2.stat_items.splice(deleteIndex, 1);
382
+ this.statistics = _updatedStatistics5;
383
+ break;
384
+ }
385
+ case DASHBOARD_ACTION_TYPE.MODIFY_CHART:
386
+ {
387
+ var _index5 = payload.index,
388
+ _chart = payload.chart;
389
+ var charId = _chart._id;
390
+ var _updatedStatistics6 = _toConsumableArray(this.statistics);
391
+ var _updatedDashboard3 = _updatedStatistics6[_index5];
392
+ if (!_updatedDashboard3) {
393
+ break;
394
+ }
395
+ var updateIndex = _updatedDashboard3.stat_items.findIndex(function (chart) {
396
+ return chart._id === charId;
397
+ });
398
+ if (updateIndex < 0) {
399
+ break;
400
+ }
401
+ _updatedDashboard3.stat_items[updateIndex] = _chart;
402
+ this.statistics = _updatedStatistics6;
403
+ break;
404
+ }
405
+ default:
406
+ {
407
+ break;
408
+ }
409
+ }
410
+ return this.getStatistics();
411
+ }
412
+ }]);
413
+ return DashBoardService;
414
+ }();
415
+ export default DashBoardService;
@@ -0,0 +1,75 @@
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, Fragment } from 'react';
6
+ import { Input } from 'reactstrap';
7
+ var ChartNameEditor = /*#__PURE__*/function (_Component) {
8
+ _inherits(ChartNameEditor, _Component);
9
+ var _super = _createSuper(ChartNameEditor);
10
+ function ChartNameEditor(props) {
11
+ var _this;
12
+ _classCallCheck(this, ChartNameEditor);
13
+ _this = _super.call(this, props);
14
+ _this.onRenameToggle = function () {
15
+ _this.setState({
16
+ editable: !_this.state.editable
17
+ });
18
+ };
19
+ _this.onChange = function (evt) {
20
+ _this.setState({
21
+ name: evt.target.value
22
+ });
23
+ };
24
+ _this.updateStatName = function (evt) {
25
+ _this.onRenameToggle();
26
+ var newName = evt.target.value.trim();
27
+ if (newName === _this.props.name) return;
28
+ _this.props.updateStatName(newName);
29
+ };
30
+ _this.onKeyDown = function (evt) {
31
+ if (evt.keyCode === 13) {
32
+ _this.updateStatName(evt);
33
+ }
34
+ };
35
+ _this.state = {
36
+ name: props.name || '',
37
+ editable: false
38
+ };
39
+ return _this;
40
+ }
41
+ _createClass(ChartNameEditor, [{
42
+ key: "componentDidUpdate",
43
+ value: function componentDidUpdate(prevProps) {
44
+ if (prevProps.name !== this.props.name) {
45
+ this.setState({
46
+ name: this.props.name
47
+ });
48
+ }
49
+ }
50
+ }, {
51
+ key: "render",
52
+ value: function render() {
53
+ var _this$state = this.state,
54
+ name = _this$state.name,
55
+ editable = _this$state.editable;
56
+ return /*#__PURE__*/React.createElement("div", {
57
+ className: "statistic-chart-editing-name"
58
+ }, editable ? /*#__PURE__*/React.createElement(Input, {
59
+ defaultValue: name,
60
+ className: "statistic-rename",
61
+ onBlur: this.updateStatName,
62
+ autoFocus: true,
63
+ onChange: this.onChange,
64
+ onKeyDown: this.onKeyDown
65
+ }) : /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", {
66
+ className: "statistic-table-title-name"
67
+ }, name), /*#__PURE__*/React.createElement("span", {
68
+ className: "dtable-font dtable-icon-rename",
69
+ onClick: this.onRenameToggle
70
+ })));
71
+ }
72
+ }]);
73
+ return ChartNameEditor;
74
+ }(Component);
75
+ export default ChartNameEditor;
@@ -0,0 +1,74 @@
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 ChartNameEditor from './chart-name-editor';
7
+ import StatView from '../stat-view';
8
+ import BasicChartSettings from './stat-settings/basic-chart-settings';
9
+ import AdvancedChartSettings from './stat-settings/advance-chart-settings';
10
+ import { BASIC_STAT_TYPES, STAT_TYPE } from '../constants';
11
+ var StatEditor = /*#__PURE__*/function (_Component) {
12
+ _inherits(StatEditor, _Component);
13
+ var _super = _createSuper(StatEditor);
14
+ function StatEditor() {
15
+ _classCallCheck(this, StatEditor);
16
+ return _super.apply(this, arguments);
17
+ }
18
+ _createClass(StatEditor, [{
19
+ key: "render",
20
+ value: function render() {
21
+ var _this$props = this.props,
22
+ getTables = _this$props.getTables,
23
+ getViews = _this$props.getViews,
24
+ getTableById = _this$props.getTableById,
25
+ colorThemeName = _this$props.colorThemeName,
26
+ statItem = _this$props.statItem,
27
+ labelColorConfigs = _this$props.labelColorConfigs,
28
+ chartCalculator = _this$props.chartCalculator,
29
+ eventBus = _this$props.eventBus;
30
+ var type = statItem.type;
31
+ var showStatName = !(type === STAT_TYPE.BASIC_NUMBER_CARD || type === STAT_TYPE.DASHBOARD);
32
+ return /*#__PURE__*/React.createElement("div", {
33
+ className: "statistic-chart-edit-container"
34
+ }, /*#__PURE__*/React.createElement("div", {
35
+ className: "statistic-stat-wrapper"
36
+ }, showStatName && /*#__PURE__*/React.createElement(ChartNameEditor, {
37
+ name: statItem.name,
38
+ updateStatName: this.props.modifyChartName
39
+ }), /*#__PURE__*/React.createElement("div", {
40
+ className: "statistic-chart-view-container"
41
+ }, /*#__PURE__*/React.createElement(StatView, {
42
+ isEdit: true,
43
+ isPreview: false,
44
+ isEnlarge: false,
45
+ colorThemeName: colorThemeName,
46
+ statItem: statItem,
47
+ labelColorConfigs: labelColorConfigs,
48
+ chartCalculator: chartCalculator,
49
+ eventBus: eventBus,
50
+ getTableById: getTableById,
51
+ updateStatItem: this.props.modifyChart,
52
+ toggleStatisticRecordsDialog: this.props.toggleStatisticRecordsDialog
53
+ }))), BASIC_STAT_TYPES.includes(statItem.type) ? /*#__PURE__*/React.createElement(BasicChartSettings, {
54
+ statItem: statItem,
55
+ labelColorConfigs: labelColorConfigs,
56
+ eventBus: eventBus,
57
+ getTables: getTables,
58
+ getViews: getViews,
59
+ getTableById: getTableById,
60
+ updateStatItem: this.props.modifyChart
61
+ }) : /*#__PURE__*/React.createElement(AdvancedChartSettings, {
62
+ statItem: statItem,
63
+ labelColorConfigs: labelColorConfigs,
64
+ eventBus: eventBus,
65
+ getTables: getTables,
66
+ getViews: getViews,
67
+ getTableById: getTableById,
68
+ updateStatItem: this.props.modifyChart
69
+ }));
70
+ }
71
+ }]);
72
+ return StatEditor;
73
+ }(Component);
74
+ export default StatEditor;