utils.js 2.6 KB

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