025a5104ddf0e420f9d63efd2fd628cec4f7e8e6fe4f86543e3a06ca459239c247bf6a5d4ffbb705eb77128243355558983d90a08cad05d01f46474199e295 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.filterNonNumber = filterNonNumber;
  7. exports.deepMerge = deepMerge;
  8. exports.mulAdd = mulAdd;
  9. exports.mergeSameStackData = mergeSameStackData;
  10. exports.getTwoPointDistance = getTwoPointDistance;
  11. exports.getLinearGradientColor = getLinearGradientColor;
  12. exports.getPolylineLength = getPolylineLength;
  13. exports.getPointToLineDistance = getPointToLineDistance;
  14. exports.initNeedSeries = initNeedSeries;
  15. exports.radianToAngle = radianToAngle;
  16. var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
  17. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  18. var _util = require("@jiaminghi/c-render/lib/plugin/util");
  19. function filterNonNumber(array) {
  20. return array.filter(function (n) {
  21. return typeof n === 'number';
  22. });
  23. }
  24. function deepMerge(target, merged) {
  25. for (var key in merged) {
  26. if (target[key] && (0, _typeof2["default"])(target[key]) === 'object') {
  27. deepMerge(target[key], merged[key]);
  28. continue;
  29. }
  30. if ((0, _typeof2["default"])(merged[key]) === 'object') {
  31. target[key] = (0, _util.deepClone)(merged[key], true);
  32. continue;
  33. }
  34. target[key] = merged[key];
  35. }
  36. return target;
  37. }
  38. function mulAdd(nums) {
  39. nums = filterNonNumber(nums);
  40. return nums.reduce(function (all, num) {
  41. return all + num;
  42. }, 0);
  43. }
  44. function mergeSameStackData(item, series) {
  45. var stack = item.stack;
  46. if (!stack) return (0, _toConsumableArray2["default"])(item.data);
  47. var stacks = series.filter(function (_ref) {
  48. var s = _ref.stack;
  49. return s === stack;
  50. });
  51. var index = stacks.findIndex(function (_ref2) {
  52. var d = _ref2.data;
  53. return d === item.data;
  54. });
  55. var datas = stacks.splice(0, index + 1).map(function (_ref3) {
  56. var data = _ref3.data;
  57. return data;
  58. });
  59. var dataLength = datas[0].length;
  60. return new Array(dataLength).fill(0).map(function (foo, i) {
  61. return mulAdd(datas.map(function (d) {
  62. return d[i];
  63. }));
  64. });
  65. }
  66. function getTwoPointDistance(pointOne, pointTwo) {
  67. var minusX = Math.abs(pointOne[0] - pointTwo[0]);
  68. var minusY = Math.abs(pointOne[1] - pointTwo[1]);
  69. return Math.sqrt(minusX * minusX + minusY * minusY);
  70. }
  71. function getLinearGradientColor(ctx, begin, end, color) {
  72. if (!ctx || !begin || !end || !color.length) return;
  73. var colors = color;
  74. typeof colors === 'string' && (colors = [color, color]);
  75. var linearGradientColor = ctx.createLinearGradient.apply(ctx, (0, _toConsumableArray2["default"])(begin).concat((0, _toConsumableArray2["default"])(end)));
  76. var colorGap = 1 / (colors.length - 1);
  77. colors.forEach(function (c, i) {
  78. return linearGradientColor.addColorStop(colorGap * i, c);
  79. });
  80. return linearGradientColor;
  81. }
  82. function getPolylineLength(points) {
  83. var lineSegments = new Array(points.length - 1).fill(0).map(function (foo, i) {
  84. return [points[i], points[i + 1]];
  85. });
  86. var lengths = lineSegments.map(function (item) {
  87. return getTwoPointDistance.apply(void 0, (0, _toConsumableArray2["default"])(item));
  88. });
  89. return mulAdd(lengths);
  90. }
  91. function getPointToLineDistance(point, linePointOne, linePointTwo) {
  92. var a = getTwoPointDistance(point, linePointOne);
  93. var b = getTwoPointDistance(point, linePointTwo);
  94. var c = getTwoPointDistance(linePointOne, linePointTwo);
  95. return 0.5 * Math.sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) / c;
  96. }
  97. function initNeedSeries(series, config, type) {
  98. series = series.filter(function (_ref4) {
  99. var st = _ref4.type;
  100. return st === type;
  101. });
  102. series = series.map(function (item) {
  103. return deepMerge((0, _util.deepClone)(config, true), item);
  104. });
  105. return series.filter(function (_ref5) {
  106. var show = _ref5.show;
  107. return show;
  108. });
  109. }
  110. function radianToAngle(radian) {
  111. return radian / Math.PI * 180;
  112. }