@cgeui/utils 0.0.2 → 0.0.3

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 (97) hide show
  1. package/dist/esm/charts/Chart/utils/complementData.js +714 -0
  2. package/dist/esm/charts/Chart/utils/convertToEchartsConfig/chartsToEchartsConfig.js +99 -0
  3. package/dist/esm/charts/Chart/utils/convertToEchartsConfig/index.js +2 -0
  4. package/dist/esm/charts/Chart/utils/convertToEchartsConfig/pieChartToEchartsConfig.js +140 -0
  5. package/dist/esm/charts/Chart/utils/getOption.js +365 -0
  6. package/dist/esm/charts/Chart/utils/handleChartConfig.js +279 -0
  7. package/dist/esm/charts/Chart/utils/index.js +5 -0
  8. package/dist/esm/charts/Chart/utils/preConfig/index.js +307 -0
  9. package/dist/esm/charts/Chart/utils/preConfig/type.js +1 -0
  10. package/dist/esm/charts/PieChart/interface.js +1 -0
  11. package/dist/esm/charts/PieChart/locales/en-US.js +9 -0
  12. package/dist/esm/charts/PieChart/locales/index.js +7 -0
  13. package/dist/esm/charts/PieChart/locales/zh-CN.js +9 -0
  14. package/dist/esm/charts/PieChart/util.js +434 -0
  15. package/dist/esm/charts/SuperChart/config/bar.js +39 -0
  16. package/dist/esm/charts/SuperChart/config/index.js +237 -0
  17. package/dist/esm/charts/SuperChart/configStyle/color.js +23 -0
  18. package/dist/esm/charts/SuperChart/configStyle/dataZoom.js +13 -0
  19. package/dist/esm/charts/SuperChart/configStyle/grid.js +20 -0
  20. package/dist/esm/charts/SuperChart/configStyle/index.js +10 -0
  21. package/dist/esm/charts/SuperChart/configStyle/legend.js +68 -0
  22. package/dist/esm/charts/SuperChart/configStyle/lineStyle.js +80 -0
  23. package/dist/esm/charts/SuperChart/configStyle/title.js +16 -0
  24. package/dist/esm/charts/SuperChart/configStyle/tooltip.js +38 -0
  25. package/dist/esm/charts/SuperChart/configStyle/visualMap.js +18 -0
  26. package/dist/esm/charts/SuperChart/configStyle/xAxis.js +19 -0
  27. package/dist/esm/charts/SuperChart/configStyle/yAxis.js +56 -0
  28. package/dist/esm/charts/SuperChart/interface.js +1 -0
  29. package/dist/esm/charts/chartTheme/colorUtil.js +22 -0
  30. package/dist/esm/charts/chartTheme/darkChart.js +508 -0
  31. package/dist/esm/charts/chartTheme/defaultChart.js +492 -0
  32. package/dist/esm/charts/chartTheme/index.js +4 -0
  33. package/dist/esm/charts/chartTheme/themeColor.js +168 -0
  34. package/dist/esm/charts/index.js +5 -0
  35. package/dist/esm/charts/utils/charts/hex2Rgb.js +32 -0
  36. package/dist/esm/charts/utils/constants/env.js +6 -0
  37. package/dist/esm/charts/utils/constants/helper.js +5 -0
  38. package/dist/esm/charts/utils/constants/index.js +3 -0
  39. package/dist/esm/charts/utils/constants/table.js +17 -0
  40. package/dist/esm/charts/utils/data.js +450 -0
  41. package/dist/esm/charts/utils/index.js +5 -0
  42. package/dist/esm/charts/utils/locale.js +7 -0
  43. package/dist/esm/charts/utils/time/index.js +14 -0
  44. package/dist/esm/charts/utils/types/action.d.ts +33 -0
  45. package/dist/esm/charts/utils/types/chart.d.ts +220 -0
  46. package/dist/esm/charts/utils/types/data.d.ts +51 -0
  47. package/dist/esm/charts/utils/types/index.d.ts +3 -0
  48. package/dist/esm/index.js +3 -0
  49. package/dist/lib/charts/Chart/utils/complementData.js +721 -0
  50. package/dist/lib/charts/Chart/utils/convertToEchartsConfig/chartsToEchartsConfig.js +105 -0
  51. package/dist/lib/charts/Chart/utils/convertToEchartsConfig/index.js +27 -0
  52. package/dist/lib/charts/Chart/utils/convertToEchartsConfig/pieChartToEchartsConfig.js +147 -0
  53. package/dist/lib/charts/Chart/utils/getOption.js +371 -0
  54. package/dist/lib/charts/Chart/utils/handleChartConfig.js +284 -0
  55. package/dist/lib/charts/Chart/utils/index.js +60 -0
  56. package/dist/lib/charts/Chart/utils/preConfig/index.js +313 -0
  57. package/dist/lib/charts/Chart/utils/preConfig/type.js +5 -0
  58. package/dist/lib/charts/PieChart/interface.js +5 -0
  59. package/dist/lib/charts/PieChart/locales/en-US.js +15 -0
  60. package/dist/lib/charts/PieChart/locales/index.js +14 -0
  61. package/dist/lib/charts/PieChart/locales/zh-CN.js +15 -0
  62. package/dist/lib/charts/PieChart/util.js +441 -0
  63. package/dist/lib/charts/SuperChart/config/bar.js +45 -0
  64. package/dist/lib/charts/SuperChart/config/index.js +243 -0
  65. package/dist/lib/charts/SuperChart/configStyle/color.js +29 -0
  66. package/dist/lib/charts/SuperChart/configStyle/dataZoom.js +19 -0
  67. package/dist/lib/charts/SuperChart/configStyle/grid.js +26 -0
  68. package/dist/lib/charts/SuperChart/configStyle/index.js +76 -0
  69. package/dist/lib/charts/SuperChart/configStyle/legend.js +74 -0
  70. package/dist/lib/charts/SuperChart/configStyle/lineStyle.js +86 -0
  71. package/dist/lib/charts/SuperChart/configStyle/title.js +22 -0
  72. package/dist/lib/charts/SuperChart/configStyle/tooltip.js +44 -0
  73. package/dist/lib/charts/SuperChart/configStyle/visualMap.js +24 -0
  74. package/dist/lib/charts/SuperChart/configStyle/xAxis.js +25 -0
  75. package/dist/lib/charts/SuperChart/configStyle/yAxis.js +62 -0
  76. package/dist/lib/charts/SuperChart/interface.js +5 -0
  77. package/dist/lib/charts/chartTheme/colorUtil.js +28 -0
  78. package/dist/lib/charts/chartTheme/darkChart.js +514 -0
  79. package/dist/lib/charts/chartTheme/defaultChart.js +498 -0
  80. package/dist/lib/charts/chartTheme/index.js +49 -0
  81. package/dist/lib/charts/chartTheme/themeColor.js +174 -0
  82. package/dist/lib/charts/index.js +60 -0
  83. package/dist/lib/charts/utils/charts/hex2Rgb.js +38 -0
  84. package/dist/lib/charts/utils/constants/env.js +12 -0
  85. package/dist/lib/charts/utils/constants/helper.js +11 -0
  86. package/dist/lib/charts/utils/constants/index.js +38 -0
  87. package/dist/lib/charts/utils/constants/table.js +23 -0
  88. package/dist/lib/charts/utils/data.js +454 -0
  89. package/dist/lib/charts/utils/index.js +60 -0
  90. package/dist/lib/charts/utils/locale.js +13 -0
  91. package/dist/lib/charts/utils/time/index.js +21 -0
  92. package/dist/lib/charts/utils/types/action.d.ts +33 -0
  93. package/dist/lib/charts/utils/types/chart.d.ts +220 -0
  94. package/dist/lib/charts/utils/types/data.d.ts +51 -0
  95. package/dist/lib/charts/utils/types/index.d.ts +3 -0
  96. package/dist/lib/index.js +25 -0
  97. package/package.json +2 -1
