dtable-statistic 4.2.2 → 4.3.0

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 (219) hide show
  1. package/es/api/dtable-db-api.js +31 -37
  2. package/es/calculator/base-calculator.js +49 -99
  3. package/es/calculator/basic-chart-calculator.js +335 -559
  4. package/es/calculator/combination-calculator.js +231 -299
  5. package/es/calculator/compare-bar-calculator.js +184 -281
  6. package/es/calculator/completeness-calculator.js +203 -288
  7. package/es/calculator/copy-value.js +18 -18
  8. package/es/calculator/dashboard-calculator.js +68 -137
  9. package/es/calculator/heat-map-calculator.js +139 -220
  10. package/es/calculator/horizontal-bar-calculator.js +64 -93
  11. package/es/calculator/index.js +53 -69
  12. package/es/calculator/map-calculator.js +98 -174
  13. package/es/calculator/mirror-calculator.js +137 -216
  14. package/es/calculator/number-card-calculator.js +58 -126
  15. package/es/calculator/pivot-table-calculator.js +750 -792
  16. package/es/calculator/scatter-calculator.js +72 -140
  17. package/es/calculator/thread-manager.js +48 -67
  18. package/es/calculator/trend-calculator.js +107 -191
  19. package/es/calculator/workers/basic-chart-calculator-worker.js +194 -165
  20. package/es/calculator/workers/calculator.worker.js +22 -6
  21. package/es/calculator/workers/card-calculator-worker.js +16 -14
  22. package/es/calculator/workers/combination-calculator-worker.js +128 -135
  23. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +80 -96
  24. package/es/calculator/workers/completeness-calculator-worker.js +56 -49
  25. package/es/calculator/workers/dashboard-calculator-worker.js +24 -22
  26. package/es/calculator/workers/mirror-calculator-worker.js +52 -52
  27. package/es/calculator/workers/pivot-table-calculator-worker.js +247 -230
  28. package/es/calculator/workers/scatter-calculator-worker.js +34 -32
  29. package/es/calculator/workers/trend-calculator-worker.js +33 -29
  30. package/es/calculator/world-map-calculator.js +120 -197
  31. package/es/components/common-add-tool.js +7 -5
  32. package/es/components/dialog/chart-addition-edit-dialog.js +67 -77
  33. package/es/components/dialog/chart-addition-widgets/chart-selector.js +57 -67
  34. package/es/components/dialog/color-theme-dialog.js +34 -47
  35. package/es/components/dialog/delete-confirmation-dialog.js +7 -5
  36. package/es/components/dialog/enlarged-chart-dialog.js +68 -81
  37. package/es/components/dialog/new-table-dialog.js +62 -80
  38. package/es/components/dialog/new-view-dialog.js +50 -62
  39. package/es/components/dialog/rename-view-dialog.js +49 -58
  40. package/es/components/dialog/statistic-record-dialog/index.js +233 -231
  41. package/es/components/dialog/statistic-types-dialog/index.js +40 -49
  42. package/es/components/dialog/table-select-dialog.js +61 -70
  43. package/es/components/dropdown-menu/statistic-dropdown-menu.js +129 -142
  44. package/es/components/dtable-popover.js +62 -81
  45. package/es/components/dtable-search-input.js +89 -99
  46. package/es/components/dtable-select.js +55 -74
  47. package/es/components/icon.js +5 -3
  48. package/es/components/loading.js +1 -1
  49. package/es/components/modal-portal.js +15 -32
  50. package/es/components/popover/color-rules/color-rule.js +137 -141
  51. package/es/components/popover/color-rules/index.js +58 -66
  52. package/es/components/popover/color-rules/rule-filters/filter.js +124 -124
  53. package/es/components/popover/color-rules/rule-filters/index.js +50 -58
  54. package/es/components/popover/color-rules/rule-filters/number-input.js +42 -57
  55. package/es/components/popover/color-rules-popover.js +117 -121
  56. package/es/components/popover/color-selector-popover.js +60 -70
  57. package/es/components/seatable-radio/index.js +2 -2
  58. package/es/components/select/option-group.js +139 -157
  59. package/es/components/select/option.js +26 -40
  60. package/es/components/select/select.js +97 -112
  61. package/es/components/toast/alert.js +65 -80
  62. package/es/components/toast/index.js +1 -1
  63. package/es/components/toast/toast.js +76 -103
  64. package/es/components/toast/toastManager.js +57 -93
  65. package/es/components/toast/toaster.js +58 -56
  66. package/es/constants/color-rules.js +8 -5
  67. package/es/constants/dtable-select-style.js +44 -48
  68. package/es/constants/event-types.js +4 -4
  69. package/es/constants/index.js +328 -242
  70. package/es/constants/map.js +2 -2
  71. package/es/constants/model.js +20 -20
  72. package/es/constants/regions.js +1 -1
  73. package/es/constants/zIndexes.js +1 -1
  74. package/es/custom-g2.js +11 -11
  75. package/es/dashboard.js +343 -333
  76. package/es/desktop-dashboard.js +217 -224
  77. package/es/index.js +45 -58
  78. package/es/locale/index.js +3 -3
  79. package/es/locale/lang/de.js +1 -1
  80. package/es/locale/lang/en.js +7 -7
  81. package/es/locale/lang/fr.js +1 -1
  82. package/es/locale/lang/zh_CN.js +1 -1
  83. package/es/mobile-dashboard.js +76 -89
  84. package/es/model/bar-group.js +34 -44
  85. package/es/model/bar.js +26 -36
  86. package/es/model/base-model.js +11 -12
  87. package/es/model/basic-number-card.js +10 -20
  88. package/es/model/collaborators.js +10 -11
  89. package/es/model/combination.js +32 -42
  90. package/es/model/compare-bar.js +30 -40
  91. package/es/model/completeness-group.js +19 -29
  92. package/es/model/completeness.js +14 -24
  93. package/es/model/custom-bar.js +14 -24
  94. package/es/model/dashboard.js +9 -19
  95. package/es/model/generic-model.js +187 -197
  96. package/es/model/heat-map.js +16 -26
  97. package/es/model/horizontal-bar-group.js +32 -42
  98. package/es/model/horizontal-bar.js +26 -36
  99. package/es/model/index.js +31 -3
  100. package/es/model/map.js +20 -30
  101. package/es/model/mirror.js +15 -25
  102. package/es/model/pie.js +21 -31
  103. package/es/model/ring.js +23 -33
  104. package/es/model/scatter.js +11 -21
  105. package/es/model/statistic-dashboard.js +7 -8
  106. package/es/model/table.js +19 -29
  107. package/es/model/trend.js +15 -25
  108. package/es/model/world-map.js +17 -27
  109. package/es/service/chart-service.js +69 -65
  110. package/es/service/dashboard-service.js +421 -419
  111. package/es/service/map-json.js +112 -132
  112. package/es/stat-editor/chart-name-editor.js +44 -58
  113. package/es/stat-editor/index.js +59 -70
  114. package/es/stat-editor/stat-settings/advance-chart-settings/basic-number-card-settings.js +93 -98
  115. package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +246 -248
  116. package/es/stat-editor/stat-settings/advance-chart-settings/dashboard-chart-settings.js +127 -126
  117. package/es/stat-editor/stat-settings/advance-chart-settings/geo-granularity-settings.js +5 -3
  118. package/es/stat-editor/stat-settings/advance-chart-settings/heat-map-settings.js +78 -90
  119. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +146 -150
  120. package/es/stat-editor/stat-settings/advance-chart-settings/map-settings.js +88 -98
  121. package/es/stat-editor/stat-settings/advance-chart-settings/mirror-settings.js +100 -118
  122. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +161 -148
  123. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/heat-map-settings.js +58 -66
  124. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/map-setting.js +58 -60
  125. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +152 -148
  126. package/es/stat-editor/stat-settings/advance-chart-settings/trend-chart-settings.js +101 -105
  127. package/es/stat-editor/stat-settings/advance-chart-settings/world-map-settings.js +81 -91
  128. package/es/stat-editor/stat-settings/basic-chart-settings/advance-bar-chart-settings.js +110 -122
  129. package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +101 -113
  130. package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +130 -120
  131. package/es/stat-editor/stat-settings/basic-chart-settings/custom-bar-settings.js +88 -102
  132. package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +88 -102
  133. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-axis-group-settings.js +200 -194
  134. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-bar-settings.js +98 -110
  135. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-group-chart-settings.js +106 -118
  136. package/es/stat-editor/stat-settings/basic-chart-settings/index.js +212 -223
  137. package/es/stat-editor/stat-settings/basic-chart-settings/pie-settings.js +109 -119
  138. package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +329 -319
  139. package/es/stat-editor/stat-settings/basic-chart-settings/scatter-settings.js +82 -90
  140. package/es/stat-editor/stat-settings/basic-chart-settings/stack-item-settings.js +58 -65
  141. package/es/stat-editor/stat-settings/basic-chart-settings/stacks-settings.js +126 -116
  142. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +201 -182
  143. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/completeness-style.js +79 -79
  144. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +196 -175
  145. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/label-font-size-editor.js +35 -50
  146. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +180 -147
  147. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/time-compare-style.js +31 -40
  148. package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +56 -67
  149. package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +60 -69
  150. package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +165 -158
  151. package/es/stat-editor/stat-settings/basic-chart-settings/timer-picker.js +61 -74
  152. package/es/stat-editor/stat-settings/basic-chart-settings/y-axis-group-settings.js +199 -193
  153. package/es/stat-editor/stat-settings/color-setting/color-group-selector.js +25 -38
  154. package/es/stat-editor/stat-settings/color-setting/color-picker.js +79 -86
  155. package/es/stat-editor/stat-settings/color-setting/color-use-type-selector.js +138 -120
  156. package/es/stat-editor/stat-settings/map/map-level.js +31 -43
  157. package/es/stat-editor/stat-settings/map/map-province-city.js +82 -83
  158. package/es/stat-editor/stat-settings/public-setting/axis-label-position-setting.js +48 -50
  159. package/es/stat-editor/stat-settings/public-setting/base-settings.js +96 -96
  160. package/es/stat-editor/stat-settings/public-setting/calender.js +69 -75
  161. package/es/stat-editor/stat-settings/public-setting/column-settings.js +5 -3
  162. package/es/stat-editor/stat-settings/public-setting/custom-title-setting.js +36 -41
  163. package/es/stat-editor/stat-settings/public-setting/data-sort-setting.js +37 -41
  164. package/es/stat-editor/stat-settings/public-setting/ind-toggle-setting.js +25 -38
  165. package/es/stat-editor/stat-settings/public-setting/min-max-setting.js +40 -52
  166. package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +90 -93
  167. package/es/stat-editor/stat-settings/public-setting/toggle-setting.js +23 -36
  168. package/es/stat-editor/stat-settings/public-setting/type-settings/index.js +39 -44
  169. package/es/stat-list/chart-preview.js +85 -98
  170. package/es/stat-list/index.js +170 -178
  171. package/es/stat-view/area-chart.js +282 -274
  172. package/es/stat-view/bar-chart.js +300 -292
  173. package/es/stat-view/base-chart.js +58 -52
  174. package/es/stat-view/basic-number-card.js +115 -168
  175. package/es/stat-view/combination-chart.js +298 -334
  176. package/es/stat-view/compare-chart.js +256 -254
  177. package/es/stat-view/completeness-chart.js +194 -206
  178. package/es/stat-view/custom-bar.js +221 -223
  179. package/es/stat-view/dashboard-chart.js +122 -180
  180. package/es/stat-view/heat-map.js +268 -294
  181. package/es/stat-view/horizontal-bar-chart.js +291 -281
  182. package/es/stat-view/index.js +136 -152
  183. package/es/stat-view/line-chart.js +267 -265
  184. package/es/stat-view/map.js +246 -246
  185. package/es/stat-view/mirror.js +141 -152
  186. package/es/stat-view/pie-chart.js +143 -156
  187. package/es/stat-view/pivot-table/index.js +113 -118
  188. package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +104 -102
  189. package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +116 -118
  190. package/es/stat-view/pivot-table/pivot-table-display-name.js +96 -95
  191. package/es/stat-view/pivot-table/two-dimension-table.js +238 -229
  192. package/es/stat-view/ring-chart.js +189 -200
  193. package/es/stat-view/scatter-chart.js +162 -213
  194. package/es/stat-view/treemap-chart.js +136 -200
  195. package/es/stat-view/trend-chart.js +137 -183
  196. package/es/stat-view/world-map.js +233 -243
  197. package/es/tabs/index.js +164 -169
  198. package/es/tabs/tab.js +101 -116
  199. package/es/utils/basic-chart-utils.js +7 -9
  200. package/es/utils/cell-format.js +48 -51
  201. package/es/utils/cell-value.js +1 -1
  202. package/es/utils/collaborator.js +15 -14
  203. package/es/utils/color-utils.js +48 -37
  204. package/es/utils/column-utils.js +47 -33
  205. package/es/utils/column.js +1 -1
  206. package/es/utils/common-utils.js +111 -117
  207. package/es/utils/date-format.js +17 -17
  208. package/es/utils/export-table-utils.js +507 -396
  209. package/es/utils/index.js +6 -6
  210. package/es/utils/map.js +30 -34
  211. package/es/utils/model.js +3 -5
  212. package/es/utils/object.js +4 -4
  213. package/es/utils/pivot-table.js +20 -20
  214. package/es/utils/row-utils.js +41 -33
  215. package/es/utils/search.js +18 -20
  216. package/es/utils/sql-utils.js +132 -98
  217. package/es/utils/stat-utils.js +303 -320
  218. package/es/utils/trend-utils.js +57 -67
  219. package/package.json +2 -2
