| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import { mix } from '../util/common';
- var DEFAULT_CFG = {
- label: null,
- offsetX: 0,
- offsetY: 0
- };
- var DEFAULT_LABEL_CFG = {
- textBaseline: 'middle',
- fill: '#808080'
- }; // 2个点的中心点
- function getMiddlePoint(a, b) {
- var x = (a.x - b.x) / 2 + b.x;
- var y = (a.y - b.y) / 2 + b.y;
- return {
- x,
- y
- };
- } // function getLabelPoint(points, nextPoints) {
- // let start;
- // if (nextPoints && nextPoints.length) {
- // start = getMiddlePoint(points[1], nextPoints[1]);
- // } else {
- // const nextPoint = getMiddlePoint(points[2], points[3]);
- // start = getMiddlePoint(points[1], nextPoint);
- // }
- // const end = getMiddlePoint(points[1], points[2]);
- // return { start, end };
- // }
- class Controller {
- constructor(_ref) {
- var {
- chart,
- container
- } = _ref;
- this.cfg = null;
- this.chart = chart;
- this.container = container;
- }
- draw() {
- var {
- chart,
- container,
- cfg
- } = this;
- if (!cfg) return;
- var labelCfg = mix({}, DEFAULT_CFG, cfg);
- var geom = chart.get('geoms')[0];
- var shapes = geom.get('container').get('children');
- shapes.forEach(function (shape) {
- var origin = shape.get('origin');
- var attrs = shape.get('attrs');
- var {
- _origin,
- color
- } = origin;
- var {
- points
- } = attrs;
- if (labelCfg.label) {
- var labelAttrs = labelCfg.label(_origin, color);
- var point = getMiddlePoint(points[1], points[2]);
- container.addShape('Text', {
- attrs: mix({
- x: point.x + labelCfg.offsetX,
- y: point.y + labelCfg.offsetY
- }, DEFAULT_LABEL_CFG, labelAttrs)
- });
- }
- if (labelCfg.guide) {
- var _labelAttrs = labelCfg.guide(_origin, color);
- var _point = getMiddlePoint(getMiddlePoint(points[0], points[1]), getMiddlePoint(points[2], points[3] || points[2]));
- container.addShape('Text', {
- attrs: mix({
- x: _point.x,
- y: _point.y,
- textBaseline: 'middle',
- textAlign: 'center'
- }, DEFAULT_LABEL_CFG, _labelAttrs)
- });
- }
- });
- }
- clear() {
- var {
- container
- } = this;
- container.clear();
- }
- }
- function init(chart) {
- var frontPlot = chart.get('frontPlot');
- var labelGroup = frontPlot.addGroup({
- className: 'label',
- zIndex: 0
- });
- var labelController = new Controller({
- chart,
- container: labelGroup
- });
- chart.set('intervalLabelController', labelController);
- chart.intervalLabel = function (cfg) {
- labelController.cfg = cfg;
- };
- }
- function afterGeomDraw(chart) {
- var labelController = chart.get('intervalLabelController');
- labelController.draw();
- }
- function clearInner(chart) {
- var labelController = chart.get('intervalLabelController');
- labelController.clear();
- }
- export { init, afterGeomDraw, clearInner };
- export default {
- init,
- afterGeomDraw,
- clearInner
- };
|