@@ -0,0 +1,714 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _excluded = ["value", "name"],
3
+ _excluded2 = ["value", "name"],
4
+ _excluded3 = ["dataset"];
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
11
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
13
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
16
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
17
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
+ import { has, isArray, merge, uniq } from "lodash";
19
+ import moment from "moment";
20
+ import { accMod, getIntervals, isNumeric, smartMergeIntervals } from "../../utils/data";
21
+ var intervalUnit = /*#__PURE__*/function (intervalUnit) {
22
+ intervalUnit["second"] = "s";
23
+ intervalUnit["minute"] = "m";
24
+ intervalUnit["hour"] = "h";
25
+ intervalUnit["day"] = "d";
26
+ intervalUnit["week"] = "w";
27
+ intervalUnit["month"] = "M";
28
+ intervalUnit["year"] = "y";
29
+ return intervalUnit;
30
+ }(intervalUnit || {});
31
+ var dateFormatType = /*#__PURE__*/function (dateFormatType) {
32
+ dateFormatType["second"] = "YYYY-MM-DD HH:mm:ss";
33
+ dateFormatType["minute"] = "YYYY-MM-DD HH:mm";
34
+ dateFormatType["hour"] = "YYYY-MM-DD HH";
35
+ dateFormatType["day"] = "YYYY-MM-DD";
36
+ dateFormatType["week"] = "YYYY-MM-DD";
37
+ dateFormatType["month"] = "YYYY-MM";
38
+ dateFormatType["year"] = "YYYY";
39
+ return dateFormatType;
40
+ }(dateFormatType || {});
41
+ var fillWithType = /*#__PURE__*/function (fillWithType) {
42
+ fillWithType["empty"] = "EMPTY";
43
+ fillWithType["zero"] = "ZERO";
44
+ fillWithType["line"] = "LINE";
45
+ return fillWithType;
46
+ }(fillWithType || {});
47
+ // 对图表数据根据间隔进行补齐
48
+ export var getDataFromKey = function getDataFromKey(list) {
49
+ var dimensions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
50
+ var timestamp = arguments.length > 2 ? arguments[2] : undefined;
51
+ var data = new Map();
52
+ if (!list || !dimensions) {
53
+ return data;
54
+ }
55
+ var xKey = dimensions.length > 0 ? dimensions[0] : "name";
56
+ list.forEach(function (item) {
57
+ data.set(timestamp ? parseInt(item[xKey]) : item[xKey], item);
58
+ });
59
+ return data;
60
+ };
61
+ var diffDateByInterval = function diffDateByInterval(start, end, interval) {
62
+ for (var key in intervalUnit) {
63
+ if (intervalUnit[key] === interval.intervalUnit) {
64
+ var diff = moment(end).diff(start, interval.intervalUnit);
65
+ return (diff ? diff : 0) / interval.intervalNum;
66
+ }
67
+ }
68
+ return 0;
69
+ };
70
+ var calculateXForNum = function calculateXForNum(start, end, interval) {
71
+ var newXList = [];
72
+ var temp = start;
73
+ var intervalGap = (end - start) / interval;
74
+ for (var i = 0; i <= intervalGap; i++) {
75
+ newXList.push(temp.toString());
76
+ temp += interval;
77
+ }
78
+ return newXList;
79
+ };
80
+ export var getIsTimestamp = function getIsTimestamp(timestamp) {
81
+ var regex = /^\d{13}$/;
82
+ if (regex.test(timestamp)) {
83
+ var date = new Date(timestamp * 1000);
84
+ return !isNaN(date.getTime());
85
+ }
86
+ return false;
87
+ };
88
+ export var calculateXForDate = function calculateXForDate(start, end, interval, isTimestamp) {
89
+ var newXList = [];
90
+ var intervalGap = diffDateByInterval(start, end, interval);
91
+ var temp = start;
92
+ for (var i = 0; i <= intervalGap; i++) {
93
+ newXList.push(temp);
94
+ for (var key in intervalUnit) {
95
+ if (intervalUnit[key] === interval.intervalUnit) {
96
+ if (isTimestamp) {
97
+ temp = moment(temp).add(interval.intervalNum, interval.intervalUnit).valueOf();
98
+ } else {
99
+ temp = moment(temp).add(interval.intervalNum, interval.intervalUnit).format(dateFormatType[key]);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ return newXList;
105
+ };
106
+ export var autoCalculateXData = function autoCalculateXData(data, dataFillConfig) {
107
+ var dimensions = (dataFillConfig === null || dataFillConfig === void 0 ? void 0 : dataFillConfig.dimensions) || ["name", "value"];
108
+ var newXData = new Set();
109
+ data === null || data === void 0 || data.forEach(function (item) {
110
+ var _item$source;
111
+ item === null || item === void 0 || (_item$source = item.source) === null || _item$source === void 0 || _item$source.forEach(function (obj) {
112
+ var xVal = obj["".concat(dimensions[0])];
113
+ newXData.add(xVal);
114
+ });
115
+ });
116
+ if (dataFillConfig !== null && dataFillConfig !== void 0 && dataFillConfig.sort) {
117
+ if (dataFillConfig.sortDataType === "time") {
118
+ //默认为升序 ascend
119
+ if (dataFillConfig.sort === "descend") {
120
+ //若为降序
121
+ return _toConsumableArray(newXData).sort(function (a, b) {
122
+ return a < b ? 1 : -1;
123
+ });
124
+ } else {
125
+ //升序
126
+ return _toConsumableArray(newXData).sort(function (a, b) {
127
+ return a > b ? 1 : -1;
128
+ });
129
+ }
130
+ } else if (dataFillConfig.sortDataType === "number") {
131
+ //默认为升序 ascend
132
+ if (dataFillConfig.sort === "descend") {
133
+ //若为降序
134
+ return _toConsumableArray(newXData).sort(function (a, b) {
135
+ return b - a;
136
+ });
137
+ } else {
138
+ //升序
139
+ return _toConsumableArray(newXData).sort(function (a, b) {
140
+ return a - b;
141
+ });
142
+ }
143
+ } else {
144
+ //string
145
+ if (dataFillConfig.sort === "descend") {
146
+ //若为降序
147
+ return _toConsumableArray(newXData).sort().reverse();
148
+ } else {
149
+ //升序
150
+ return _toConsumableArray(newXData).sort();
151
+ }
152
+ }
153
+ }
154
+ return _toConsumableArray(newXData);
155
+ };
156
+
157
+ // 补齐x轴坐标
158
+ export var calculateXData = function calculateXData(range, interval, isTimestamp) {
159
+ if (!range || !interval) {
160
+ return;
161
+ }
162
+ if (interval.length > 1) {
163
+ var newInterval = {
164
+ intervalNum: interval[0],
165
+ intervalUnit: interval[1]
166
+ };
167
+ return calculateXForDate(range[0], range[1], newInterval, isTimestamp);
168
+ } else {
169
+ return calculateXForNum(Number(range[0]), Number(range[1]), interval[0]);
170
+ }
171
+ };
172
+ var getFillLineValue = function getFillLineValue(xData, dataMap, index) {
173
+ var dimensions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
174
+ var yKey = dimensions.length > 1 ? dimensions[1] : "value";
175
+ var left = index - 1,
176
+ right = index + 1;
177
+ var leftVal = undefined,
178
+ rightVal = undefined;
179
+ while (left >= 0) {
180
+ if (dataMap.has(xData[left])) {
181
+ var _dataMap$get;
182
+ leftVal = parseFloat((_dataMap$get = dataMap.get(xData[left])) === null || _dataMap$get === void 0 ? void 0 : _dataMap$get[yKey]);
183
+ break;
184
+ }
185
+ left--;
186
+ }
187
+ while (right <= xData.length) {
188
+ if (dataMap.has(xData[right])) {
189
+ var _dataMap$get2;
190
+ rightVal = parseFloat((_dataMap$get2 = dataMap.get(xData[right])) === null || _dataMap$get2 === void 0 ? void 0 : _dataMap$get2[yKey]);
191
+ break;
192
+ }
193
+ right++;
194
+ }
195
+ if (leftVal !== undefined && rightVal !== undefined) {
196
+ var num = leftVal + (rightVal - leftVal) / (right - left) * (index - left);
197
+ return num.toFixed(2);
198
+ } else {
199
+ return "";
200
+ }
201
+ };
202
+ var getSimpleFillValue = function getSimpleFillValue(fillWith) {
203
+ switch (fillWith) {
204
+ case fillWithType.zero:
205
+ return "0";
206
+ case fillWithType.empty:
207
+ return "";
208
+ default:
209
+ return fillWith;
210
+ }
211
+ };
212
+ export var getFillValue = function getFillValue(xData, fillWith, dataMap, index) {
213
+ var dimensions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
214
+ switch (fillWith) {
215
+ case fillWithType.line:
216
+ if (index !== 0 && index !== xData.length) {
217
+ var val = getFillLineValue(xData, dataMap, index, dimensions);
218
+ return val.toString();
219
+ } else {
220
+ return "";
221
+ }
222
+ default:
223
+ return getSimpleFillValue(fillWith);
224
+ }
225
+ };
226
+ export var calculateYData = function calculateYData(xData, dataMap, fillWith) {
227
+ var dimensions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
228
+ if (!xData) {
229
+ return;
230
+ }
231
+ var yData = [];
232
+ var yKey = dimensions && dimensions.length > 1 ? dimensions[1] : "value";
233
+ for (var i = 0; i < xData.length; i++) {
234
+ var xVal = xData[i];
235
+ if (dataMap.has(xVal)) {
236
+ var _dataMap$get3;
237
+ yData.push((_dataMap$get3 = dataMap.get(xData[i])) === null || _dataMap$get3 === void 0 ? void 0 : _dataMap$get3[yKey]);
238
+ } else {
239
+ var fillValue = getFillValue(xData, fillWith, dataMap, i, dimensions);
240
+ yData.push(fillValue);
241
+ }
242
+ }
243
+ return yData;
244
+ };
245
+ export var getNewList = function getNewList(xData, dataMap, yData) {
246
+ var dimensions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ["name", "value"];
247
+ if (!xData || !yData) {
248
+ return;
249
+ }
250
+ var newList = [];
251
+
252
+ //保存dataMap中除name和value的其他属性
253
+ var newValueList = [];
254
+ var dataMapOtherProps = {};
255
+ xData.forEach(function (i) {
256
+ if (dataMap.has(i)) {
257
+ newValueList.push(dataMap.get(i));
258
+ }
259
+ });
260
+ //将对象数组的所有属性合并到对象中
261
+ var mergedObj = Object.assign.apply(Object, [{}].concat(newValueList));
262
+ var value = mergedObj.value,
263
+ name = mergedObj.name,
264
+ OtherProps = _objectWithoutProperties(mergedObj, _excluded);
265
+ dataMapOtherProps = OtherProps;
266
+ var _loop = function _loop(i) {
267
+ if (dataMap.has(xData[i])) {
268
+ newList.push(dataMap.get(xData[i]));
269
+ var _dataMap$get4 = dataMap.get(xData[i]),
270
+ _value = _dataMap$get4.value,
271
+ _name = _dataMap$get4.name,
272
+ _OtherProps = _objectWithoutProperties(_dataMap$get4, _excluded2);
273
+ dataMapOtherProps = _OtherProps;
274
+ } else {
275
+ var obj = {};
276
+ dimensions.forEach(function (item, index) {
277
+ if (index === 0) {
278
+ obj[item] = xData[i];
279
+ obj = _objectSpread(_objectSpread({}, obj), dataMapOtherProps);
280
+ } else if (index === 1) {
281
+ obj[item] = yData[i];
282
+ } else {
283
+ obj[item] = "";
284
+ }
285
+ });
286
+ newList.push(obj);
287
+ }
288
+ };
289
+ for (var i = 0; i < xData.length; i++) {
290
+ _loop(i);
291
+ }
292
+ return newList;
293
+ };
294
+ export var complementData = function complementData(list) {
295
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
296
+ range = _ref.range,
297
+ XData = _ref.XData,
298
+ fillWith = _ref.fillWith,
299
+ _ref$dimensions = _ref.dimensions,
300
+ dimensions = _ref$dimensions === void 0 ? ["name", "value"] : _ref$dimensions,
301
+ interval = _ref.interval,
302
+ isTimestamp = _ref.isTimestamp;
303
+ var timestamp = isTimestamp ? isTimestamp : getIsTimestamp(range === null || range === void 0 ? void 0 : range[0]);
304
+ // 生成x:y的map
305
+ var dataMap = getDataFromKey(list, dimensions, timestamp);
306
+ // 根据range和interval生成一个完整的x数据
307
+ var newXData = XData ? XData : calculateXData(range, interval, timestamp);
308
+
309
+ // 根据新的x数据,dataMap和要填充的值生成y数据
310
+ var newYData = calculateYData(newXData, dataMap, fillWith, dimensions);
311
+
312
+ // 整理为[{name: x, value: y, ...}]的形式
313
+ var newList = getNewList(newXData, dataMap, newYData, dimensions);
314
+ return {
315
+ newList: newList,
316
+ newXData: newXData,
317
+ newYData: newYData
318
+ };
319
+ };
320
+ export var extractXData = function extractXData(data) {
321
+ var xKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "name";
322
+ if (!data) return;
323
+ var xData = [];
324
+ data.forEach(function (item) {
325
+ if (has(item, xKey)) {
326
+ xData.push(item[xKey]);
327
+ }
328
+ });
329
+ return uniq(xData);
330
+ };
331
+ export var extractSourceData = function extractSourceData(data, xFormatter) {
332
+ var xKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "name";
333
+ if ((xFormatter === null || xFormatter === void 0 ? void 0 : xFormatter.type) === "time") {
334
+ data.forEach(function (item) {
335
+ if (isNumeric(item[xKey])) {
336
+ var val = moment(Number(item[xKey])).format(xFormatter === null || xFormatter === void 0 ? void 0 : xFormatter.formatter);
337
+ item.originTimestamp = item[xKey];
338
+ item[xKey] = val;
339
+ }
340
+ });
341
+ }
342
+ return data;
343
+ };
344
+
345
+ /**
346
+ * 获取被压缩掉的值
347
+ * @param dataset 图表数据集
348
+ * @param param1
349
+ * @returns
350
+ */
351
+
352
+ export var getCompressedValue = function getCompressedValue(data, rule) {
353
+ var _startGroup, _endGroup;
354
+ var dataset = data.dataset;
355
+ var fillGroupKey = rule.fillGroupKey,
356
+ param = rule.param,
357
+ _rule$fillField = rule.fillField,
358
+ fillField = _rule$fillField === void 0 ? ["max", "min"] : _rule$fillField;
359
+ var startGroup,
360
+ endGroup,
361
+ output = 0;
362
+ if (fillGroupKey && fillField) {
363
+ startGroup = dataset.find(function (item) {
364
+ return item.groupKey === fillGroupKey[0];
365
+ });
366
+ endGroup = dataset.find(function (item) {
367
+ return item.groupKey === fillGroupKey[1];
368
+ });
369
+ if (startGroup && startGroup[fillField[0]] && endGroup && endGroup[fillField[1]]) {
370
+ output = Math.floor(Number(endGroup[fillField[1]]) - Number(startGroup[fillField[0]]) - param);
371
+ }
372
+ }
373
+ return _objectSpread(_objectSpread({}, data), {}, {
374
+ dataset: dataset,
375
+ startGroup: startGroup,
376
+ endGroup: endGroup,
377
+ start: (_startGroup = startGroup) === null || _startGroup === void 0 ? void 0 : _startGroup[fillField[0]],
378
+ end: (_endGroup = endGroup) === null || _endGroup === void 0 ? void 0 : _endGroup[fillField[1]],
379
+ output: output
380
+ });
381
+ };
382
+ export var valueToFixed = function valueToFixed(data, rule) {
383
+ var dataset = data.dataset;
384
+ var param = rule.param,
385
+ fillField = rule.fillField;
386
+ var toFixed = function toFixed(json, field) {
387
+ if (has(json, field)) {
388
+ json[field] = Number(json[field]).toFixed(param);
389
+ }
390
+ };
391
+ var handleFieldValue = function handleFieldValue(json) {
392
+ return fillField.forEach(function (field) {
393
+ toFixed(json, field);
394
+ });
395
+ };
396
+ var loopHandle = function loopHandle(res) {
397
+ var list = res.source || res;
398
+ if (isArray(list)) {
399
+ list.forEach(function (item) {
400
+ loopHandle(item);
401
+ });
402
+ }
403
+ handleFieldValue(res);
404
+ };
405
+ loopHandle(dataset);
406
+ return _objectSpread(_objectSpread({}, data), {}, {
407
+ dataset: dataset
408
+ });
409
+ };
410
+
411
+ /**
412
+ *
413
+ * @param param0 // range: ["(,80)", "[100,)"], //[起始点、结束点]
414
+ // rangeType:'interval'
415
+ // rangeSuffix: '%',
416
+ // interval: [2],
417
+ // fillWith: 'ZERO', //填充规则
418
+ * @returns
419
+ */
420
+ export var fillRangeInterval = function fillRangeInterval(_ref2) {
421
+ var range = _ref2.range,
422
+ interval = _ref2.interval,
423
+ _ref2$rangeSuffix = _ref2.rangeSuffix,
424
+ rangeSuffix = _ref2$rangeSuffix === void 0 ? "" : _ref2$rangeSuffix;
425
+ var starts = getIntervals(range[0]);
426
+ var ends = getIntervals(range[1]);
427
+ var ranges = [range[0]];
428
+ if (starts && ends) {
429
+ var i = isNumeric(starts[2]) ? Number(starts[2]) + interval[0] : Number(starts[3]);
430
+ while (i < Number(ends[2])) {
431
+ ranges.push("[".concat(i).concat(rangeSuffix, ",").concat(i + interval[0]).concat(rangeSuffix, ")"));
432
+ i += interval[0];
433
+ }
434
+ }
435
+ ranges.push(range[1]);
436
+ return ranges;
437
+ };
438
+ export var fillDataWithRule = function fillDataWithRule(data, rule) {
439
+ var dataset = data.dataset;
440
+ var param = rule.param,
441
+ fillField = rule.fillField;
442
+ var valueToFill = function valueToFill(_param) {
443
+ switch (_param.rangeType) {
444
+ case "interval":
445
+ return fillRangeInterval(_param);
446
+ default:
447
+ return _param.range;
448
+ }
449
+ };
450
+ var resolvedField = valueToFill(param);
451
+ var resolvedFillValue = getSimpleFillValue(param.fillWith);
452
+ var handleFieldValue = function handleFieldValue(list) {
453
+ return resolvedField.map(function (name) {
454
+ var item = list.find(function (_json) {
455
+ return (_json === null || _json === void 0 ? void 0 : _json[fillField[0]]) === name;
456
+ });
457
+ if (item) {
458
+ return item;
459
+ }
460
+ var _res = {};
461
+ fillField.forEach(function (_key, _index) {
462
+ if (_index === 0) {
463
+ _res[_key] = name;
464
+ } else {
465
+ _res[_key] = resolvedFillValue;
466
+ }
467
+ });
468
+ return _res;
469
+ });
470
+ };
471
+ var loopHandle = function loopHandle(res) {
472
+ var _list$;
473
+ var list = res.source || res;
474
+ if (isArray(list) && list !== null && list !== void 0 && (_list$ = list[0]) !== null && _list$ !== void 0 && _list$.source) {
475
+ list.forEach(function (item) {
476
+ loopHandle(item.source);
477
+ });
478
+ }
479
+ return handleFieldValue(res);
480
+ };
481
+ return _objectSpread(_objectSpread({}, data), {}, {
482
+ dataset: loopHandle(dataset)
483
+ });
484
+ };
485
+ export var mergeIntervals = function mergeIntervals(data, rule) {
486
+ var dataset = data.dataset;
487
+ var param = rule.param,
488
+ fillField = rule.fillField;
489
+ var loopHandle = function loopHandle(res) {
490
+ var _list$2;
491
+ var list = res.source || res;
492
+ if (isArray(list) && list !== null && list !== void 0 && (_list$2 = list[0]) !== null && _list$2 !== void 0 && _list$2.source) {
493
+ list.forEach(function (item) {
494
+ loopHandle(item.source);
495
+ });
496
+ }
497
+ return smartMergeIntervals(list, fillField, param);
498
+ };
499
+ return _objectSpread(_objectSpread({}, data), {}, {
500
+ dataset: loopHandle(dataset)
501
+ });
502
+ };
503
+ export var getTotal = function getTotal(data) {
504
+ var fillFiedld = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "value";
505
+ var total = 0;
506
+ data === null || data === void 0 || data.forEach(function (item) {
507
+ return total += Number(item === null || item === void 0 ? void 0 : item["".concat(fillFiedld)]) ? Number(item === null || item === void 0 ? void 0 : item["".concat(fillFiedld)]) : 0;
508
+ });
509
+ return total;
510
+ };
511
+ export var fillTotalByList = function fillTotalByList(list, fillField) {
512
+ var total = getTotal(list, fillField);
513
+ return list.map(function (item) {
514
+ item.total = total;
515
+ return item;
516
+ });
517
+ };
518
+ export var fillTotal = function fillTotal(data, rule, type) {
519
+ var dataset = data.dataset;
520
+ var fillField = rule.fillField,
521
+ fillGroupKey = rule.fillGroupKey;
522
+ var loopHandle = function loopHandle(res) {
523
+ var _list$3;
524
+ var key = type === "pie" ? "data" : "source";
525
+ var list = res["".concat(key)] || res;
526
+ if (isArray(list) && list !== null && list !== void 0 && (_list$3 = list[0]) !== null && _list$3 !== void 0 && _list$3["".concat(key)]) {
527
+ list.forEach(function (item) {
528
+ if (fillGroupKey && item !== null && item !== void 0 && item.groupKey && !fillGroupKey.includes(item === null || item === void 0 ? void 0 : item.groupKey)) {
529
+ return;
530
+ } else {
531
+ loopHandle(item["".concat(key)]);
532
+ }
533
+ });
534
+ }
535
+ return fillTotalByList(list, fillField);
536
+ };
537
+ return _objectSpread(_objectSpread({}, data), {}, {
538
+ dataset: loopHandle(dataset)
539
+ });
540
+ };
541
+ export var unitTransformByList = function unitTransformByList(list, fillField, param) {
542
+ var isShowUnit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
543
+ return list.map(function (item) {
544
+ var data = item === null || item === void 0 ? void 0 : item["".concat(fillField)];
545
+ switch (param) {
546
+ case "K":
547
+ data = accMod(data, 1000) + (isShowUnit ? "K" : "");
548
+ break;
549
+ case "W":
550
+ data = accMod(data, 10000) + (isShowUnit ? "W" : "");
551
+ break;
552
+ default:
553
+ break;
554
+ }
555
+ item["".concat(fillField)] = data;
556
+ return item;
557
+ });
558
+ };
559
+ export var unitTransform = function unitTransform(data, rule, type) {
560
+ var dataset = data.dataset;
561
+ var fillField = rule.fillField,
562
+ param = rule.param,
563
+ fillGroupKey = rule.fillGroupKey,
564
+ isShowUnit = rule.isShowUnit;
565
+ var loopHandle = function loopHandle(res) {
566
+ var _list$4;
567
+ var key = type === "pie" ? "data" : "source";
568
+ var list = res["".concat(key)] || res;
569
+ if (isArray(list) && list !== null && list !== void 0 && (_list$4 = list[0]) !== null && _list$4 !== void 0 && _list$4["".concat(key)]) {
570
+ list.forEach(function (item) {
571
+ if (fillGroupKey && item !== null && item !== void 0 && item.groupKey && !fillGroupKey.includes(item === null || item === void 0 ? void 0 : item.groupKey)) {
572
+ return;
573
+ } else {
574
+ loopHandle(item["".concat(key)]);
575
+ }
576
+ });
577
+ }
578
+ return unitTransformByList(list, fillField, param, isShowUnit);
579
+ };
580
+ return _objectSpread(_objectSpread({}, data), {}, {
581
+ dataset: loopHandle(dataset)
582
+ });
583
+ };
584
+ export var transformHandler = function transformHandler(data, rule, chartType) {
585
+ var dataset = data.dataset;
586
+ var type = rule.type,
587
+ fillGroupKey = rule.fillGroupKey,
588
+ param = rule.param,
589
+ _rule$fillField2 = rule.fillField,
590
+ fillField = _rule$fillField2 === void 0 ? ["max", "min"] : _rule$fillField2;
591
+ // debugger;
592
+ var compress;
593
+ var minData;
594
+ switch (type) {
595
+ case "waterfall":
596
+ minData = dataset.find(function (item) {
597
+ return item.groupKey === fillGroupKey[0];
598
+ });
599
+ return _objectSpread(_objectSpread({}, data), {}, {
600
+ dataset: dataset.map(function (item) {
601
+ var source = item.source,
602
+ groupKey = item.groupKey;
603
+ if (fillGroupKey[1] === groupKey) {
604
+ var res = source.map(function (row, index) {
605
+ var diffValue = row.value - minData.source[index].value;
606
+ var value = param ? diffValue - (item[fillField[1]] - minData[fillField[0]]) + param : diffValue;
607
+ // debugger;
608
+ return _objectSpread(_objectSpread({}, row), {}, {
609
+ value: value
610
+ });
611
+ });
612
+ return _objectSpread(_objectSpread({}, item), {}, {
613
+ source: res
614
+ });
615
+ }
616
+ return item;
617
+ })
618
+ });
619
+ case "compress":
620
+ compress = getCompressedValue(data, rule);
621
+ return compress;
622
+ case "toFixed":
623
+ return valueToFixed(data, rule);
624
+ case "dataFill":
625
+ return fillDataWithRule(data, rule);
626
+ case "mergeIntervals":
627
+ return mergeIntervals(data, rule);
628
+ case "fillTotal":
629
+ return fillTotal(data, rule, chartType);
630
+ case "unitTransform":
631
+ return unitTransform(data, rule, chartType);
632
+ default:
633
+ return data;
634
+ }
635
+ };
636
+ export var transformWithConfig = function transformWithConfig(dataset, transform, type) {
637
+ return transform.reduce(function (res, rule) {
638
+ var value = transformHandler(res, rule, type);
639
+ return value;
640
+ }, {
641
+ dataset: dataset
642
+ });
643
+ };
644
+
645
+ /**
646
+ * 处理坐标选项
647
+ * @param configData 用户的图表配置
648
+ * @param axisName xAxis/yAxis
649
+ * @param dataset 图表的数据集
650
+ * @returns
651
+ */
652
+ export var formatterAxis = function formatterAxis(configData, axisName, _ref3) {
653
+ var dataset = _ref3.dataset,
654
+ transformData = _objectWithoutProperties(_ref3, _excluded3);
655
+ var axis = configData[axisName];
656
+ if (!axis) {
657
+ return {};
658
+ }
659
+ var resolveFormatter = function resolveFormatter() {
660
+ var item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
661
+ var formatter = item.axisLabel && item.axisLabel.formatter ? item.axisLabel.formatter : item.unit ? "{value}".concat(item.unit) : "{value}";
662
+ if (item !== null && item !== void 0 && item.createFormatter) {
663
+ formatter = item.createFormatter(_objectSpread({
664
+ dataset: dataset
665
+ }, transformData), item);
666
+ }
667
+ var newAxis = {
668
+ axisLabel: {
669
+ formatter: formatter
670
+ }
671
+ };
672
+ if (item !== null && item !== void 0 && item.labelBreak) {
673
+ item.axisLabel = _objectSpread(_objectSpread({
674
+ width: 80,
675
+ overflow: "break",
676
+ interval: 0,
677
+ hideOverlap: true
678
+ }, item === null || item === void 0 ? void 0 : item.axisLabel), {}, {
679
+ formatter: formatter
680
+ });
681
+ }
682
+ if (item.createSplitNumber) {
683
+ newAxis.splitNumber = item.createSplitNumber(_objectSpread({
684
+ dataset: dataset
685
+ }, transformData));
686
+ }
687
+ if (item.createData) {
688
+ newAxis.data = item.createData(_objectSpread({
689
+ dataset: dataset
690
+ }, transformData));
691
+ }
692
+ return merge({}, item, newAxis);
693
+ };
694
+ if (Array.isArray(axis)) {
695
+ return axis.map(resolveFormatter);
696
+ }
697
+ return resolveFormatter(axis);
698
+ };
699
+
700
+ // 给data补齐percent: 百分比数据
701
+ export var complementPercentData = function complementPercentData(data) {
702
+ if (data && data.length > 0) {
703
+ var total = getTotal(data);
704
+ data.forEach(function (item) {
705
+ var percent = ((item === null || item === void 0 ? void 0 : item.value) || 0) / total * 100;
706
+ if (percent.toString().includes(".")) {
707
+ item.percent = percent.toFixed(2) + "%";
708
+ } else {
709
+ item.percent = percent + "%";
710
+ }
711
+ });
712
+ }
713
+ return data;
714
+ };