common.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.conversionTagComponent = exports.transformData = exports.CONVERSION_TAG_NAME = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var constant_1 = require("../constant");
  7. exports.CONVERSION_TAG_NAME = 'CONVERSION_TAG_NAME';
  8. /**
  9. * 漏斗图 transform
  10. * @param geometry
  11. */
  12. function transformData(data, originData, options) {
  13. var formatData = [];
  14. var yField = options.yField, maxSize = options.maxSize, minSize = options.minSize;
  15. var maxYFieldValue = (0, util_1.get)((0, util_1.maxBy)(originData, yField), [yField]);
  16. var max = (0, util_1.isNumber)(maxSize) ? maxSize : 1;
  17. var min = (0, util_1.isNumber)(minSize) ? minSize : 0;
  18. // format 数据
  19. formatData = (0, util_1.map)(data, function (row, index) {
  20. var percent = (row[yField] || 0) / maxYFieldValue;
  21. row[constant_1.FUNNEL_PERCENT] = percent;
  22. row[constant_1.FUNNEL_MAPPING_VALUE] = (max - min) * percent + min;
  23. // 转化率数据存储前后数据
  24. row[constant_1.FUNNEL_CONVERSATION] = [(0, util_1.get)(data, [index - 1, yField]), row[yField]];
  25. return row;
  26. });
  27. return formatData;
  28. }
  29. exports.transformData = transformData;
  30. /**
  31. * 漏斗图通用转化率组件
  32. * @param getLineCoordinate 用于获取特定的 line 的位置及配置
  33. */
  34. function conversionTagComponent(getLineCoordinate) {
  35. return function (params) {
  36. var chart = params.chart, options = params.options;
  37. // @ts-ignore
  38. var conversionTag = options.conversionTag, filteredData = options.filteredData;
  39. var data = filteredData || chart.getOptions().data;
  40. if (conversionTag) {
  41. var formatter_1 = conversionTag.formatter;
  42. data.forEach(function (obj, index) {
  43. if (index <= 0 || Number.isNaN(obj[constant_1.FUNNEL_MAPPING_VALUE]))
  44. return;
  45. var lineOption = getLineCoordinate(obj, index, data, {
  46. top: true,
  47. name: exports.CONVERSION_TAG_NAME,
  48. text: {
  49. content: (0, util_1.isFunction)(formatter_1) ? formatter_1(obj, data) : formatter_1,
  50. offsetX: conversionTag.offsetX,
  51. offsetY: conversionTag.offsetY,
  52. position: 'end',
  53. autoRotate: false,
  54. style: tslib_1.__assign({ textAlign: 'start', textBaseline: 'middle' }, conversionTag.style),
  55. },
  56. });
  57. chart.annotation().line(lineOption);
  58. });
  59. }
  60. return params;
  61. };
  62. }
  63. exports.conversionTagComponent = conversionTagComponent;
  64. //# sourceMappingURL=common.js.map