utils.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.transformData = void 0;
  4. /**
  5. * 获取分类字段 key 值 一个分类值的时候, 返回非索引 key 值,在 tooltip 不做索引区分
  6. * @param values 数据量
  7. * @param field 指标字段
  8. * @param index 索引
  9. * @returns string
  10. */
  11. function getSeriesFieldKey(values, field, index) {
  12. return values.length > 1 ? "".concat(field, "_").concat(index) : "".concat(field);
  13. }
  14. /**
  15. * bullet 处理数据
  16. * @param options
  17. */
  18. function transformData(options) {
  19. var data = options.data, xField = options.xField, measureField = options.measureField, rangeField = options.rangeField, targetField = options.targetField, layout = options.layout;
  20. var ds = [];
  21. var scales = [];
  22. data.forEach(function (item, index) {
  23. // 构建 title * range
  24. var rangeValues = [item[rangeField]].flat();
  25. rangeValues.sort(function (a, b) { return a - b; });
  26. rangeValues.forEach(function (d, i) {
  27. var _a;
  28. var range = i === 0 ? d : rangeValues[i] - rangeValues[i - 1];
  29. ds.push((_a = {
  30. rKey: "".concat(rangeField, "_").concat(i)
  31. },
  32. _a[xField] = xField ? item[xField] : String(index),
  33. _a[rangeField] = range,
  34. _a));
  35. });
  36. // 构建 title * measure
  37. var measureValues = [item[measureField]].flat();
  38. measureValues.forEach(function (d, i) {
  39. var _a;
  40. ds.push((_a = {
  41. mKey: getSeriesFieldKey(measureValues, measureField, i)
  42. },
  43. _a[xField] = xField ? item[xField] : String(index),
  44. _a[measureField] = d,
  45. _a));
  46. });
  47. // 构建 title * target
  48. var targetValues = [item[targetField]].flat();
  49. targetValues.forEach(function (d, i) {
  50. var _a;
  51. ds.push((_a = {
  52. tKey: getSeriesFieldKey(targetValues, targetField, i)
  53. },
  54. _a[xField] = xField ? item[xField] : String(index),
  55. _a[targetField] = d,
  56. _a));
  57. });
  58. // 为了取最大值和最小值,先存储
  59. scales.push(item[rangeField], item[measureField], item[targetField]);
  60. });
  61. // scales 是嵌套的需要拍平
  62. var min = Math.min.apply(Math, scales.flat(Infinity));
  63. var max = Math.max.apply(Math, scales.flat(Infinity));
  64. // min 大于 0 从 0 开始
  65. min = min > 0 ? 0 : min;
  66. // 垂直情况,需要反转数据
  67. if (layout === 'vertical') {
  68. ds.reverse();
  69. }
  70. return { min: min, max: max, ds: ds };
  71. }
  72. exports.transformData = transformData;
  73. //# sourceMappingURL=utils.js.map