@@ -1,468 +1,470 @@
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
1
  import StatisticDashBoard from '../model/statistic-dashboard';
6
2
  import { hasOwnProperty } from '../utils';
7
3
  import { generatorUniqueId } from '../utils/common-utils';
8
4
  import { DASHBOARD_ACTION_TYPE, STAT_TYPE, SUMMARY_TYPE } from '../constants';
9
- var ADVANCED_STATISTICS_NAME = 'advanced-statistics';
10
- var DashBoardService = /*#__PURE__*/function () {
11
- function DashBoardService(_ref) {
12
- var value = _ref.value,
13
- defaultDashboardName = _ref.defaultDashboardName,
14
- chartCalculator = _ref.chartCalculator,
15
- chartService = _ref.chartService,
16
- updateStatistics = _ref.updateStatistics,
17
- deletePluginSettings = _ref.deletePluginSettings;
18
- _classCallCheck(this, DashBoardService);
5
+ const ADVANCED_STATISTICS_NAME = 'advanced-statistics';
6
+ class DashBoardService {
7
+ constructor(_ref) {
8
+ let {
9
+ value,
10
+ defaultDashboardName,
11
+ chartCalculator,
12
+ chartService,
13
+ updateStatistics,
14
+ deletePluginSettings
15
+ } = _ref;
19
16
  this.defaultDashboardName = defaultDashboardName;
20
17
  this.chartCalculator = chartCalculator;
21
18
  this.chartService = chartService;
22
19
  this.initStatistics(value, updateStatistics, deletePluginSettings);
23
20
  }
24
- _createClass(DashBoardService, [{
25
- key: "initStatistics",
26
- value: function initStatistics(value, updateStatistics, deletePluginSettings) {
27
- var baseStatistics = value && value.statistics || [];
28
- var advancedStatistics = this.getAdvancedStatistics(value);
29
- var hasBaseStatistics = baseStatistics.length > 0;
30
- var hasAdvancedStatistics = advancedStatistics.length > 0;
31
- this.statistics = baseStatistics;
21
+ initStatistics(value, updateStatistics, deletePluginSettings) {
22
+ const baseStatistics = value && value.statistics || [];
23
+ const advancedStatistics = this.getAdvancedStatistics(value);
24
+ const hasBaseStatistics = baseStatistics.length > 0;
25
+ const hasAdvancedStatistics = advancedStatistics.length > 0;
26
+ this.statistics = baseStatistics;
32
27
 
33
- // init default dashboard if neither base-statistics nor advanced-statistics
34
- if (!hasBaseStatistics && !hasAdvancedStatistics) {
35
- this.statistics = [new StatisticDashBoard({
36
- _id: generatorUniqueId([]),
37
- stat_items: [],
38
- name: this.defaultDashboardName
39
- })];
40
- return;
41
- }
42
- this.needSave = false;
43
-
44
- // convert to advance-statistic
45
- if (hasBaseStatistics && !hasOwnProperty(this.statistics[0], 'stat_items')) {
46
- this.needSave = true;
47
- this.convert2AdvanceStatistic();
48
- }
49
-
50
- // merge advanced statistics
51
- if (hasAdvancedStatistics) {
52
- this.mergeAdvancedStatistics(advancedStatistics, deletePluginSettings);
53
- }
54
- if (this.needSave) {
55
- this.needSave = false;
56
- updateStatistics(this.statistics);
57
- }
58
- }
59
- }, {
60
- key: "convert2AdvanceStatistic",
61
- value: function convert2AdvanceStatistic() {
62
- var _this = this;
63
- var statItems = this.statistics.map(function (chart) {
64
- var type = chart.type;
65
- switch (type) {
66
- case STAT_TYPE.PIVOT_TABLE:
67
- {
68
- return _this.convertPivotTable(chart);
69
- }
70
- case STAT_TYPE.BAR:
71
- {
72
- return _this.convertChartBar(chart);
73
- }
74
- case STAT_TYPE.LINE:
75
- {
76
- return _this.convertChartLine(chart);
77
- }
78
- case STAT_TYPE.PIE:
79
- {
80
- return _this.chartService.generatorChart(_objectSpread(_objectSpread({}, chart), {}, {
81
- type: STAT_TYPE.RING
82
- }));
83
- }
84
- default:
85
- {
86
- return null;
87
- }
88
- }
89
- }).filter(Boolean);
28
+ // init default dashboard if neither base-statistics nor advanced-statistics
29
+ if (!hasBaseStatistics && !hasAdvancedStatistics) {
90
30
  this.statistics = [new StatisticDashBoard({
91
31
  _id: generatorUniqueId([]),
92
- stat_items: statItems,
32
+ stat_items: [],
93
33
  name: this.defaultDashboardName
94
34
  })];
35
+ return;
95
36
  }
96
- }, {
97
- key: "convertPivotTable",
98
- value: function convertPivotTable(chart) {
99
- var summary_type = chart.summary_type,
100
- summary_columns_option = chart.summary_columns_option;
101
- var convertedChart = _objectSpread({}, chart);
102
- if (summary_type === SUMMARY_TYPE.ADVANCED && summary_columns_option && summary_columns_option.length > 0) {
103
- convertedChart.column_groupby_multiple_numeric_column = true;
104
- }
105
- return this.chartService.generatorChart(convertedChart);
106
- }
107
- }, {
108
- key: "convertChartBar",
109
- value: function convertChartBar(chart) {
110
- var column_groupby_column_key = chart.column_groupby_column_key,
111
- y_axis_use_stack = chart.y_axis_use_stack,
112
- y_axis_summary_method = chart.y_axis_summary_method,
113
- column_groupby_multiple_numeric_column = chart.column_groupby_multiple_numeric_column,
114
- column_groupby_numeric_column_keys = chart.column_groupby_numeric_column_keys;
115
- var convertedChart = _objectSpread({}, chart);
116
- var isGroupbyMultipleNumericColumns = column_groupby_multiple_numeric_column && column_groupby_numeric_column_keys && column_groupby_numeric_column_keys.length > 0;
117
- if (column_groupby_column_key || isGroupbyMultipleNumericColumns) {
118
- convertedChart.type = STAT_TYPE.BAR_GROUP;
119
- if (y_axis_use_stack) {
120
- convertedChart.type = STAT_TYPE.BAR_STACK;
121
- }
122
- if (isGroupbyMultipleNumericColumns) {
123
- convertedChart.column_groupby_multiple_numeric_column = column_groupby_multiple_numeric_column;
124
- convertedChart.column_groupby_numeric_columns = column_groupby_numeric_column_keys.map(function (key) {
125
- if (!key) return null;
126
- return {
127
- column_key: key,
128
- summary_method: y_axis_summary_method
129
- };
130
- }).filter(Boolean);
131
- }
132
- }
133
- return this.chartService.generatorChart(convertedChart);
37
+ this.needSave = false;
38
+
39
+ // convert to advance-statistic
40
+ if (hasBaseStatistics && !hasOwnProperty(this.statistics[0], 'stat_items')) {
41
+ this.needSave = true;
42
+ this.convert2AdvanceStatistic();
134
43
  }
135
- }, {
136
- key: "convertChartLine",
137
- value: function convertChartLine(chart) {
138
- var column_groupby_column_key = chart.column_groupby_column_key,
139
- column_groupby_multiple_numeric_column = chart.column_groupby_multiple_numeric_column,
140
- column_groupby_numeric_column_keys = chart.column_groupby_numeric_column_keys,
141
- y_axis_summary_method = chart.y_axis_summary_method;
142
- var isGroupbyMultipleNumericColumns = column_groupby_multiple_numeric_column && column_groupby_numeric_column_keys && column_groupby_numeric_column_keys.length > 0;
143
- var convertedChart = _objectSpread({}, chart);
144
- if (column_groupby_column_key) {
145
- convertedChart.type = STAT_TYPE.GROUP_LINE;
146
- if (isGroupbyMultipleNumericColumns) {
147
- convertedChart.column_groupby_multiple_numeric_column = column_groupby_multiple_numeric_column;
148
- convertedChart.column_groupby_numeric_columns = column_groupby_numeric_column_keys.map(function (key) {
149
- if (!key) return null;
150
- return {
151
- column_key: key,
152
- summary_method: y_axis_summary_method
153
- };
154
- }).filter(Boolean);
155
- }
156
- }
157
- return this.chartService.generatorChart(convertedChart);
44
+
45
+ // merge advanced statistics
46
+ if (hasAdvancedStatistics) {
47
+ this.mergeAdvancedStatistics(advancedStatistics, deletePluginSettings);
158
48
  }
159
- }, {
160
- key: "getAdvancedStatistics",
161
- value: function getAdvancedStatistics(value) {
162
- if (!value || !hasOwnProperty(value, 'plugin_settings') || !hasOwnProperty(value.plugin_settings, ADVANCED_STATISTICS_NAME)) {
163
- return [];
164
- }
165
- return value.plugin_settings[ADVANCED_STATISTICS_NAME] || [];
49
+ if (this.needSave) {
50
+ this.needSave = false;
51
+ updateStatistics(this.statistics);
166
52
  }
167
- }, {
168
- key: "mergeAdvancedStatistics",
169
- value: function mergeAdvancedStatistics(advancedStatistics, deletePluginSettings) {
170
- if (!Array.isArray(advancedStatistics) || advancedStatistics.length === 0 || this.statistics.some(function (dashboard) {
171
- return dashboard.from_advanced;
172
- }) // already merged from advanced
173
- ) {
174
- return;
175
- }
176
- var mergedStatistics = _toConsumableArray(this.statistics);
177
- advancedStatistics.forEach(function (dashboard) {
178
- var convertedDashboard = _objectSpread(_objectSpread({}, dashboard), {}, {
179
- _id: generatorUniqueId(mergedStatistics),
180
- from_advanced: true
181
- });
182
- var convertedCharts = Array.isArray(dashboard.stat_items) ? dashboard.stat_items.map(function (chart) {
183
- if (!chart) return null;
184
- var convertedChart = _objectSpread({}, chart);
185
-
186
- // fix code spell from advanced
187
- if (hasOwnProperty(chart, 'column_groupby_mutiple_numeric_column')) {
188
- convertedChart.column_groupby_multiple_numeric_column = chart.column_groupby_mutiple_numeric_column;
53
+ }
54
+ convert2AdvanceStatistic() {
55
+ const statItems = this.statistics.map(chart => {
56
+ const {
57
+ type
58
+ } = chart;
59
+ switch (type) {
60
+ case STAT_TYPE.PIVOT_TABLE:
61
+ {
62
+ return this.convertPivotTable(chart);
189
63
  }
190
- if (hasOwnProperty(chart, 'y_axis_left_group_by_mutiple_numeric_column')) {
191
- convertedChart.y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_mutiple_numeric_column;
64
+ case STAT_TYPE.BAR:
65
+ {
66
+ return this.convertChartBar(chart);
192
67
  }
193
- return convertedChart;
194
- }).filter(Boolean) : [];
195
- convertedDashboard.stat_items = convertedCharts;
196
- mergedStatistics.push(convertedDashboard);
197
- });
198
- this.needSave = true;
199
- this.statistics = mergedStatistics;
200
- deletePluginSettings(ADVANCED_STATISTICS_NAME);
201
- }
202
- }, {
203
- key: "getValidStatistics",
204
- value: function getValidStatistics(statistics) {
205
- var _this2 = this;
206
- return statistics.map(function (dashboard) {
207
- var charts = dashboard.stat_items || dashboard.statItems;
208
- if (!Array.isArray(charts) || charts.length === 0) {
209
- return dashboard;
210
- }
211
- charts = charts.filter(function (chart) {
212
- return _this2.chartCalculator.isValidChart(chart);
213
- });
214
- charts = charts.map(function (chart, index) {
215
- if (!chart.layout) {
216
- return _objectSpread(_objectSpread({}, chart), {}, {
217
- layout: {
218
- i: chart._id,
219
- x: index % 2 * 2,
220
- y: Infinity,
221
- w: 2,
222
- h: 7
223
- }
224
- });
68
+ case STAT_TYPE.LINE:
69
+ {
70
+ return this.convertChartLine(chart);
225
71
  }
226
- return chart;
227
- });
228
- return _objectSpread(_objectSpread({}, dashboard), {}, {
229
- stat_items: charts
230
- });
231
- });
232
- }
233
- }, {
234
- key: "getStatistics",
235
- value: function getStatistics() {
236
- return this.statistics;
237
- }
238
- }, {
239
- key: "getStatisticById",
240
- value: function getStatisticById(id) {
241
- return this.statistics.find(function (statistic) {
242
- return statistic._id === id;
243
- });
244
- }
245
- }, {
246
- key: "getColorThemeName",
247
- value: function getColorThemeName() {
248
- return this.statistics[0].chart_color_theme || 'theme0';
249
- }
250
- }, {
251
- key: "update",
252
- value: function update(_ref2) {
253
- var action = _ref2.action,
254
- payload = _ref2.payload;
255
- switch (action) {
256
- case DASHBOARD_ACTION_TYPE.MODIFY_COLOR_THEME:
72
+ case STAT_TYPE.PIE:
257
73
  {
258
- var colorThemeName = payload.colorThemeName;
259
- this.statistics = this.statistics.map(function (statistic) {
260
- return _objectSpread(_objectSpread({}, statistic), {}, {
261
- chart_color_theme: colorThemeName
262
- });
74
+ return this.chartService.generatorChart({
75
+ ...chart,
76
+ type: STAT_TYPE.RING
263
77
  });
264
- break;
265
78
  }
266
- case DASHBOARD_ACTION_TYPE.ADD_DASHBOARD:
79
+ default:
267
80
  {
268
- var dashboard = payload.dashboard;
269
- this.statistics = [].concat(_toConsumableArray(this.statistics), [dashboard]);
270
- break;
81
+ return null;
271
82
  }
272
- case DASHBOARD_ACTION_TYPE.RENAME_DASHBOARD:
273
- {
274
- var index = payload.index,
275
- name = payload.name;
276
- if (!this.statistics[index]) {
277
- break;
83
+ }
84
+ }).filter(Boolean);
85
+ this.statistics = [new StatisticDashBoard({
86
+ _id: generatorUniqueId([]),
87
+ stat_items: statItems,
88
+ name: this.defaultDashboardName
89
+ })];
90
+ }
91
+ convertPivotTable(chart) {
92
+ const {
93
+ summary_type,
94
+ summary_columns_option
95
+ } = chart;
96
+ let convertedChart = {
97
+ ...chart
98
+ };
99
+ if (summary_type === SUMMARY_TYPE.ADVANCED && summary_columns_option && summary_columns_option.length > 0) {
100
+ convertedChart.column_groupby_multiple_numeric_column = true;
101
+ }
102
+ return this.chartService.generatorChart(convertedChart);
103
+ }
104
+ convertChartBar(chart) {
105
+ const {
106
+ column_groupby_column_key,
107
+ y_axis_use_stack,
108
+ y_axis_summary_method,
109
+ column_groupby_multiple_numeric_column,
110
+ column_groupby_numeric_column_keys
111
+ } = chart;
112
+ let convertedChart = {
113
+ ...chart
114
+ };
115
+ const isGroupbyMultipleNumericColumns = column_groupby_multiple_numeric_column && column_groupby_numeric_column_keys && column_groupby_numeric_column_keys.length > 0;
116
+ if (column_groupby_column_key || isGroupbyMultipleNumericColumns) {
117
+ convertedChart.type = STAT_TYPE.BAR_GROUP;
118
+ if (y_axis_use_stack) {
119
+ convertedChart.type = STAT_TYPE.BAR_STACK;
120
+ }
121
+ if (isGroupbyMultipleNumericColumns) {
122
+ convertedChart.column_groupby_multiple_numeric_column = column_groupby_multiple_numeric_column;
123
+ convertedChart.column_groupby_numeric_columns = column_groupby_numeric_column_keys.map(key => {
124
+ if (!key) return null;
125
+ return {
126
+ column_key: key,
127
+ summary_method: y_axis_summary_method
128
+ };
129
+ }).filter(Boolean);
130
+ }
131
+ }
132
+ return this.chartService.generatorChart(convertedChart);
133
+ }
134
+ convertChartLine(chart) {
135
+ const {
136
+ column_groupby_column_key,
137
+ column_groupby_multiple_numeric_column,
138
+ column_groupby_numeric_column_keys,
139
+ y_axis_summary_method
140
+ } = chart;
141
+ const isGroupbyMultipleNumericColumns = column_groupby_multiple_numeric_column && column_groupby_numeric_column_keys && column_groupby_numeric_column_keys.length > 0;
142
+ let convertedChart = {
143
+ ...chart
144
+ };
145
+ if (column_groupby_column_key) {
146
+ convertedChart.type = STAT_TYPE.GROUP_LINE;
147
+ if (isGroupbyMultipleNumericColumns) {
148
+ convertedChart.column_groupby_multiple_numeric_column = column_groupby_multiple_numeric_column;
149
+ convertedChart.column_groupby_numeric_columns = column_groupby_numeric_column_keys.map(key => {
150
+ if (!key) return null;
151
+ return {
152
+ column_key: key,
153
+ summary_method: y_axis_summary_method
154
+ };
155
+ }).filter(Boolean);
156
+ }
157
+ }
158
+ return this.chartService.generatorChart(convertedChart);
159
+ }
160
+ getAdvancedStatistics(value) {
161
+ if (!value || !hasOwnProperty(value, 'plugin_settings') || !hasOwnProperty(value.plugin_settings, ADVANCED_STATISTICS_NAME)) {
162
+ return [];
163
+ }
164
+ return value.plugin_settings[ADVANCED_STATISTICS_NAME] || [];
165
+ }
166
+ mergeAdvancedStatistics(advancedStatistics, deletePluginSettings) {
167
+ if (!Array.isArray(advancedStatistics) || advancedStatistics.length === 0 || this.statistics.some(dashboard => dashboard.from_advanced) // already merged from advanced
168
+ ) {
169
+ return;
170
+ }
171
+ let mergedStatistics = [...this.statistics];
172
+ advancedStatistics.forEach(dashboard => {
173
+ let convertedDashboard = {
174
+ ...dashboard,
175
+ _id: generatorUniqueId(mergedStatistics),
176
+ from_advanced: true
177
+ };
178
+ let convertedCharts = Array.isArray(dashboard.stat_items) ? dashboard.stat_items.map(chart => {
179
+ if (!chart) return null;
180
+ let convertedChart = {
181
+ ...chart
182
+ };
183
+
184
+ // fix code spell from advanced
185
+ if (hasOwnProperty(chart, 'column_groupby_mutiple_numeric_column')) {
186
+ convertedChart.column_groupby_multiple_numeric_column = chart.column_groupby_mutiple_numeric_column;
187
+ }
188
+ if (hasOwnProperty(chart, 'y_axis_left_group_by_mutiple_numeric_column')) {
189
+ convertedChart.y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_mutiple_numeric_column;
190
+ }
191
+ return convertedChart;
192
+ }).filter(Boolean) : [];
193
+ convertedDashboard.stat_items = convertedCharts;
194
+ mergedStatistics.push(convertedDashboard);
195
+ });
196
+ this.needSave = true;
197
+ this.statistics = mergedStatistics;
198
+ deletePluginSettings(ADVANCED_STATISTICS_NAME);
199
+ }
200
+ getValidStatistics(statistics) {
201
+ return statistics.map(dashboard => {
202
+ let charts = dashboard.stat_items || dashboard.statItems;
203
+ if (!Array.isArray(charts) || charts.length === 0) {
204
+ return dashboard;
205
+ }
206
+ charts = charts.filter(chart => this.chartCalculator.isValidChart(chart));
207
+ charts = charts.map((chart, index) => {
208
+ if (!chart.layout) {
209
+ return {
210
+ ...chart,
211
+ layout: {
212
+ i: chart._id,
213
+ x: index % 2 * 2,
214
+ y: Infinity,
215
+ w: 2,
216
+ h: 7
278
217
  }
279
- var updatedStatistics = _toConsumableArray(this.statistics);
280
- updatedStatistics[index].name = name;
281
- this.statistics = updatedStatistics;
218
+ };
219
+ }
220
+ return chart;
221
+ });
222
+ return {
223
+ ...dashboard,
224
+ stat_items: charts
225
+ };
226
+ });
227
+ }
228
+ getStatistics() {
229
+ return this.statistics;
230
+ }
231
+ getStatisticById(id) {
232
+ return this.statistics.find(statistic => statistic._id === id);
233
+ }
234
+ getColorThemeName() {
235
+ return this.statistics[0].chart_color_theme || 'theme0';
236
+ }
237
+ update(_ref2) {
238
+ let {
239
+ action,
240
+ payload
241
+ } = _ref2;
242
+ switch (action) {
243
+ case DASHBOARD_ACTION_TYPE.MODIFY_COLOR_THEME:
244
+ {
245
+ const {
246
+ colorThemeName
247
+ } = payload;
248
+ this.statistics = this.statistics.map(statistic => {
249
+ return {
250
+ ...statistic,
251
+ chart_color_theme: colorThemeName
252
+ };
253
+ });
254
+ break;
255
+ }
256
+ case DASHBOARD_ACTION_TYPE.ADD_DASHBOARD:
257
+ {
258
+ const {
259
+ dashboard
260
+ } = payload;
261
+ this.statistics = [...this.statistics, dashboard];
262
+ break;
263
+ }
264
+ case DASHBOARD_ACTION_TYPE.RENAME_DASHBOARD:
265
+ {
266
+ const {
267
+ index,
268
+ name
269
+ } = payload;
270
+ if (!this.statistics[index]) {
282
271
  break;
283
272
  }
284
- case DASHBOARD_ACTION_TYPE.DELETE_DASHBOARD:
285
- {
286
- var _index = payload.index;
287
- if (!this.statistics[_index]) {
288
- break;
289
- }
290
- var _updatedStatistics = _toConsumableArray(this.statistics);
291
- _updatedStatistics.splice(_index, 1);
292
- this.statistics = _updatedStatistics;
273
+ let updatedStatistics = [...this.statistics];
274
+ updatedStatistics[index].name = name;
275
+ this.statistics = updatedStatistics;
276
+ break;
277
+ }
278
+ case DASHBOARD_ACTION_TYPE.DELETE_DASHBOARD:
279
+ {
280
+ const {
281
+ index
282
+ } = payload;
283
+ if (!this.statistics[index]) {
293
284
  break;
294
285
  }
295
- case DASHBOARD_ACTION_TYPE.MOVE_DASHBOARD:
296
- {
297
- var draggedDashboardId = payload.draggedDashboardId,
298
- targetBoardId = payload.targetBoardId,
299
- relativePosition = payload.relativePosition;
300
- var draggedDashboard = this.getStatisticById(draggedDashboardId);
301
- var targetDashboard = this.getStatisticById(targetBoardId);
302
- var draggedDashboardIndex = this.statistics.indexOf(draggedDashboard);
303
- var targetDashboardIndex = this.statistics.indexOf(targetDashboard);
304
- targetDashboardIndex += relativePosition == 'before' ? 0 : 1;
305
- var _updatedStatistics2 = _toConsumableArray(this.statistics);
306
- if (draggedDashboardIndex < targetDashboardIndex) {
307
- if (targetDashboardIndex < _updatedStatistics2.length) {
308
- _updatedStatistics2.splice(targetDashboardIndex, 0, draggedDashboard);
309
- } else {
310
- // drag it to the end
311
- _updatedStatistics2.push(draggedDashboard);
312
- }
313
- _updatedStatistics2.splice(draggedDashboardIndex, 1);
286
+ let updatedStatistics = [...this.statistics];
287
+ updatedStatistics.splice(index, 1);
288
+ this.statistics = updatedStatistics;
289
+ break;
290
+ }
291
+ case DASHBOARD_ACTION_TYPE.MOVE_DASHBOARD:
292
+ {
293
+ const {
294
+ draggedDashboardId,
295
+ targetBoardId,
296
+ relativePosition
297
+ } = payload;
298
+ const draggedDashboard = this.getStatisticById(draggedDashboardId);
299
+ const targetDashboard = this.getStatisticById(targetBoardId);
300
+ const draggedDashboardIndex = this.statistics.indexOf(draggedDashboard);
301
+ let targetDashboardIndex = this.statistics.indexOf(targetDashboard);
302
+ targetDashboardIndex += relativePosition == 'before' ? 0 : 1;
303
+ let updatedStatistics = [...this.statistics];
304
+ if (draggedDashboardIndex < targetDashboardIndex) {
305
+ if (targetDashboardIndex < updatedStatistics.length) {
306
+ updatedStatistics.splice(targetDashboardIndex, 0, draggedDashboard);
314
307
  } else {
315
- _updatedStatistics2.splice(draggedDashboardIndex, 1);
316
- _updatedStatistics2.splice(targetDashboardIndex, 0, draggedDashboard);
308
+ // drag it to the end
309
+ updatedStatistics.push(draggedDashboard);
317
310
  }
318
- this.statistics = _updatedStatistics2;
311
+ updatedStatistics.splice(draggedDashboardIndex, 1);
312
+ } else {
313
+ updatedStatistics.splice(draggedDashboardIndex, 1);
314
+ updatedStatistics.splice(targetDashboardIndex, 0, draggedDashboard);
315
+ }
316
+ this.statistics = updatedStatistics;
317
+ break;
318
+ }
319
+ case DASHBOARD_ACTION_TYPE.MODIFY_DASHBOARD_LAYOUT:
320
+ {
321
+ const {
322
+ index,
323
+ layout
324
+ } = payload;
325
+ let idChartLayoutMap = {};
326
+ layout && layout.forEach(chartLayout => {
327
+ idChartLayoutMap[chartLayout.i] = chartLayout;
328
+ });
329
+ let updatedStatistics = [...this.statistics];
330
+ let updatedDashboard = updatedStatistics[index];
331
+ if (!updatedDashboard) {
319
332
  break;
320
333
  }
321
- case DASHBOARD_ACTION_TYPE.MODIFY_DASHBOARD_LAYOUT:
322
- {
323
- var _index2 = payload.index,
324
- layout = payload.layout;
325
- var idChartLayoutMap = {};
326
- layout && layout.forEach(function (chartLayout) {
327
- idChartLayoutMap[chartLayout.i] = chartLayout;
328
- });
329
- var _updatedStatistics3 = _toConsumableArray(this.statistics);
330
- var updatedDashboard = _updatedStatistics3[_index2];
331
- if (!updatedDashboard) {
332
- break;
333
- }
334
- var stat_items = updatedDashboard.stat_items;
335
- updatedDashboard.stat_items = stat_items.map(function (chart) {
336
- var chartLayout = idChartLayoutMap[chart._id];
337
- if (!chartLayout) return chart;
338
- var x = chartLayout.x,
339
- y = chartLayout.y,
340
- w = chartLayout.w,
341
- h = chartLayout.h,
342
- i = chartLayout.i;
343
- return Object.assign({}, chart, {
344
- layout: {
345
- x: x,
346
- y: y,
347
- w: w,
348
- h: h,
349
- i: i
350
- }
351
- });
334
+ const {
335
+ stat_items
336
+ } = updatedDashboard;
337
+ updatedDashboard.stat_items = stat_items.map(chart => {
338
+ const chartLayout = idChartLayoutMap[chart._id];
339
+ if (!chartLayout) return chart;
340
+ const {
341
+ x,
342
+ y,
343
+ w,
344
+ h,
345
+ i
346
+ } = chartLayout;
347
+ return Object.assign({}, chart, {
348
+ layout: {
349
+ x,
350
+ y,
351
+ w,
352
+ h,
353
+ i
354
+ }
352
355
  });
353
- _updatedStatistics3[_index2] = updatedDashboard;
354
- this.statistics = _updatedStatistics3;
356
+ });
357
+ updatedStatistics[index] = updatedDashboard;
358
+ this.statistics = updatedStatistics;
359
+ break;
360
+ }
361
+ case DASHBOARD_ACTION_TYPE.ADD_CHART:
362
+ {
363
+ const {
364
+ index,
365
+ chart
366
+ } = payload;
367
+ const updatedStatistics = [...this.statistics];
368
+ let updatedDashboard = updatedStatistics[index];
369
+ if (!updatedDashboard) {
355
370
  break;
356
371
  }
357
- case DASHBOARD_ACTION_TYPE.ADD_CHART:
358
- {
359
- var _index3 = payload.index,
360
- chart = payload.chart;
361
- var _updatedStatistics4 = _toConsumableArray(this.statistics);
362
- var _updatedDashboard = _updatedStatistics4[_index3];
363
- if (!_updatedDashboard) {
364
- break;
365
- }
366
- var statItemsLen = _updatedDashboard.stat_items.length;
367
- if (!chart.layout) {
368
- chart.layout = {
369
- i: chart._id,
370
- x: statItemsLen % 2 * 2,
371
- y: Infinity,
372
- w: 2,
373
- h: 7
374
- };
375
- }
376
- _updatedDashboard.stat_items.push(chart);
377
- this.statistics = _updatedStatistics4;
378
- break;
372
+ const statItemsLen = updatedDashboard.stat_items.length;
373
+ if (!chart.layout) {
374
+ chart.layout = {
375
+ i: chart._id,
376
+ x: statItemsLen % 2 * 2,
377
+ y: Infinity,
378
+ w: 2,
379
+ h: 7
380
+ };
379
381
  }
380
- case DASHBOARD_ACTION_TYPE.DELETE_CHART:
381
- {
382
- var _index4 = payload.index,
383
- chart_id = payload.chart_id;
384
- var _updatedStatistics5 = _toConsumableArray(this.statistics);
385
- var _updatedDashboard2 = _updatedStatistics5[_index4];
386
- if (!_updatedDashboard2) {
387
- break;
388
- }
389
- var deleteIndex = _updatedDashboard2.stat_items.findIndex(function (chart) {
390
- return chart._id === chart_id;
391
- });
392
- if (deleteIndex < 0) {
393
- break;
394
- }
395
- _updatedDashboard2.stat_items.splice(deleteIndex, 1);
396
- this.statistics = _updatedStatistics5;
382
+ updatedDashboard.stat_items.push(chart);
383
+ this.statistics = updatedStatistics;
384
+ break;
385
+ }
386
+ case DASHBOARD_ACTION_TYPE.DELETE_CHART:
387
+ {
388
+ const {
389
+ index,
390
+ chart_id
391
+ } = payload;
392
+ const updatedStatistics = [...this.statistics];
393
+ let updatedDashboard = updatedStatistics[index];
394
+ if (!updatedDashboard) {
397
395
  break;
398
396
  }
399
- case DASHBOARD_ACTION_TYPE.MODIFY_CHART:
400
- {
401
- var _index5 = payload.index,
402
- _chart = payload.chart;
403
- var charId = _chart._id;
404
- var _updatedStatistics6 = _toConsumableArray(this.statistics);
405
- var _updatedDashboard3 = _updatedStatistics6[_index5];
406
- if (!_updatedDashboard3) {
407
- break;
408
- }
409
- var updateIndex = _updatedDashboard3.stat_items.findIndex(function (chart) {
410
- return chart._id === charId;
411
- });
412
- if (updateIndex < 0) {
413
- break;
414
- }
415
- _updatedDashboard3.stat_items[updateIndex] = _chart;
416
- this.statistics = _updatedStatistics6;
397
+ let deleteIndex = updatedDashboard.stat_items.findIndex(chart => chart._id === chart_id);
398
+ if (deleteIndex < 0) {
417
399
  break;
418
400
  }
419
- case DASHBOARD_ACTION_TYPE.MOVE_CHART_TO_VIEW:
420
- {
421
- var _index6 = payload.index,
422
- _chart_id = payload.chart_id,
423
- target_view_id = payload.target_view_id;
424
- var _updatedStatistics7 = _toConsumableArray(this.statistics);
425
- var currentDashboard = _updatedStatistics7[_index6];
426
- if (!currentDashboard || !Array.isArray(currentDashboard.stat_items)) break;
427
- var movedChartIndex = currentDashboard.stat_items.findIndex(function (chart) {
428
- return chart._id === _chart_id;
429
- });
430
- if (movedChartIndex < 0) break;
431
- var _targetDashboard = target_view_id && _updatedStatistics7.find(function (view) {
432
- return view._id === target_view_id;
433
- });
434
- if (!_targetDashboard) break;
435
- var movedCharts = currentDashboard.stat_items.splice(movedChartIndex, 1);
436
- var movedChart = movedCharts && movedCharts[0];
437
- if (!movedChart) break;
438
- var newChartId = movedChart._id;
439
- if (!Array.isArray(_targetDashboard.stat_items)) {
440
- _targetDashboard.stat_items = [];
441
- } else {
442
- newChartId = generatorUniqueId(_targetDashboard.statItems);
443
- }
444
- movedChart = Object.assign(movedChart, {
445
- _id: newChartId,
446
- layout: {
447
- i: newChartId,
448
- x: _targetDashboard.stat_items.length % 2 * 2,
449
- y: Infinity,
450
- w: 2,
451
- h: 7
452
- }
453
- });
454
- _targetDashboard.stat_items.push(movedChart);
455
- this.statistics = _updatedStatistics7;
401
+ updatedDashboard.stat_items.splice(deleteIndex, 1);
402
+ this.statistics = updatedStatistics;
403
+ break;
404
+ }
405
+ case DASHBOARD_ACTION_TYPE.MODIFY_CHART:
406
+ {
407
+ const {
408
+ index,
409
+ chart
410
+ } = payload;
411
+ const charId = chart._id;
412
+ const updatedStatistics = [...this.statistics];
413
+ let updatedDashboard = updatedStatistics[index];
414
+ if (!updatedDashboard) {
456
415
  break;
457
416
  }
458
- default:
459
- {
417
+ let updateIndex = updatedDashboard.stat_items.findIndex(chart => chart._id === charId);
418
+ if (updateIndex < 0) {
460
419
  break;
461
420
  }
462
- }
463
- return this.getStatistics();
421
+ updatedDashboard.stat_items[updateIndex] = chart;
422
+ this.statistics = updatedStatistics;
423
+ break;
424
+ }
425
+ case DASHBOARD_ACTION_TYPE.MOVE_CHART_TO_VIEW:
426
+ {
427
+ const {
428
+ index,
429
+ chart_id,
430
+ target_view_id
431
+ } = payload;
432
+ const updatedStatistics = [...this.statistics];
433
+ let currentDashboard = updatedStatistics[index];
434
+ if (!currentDashboard || !Array.isArray(currentDashboard.stat_items)) break;
435
+ let movedChartIndex = currentDashboard.stat_items.findIndex(chart => chart._id === chart_id);
436
+ if (movedChartIndex < 0) break;
437
+ let targetDashboard = target_view_id && updatedStatistics.find(view => view._id === target_view_id);
438
+ if (!targetDashboard) break;
439
+ const movedCharts = currentDashboard.stat_items.splice(movedChartIndex, 1);
440
+ let movedChart = movedCharts && movedCharts[0];
441
+ if (!movedChart) break;
442
+ let newChartId = movedChart._id;
443
+ if (!Array.isArray(targetDashboard.stat_items)) {
444
+ targetDashboard.stat_items = [];
445
+ } else {
446
+ newChartId = generatorUniqueId(targetDashboard.statItems);
447
+ }
448
+ movedChart = Object.assign(movedChart, {
449
+ _id: newChartId,
450
+ layout: {
451
+ i: newChartId,
452
+ x: targetDashboard.stat_items.length % 2 * 2,
453
+ y: Infinity,
454
+ w: 2,
455
+ h: 7
456
+ }
457
+ });
458
+ targetDashboard.stat_items.push(movedChart);
459
+ this.statistics = updatedStatistics;
460
+ break;
461
+ }
462
+ default:
463
+ {
464
+ break;
465
+ }
464
466
  }
465
- }]);
466
- return DashBoardService;
467
- }();
467
+ return this.getStatistics();
468
+ }
469
+ }
468
470
  export default DashBoardService;