interval-label.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.init = init;
  4. exports.afterGeomDraw = afterGeomDraw;
  5. exports.clearInner = clearInner;
  6. exports["default"] = void 0;
  7. var _common = require("../util/common");
  8. var DEFAULT_CFG = {
  9. label: null,
  10. offsetX: 0,
  11. offsetY: 0
  12. };
  13. var DEFAULT_LABEL_CFG = {
  14. textBaseline: 'middle',
  15. fill: '#808080'
  16. }; // 2个点的中心点
  17. function getMiddlePoint(a, b) {
  18. var x = (a.x - b.x) / 2 + b.x;
  19. var y = (a.y - b.y) / 2 + b.y;
  20. return {
  21. x: x,
  22. y: y
  23. };
  24. } // function getLabelPoint(points, nextPoints) {
  25. // let start;
  26. // if (nextPoints && nextPoints.length) {
  27. // start = getMiddlePoint(points[1], nextPoints[1]);
  28. // } else {
  29. // const nextPoint = getMiddlePoint(points[2], points[3]);
  30. // start = getMiddlePoint(points[1], nextPoint);
  31. // }
  32. // const end = getMiddlePoint(points[1], points[2]);
  33. // return { start, end };
  34. // }
  35. var Controller = /*#__PURE__*/function () {
  36. function Controller(_ref) {
  37. var chart = _ref.chart,
  38. container = _ref.container;
  39. this.cfg = null;
  40. this.chart = chart;
  41. this.container = container;
  42. }
  43. var _proto = Controller.prototype;
  44. _proto.draw = function draw() {
  45. var chart = this.chart,
  46. container = this.container,
  47. cfg = this.cfg;
  48. if (!cfg) return;
  49. var labelCfg = (0, _common.mix)({}, DEFAULT_CFG, cfg);
  50. var geom = chart.get('geoms')[0];
  51. var shapes = geom.get('container').get('children');
  52. shapes.forEach(function (shape) {
  53. var origin = shape.get('origin');
  54. var attrs = shape.get('attrs');
  55. var _origin = origin._origin,
  56. color = origin.color;
  57. var points = attrs.points;
  58. if (labelCfg.label) {
  59. var labelAttrs = labelCfg.label(_origin, color);
  60. var point = getMiddlePoint(points[1], points[2]);
  61. container.addShape('Text', {
  62. attrs: (0, _common.mix)({
  63. x: point.x + labelCfg.offsetX,
  64. y: point.y + labelCfg.offsetY
  65. }, DEFAULT_LABEL_CFG, labelAttrs)
  66. });
  67. }
  68. if (labelCfg.guide) {
  69. var _labelAttrs = labelCfg.guide(_origin, color);
  70. var _point = getMiddlePoint(getMiddlePoint(points[0], points[1]), getMiddlePoint(points[2], points[3] || points[2]));
  71. container.addShape('Text', {
  72. attrs: (0, _common.mix)({
  73. x: _point.x,
  74. y: _point.y,
  75. textBaseline: 'middle',
  76. textAlign: 'center'
  77. }, DEFAULT_LABEL_CFG, _labelAttrs)
  78. });
  79. }
  80. });
  81. };
  82. _proto.clear = function clear() {
  83. var container = this.container;
  84. container.clear();
  85. };
  86. return Controller;
  87. }();
  88. function init(chart) {
  89. var frontPlot = chart.get('frontPlot');
  90. var labelGroup = frontPlot.addGroup({
  91. className: 'label',
  92. zIndex: 0
  93. });
  94. var labelController = new Controller({
  95. chart: chart,
  96. container: labelGroup
  97. });
  98. chart.set('intervalLabelController', labelController);
  99. chart.intervalLabel = function (cfg) {
  100. labelController.cfg = cfg;
  101. };
  102. }
  103. function afterGeomDraw(chart) {
  104. var labelController = chart.get('intervalLabelController');
  105. labelController.draw();
  106. }
  107. function clearInner(chart) {
  108. var labelController = chart.get('intervalLabelController');
  109. labelController.clear();
  110. }
  111. var _default = {
  112. init: init,
  113. afterGeomDraw: afterGeomDraw,
  114. clearInner: clearInner
  115. };
  116. exports["default"] = _default;