circle.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
  2. var Util = require('../../util/common');
  3. var Abstract = require('./abstract');
  4. var Circle =
  5. /*#__PURE__*/
  6. function (_Abstract) {
  7. _inheritsLoose(Circle, _Abstract);
  8. function Circle() {
  9. return _Abstract.apply(this, arguments) || this;
  10. }
  11. var _proto = Circle.prototype;
  12. _proto._initDefaultCfg = function _initDefaultCfg() {
  13. _Abstract.prototype._initDefaultCfg.call(this);
  14. this.startAngle = -Math.PI / 2; // start angle,in radian
  15. this.endAngle = Math.PI * 3 / 2; // end angle, in radian
  16. this.radius = null; // radius
  17. this.center = null; // center
  18. };
  19. _proto.getOffsetPoint = function getOffsetPoint(value) {
  20. var startAngle = this.startAngle,
  21. endAngle = this.endAngle;
  22. var angle = startAngle + (endAngle - startAngle) * value;
  23. return this._getCirclePoint(angle);
  24. };
  25. _proto._getCirclePoint = function _getCirclePoint(angle, radius) {
  26. var self = this;
  27. var center = self.center;
  28. radius = radius || self.radius;
  29. return {
  30. x: center.x + Math.cos(angle) * radius,
  31. y: center.y + Math.sin(angle) * radius
  32. };
  33. };
  34. _proto.getTextAlignInfo = function getTextAlignInfo(point, offset) {
  35. var self = this;
  36. var offsetVector = self.getOffsetVector(point, offset);
  37. var align;
  38. var baseLine = 'middle';
  39. if (offsetVector[0] > 0) {
  40. align = 'left';
  41. } else if (offsetVector[0] < 0) {
  42. align = 'right';
  43. } else {
  44. align = 'center';
  45. if (offsetVector[1] > 0) {
  46. baseLine = 'top';
  47. } else if (offsetVector[1] < 0) {
  48. baseLine = 'bottom';
  49. }
  50. }
  51. return {
  52. textAlign: align,
  53. textBaseline: baseLine
  54. };
  55. };
  56. _proto.getAxisVector = function getAxisVector(point) {
  57. var center = this.center;
  58. var factor = this.offsetFactor;
  59. return [(point.y - center.y) * factor, (point.x - center.x) * -1 * factor];
  60. };
  61. _proto.drawLine = function drawLine(lineCfg) {
  62. var center = this.center,
  63. radius = this.radius,
  64. startAngle = this.startAngle,
  65. endAngle = this.endAngle;
  66. var container = this.getContainer(lineCfg.top);
  67. container.addShape('arc', {
  68. className: 'axis-line',
  69. attrs: Util.mix({
  70. x: center.x,
  71. y: center.y,
  72. r: radius,
  73. startAngle: startAngle,
  74. endAngle: endAngle
  75. }, lineCfg)
  76. });
  77. };
  78. return Circle;
  79. }(Abstract);
  80. Abstract.Circle = Circle;
  81. module.exports = Circle;