utils.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { __assign } from "tslib";
  2. import { get, isNumber, isObject, isUndefined, reduce } from '@antv/util';
  3. import { LEVEL, log } from '../../utils';
  4. import { ABSOLUTE_FIELD, DIFF_FIELD, IS_TOTAL, Y_FIELD } from './constant';
  5. /**
  6. * @desc 数据处理函数,统一将数据处理成[start, end]
  7. * @param data
  8. * @param xField
  9. * @param yField
  10. * @param totalLabel
  11. */
  12. export function processData(data, xField, yField, newYField, total) {
  13. var _a;
  14. var newData = [];
  15. reduce(data, function (r, d) {
  16. var _a;
  17. // 校验数据合法性
  18. log(LEVEL.WARN, isNumber(d[yField]), "".concat(d[yField], " is not a valid number"));
  19. var value = isUndefined(d[yField]) ? null : d[yField];
  20. newData.push(__assign(__assign({}, d), (_a = {}, _a[newYField] = [r, r + value], _a)));
  21. return r + value;
  22. }, 0);
  23. // 如果需要展示总和
  24. if (newData.length && total) {
  25. var sum = get(newData, [[data.length - 1], newYField, [1]]);
  26. newData.push((_a = {},
  27. _a[xField] = total.label,
  28. _a[yField] = sum,
  29. _a[newYField] = [0, sum],
  30. _a));
  31. }
  32. return newData;
  33. }
  34. /**
  35. * 处理为 瀑布图 数据
  36. */
  37. export function transformData(data, xField, yField, total) {
  38. var processed = processData(data, xField, yField, Y_FIELD, total);
  39. return processed.map(function (d, dIdx) {
  40. var _a;
  41. if (!isObject(d)) {
  42. return d;
  43. }
  44. return __assign(__assign({}, d), (_a = {}, _a[ABSOLUTE_FIELD] = d[Y_FIELD][1], _a[DIFF_FIELD] = d[Y_FIELD][1] - d[Y_FIELD][0], _a[IS_TOTAL] = dIdx === data.length, _a));
  45. });
  46. }
  47. //# sourceMappingURL=utils.js.map