pie-select.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. "use strict";
  2. exports.__esModule = true;
  3. exports["default"] = void 0;
  4. var _common = require("../util/common");
  5. var _base = _interopRequireDefault(require("./base"));
  6. var _chart = _interopRequireDefault(require("../chart/chart"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
  8. function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
  9. function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
  10. var PieSelect = /*#__PURE__*/function (_Interaction) {
  11. _inheritsLoose(PieSelect, _Interaction);
  12. var _proto = PieSelect.prototype;
  13. _proto.getDefaultCfg = function getDefaultCfg() {
  14. var defaultCfg = _Interaction.prototype.getDefaultCfg.call(this);
  15. defaultCfg = (0, _common.mix)({}, defaultCfg, {
  16. startEvent: 'tap',
  17. processEvent: null,
  18. animate: false,
  19. offset: 1,
  20. appendRadius: 8,
  21. style: {
  22. fillOpacity: 0.5
  23. },
  24. cancelable: true,
  25. defaultSelected: null // set the default selected shape
  26. });
  27. if (_common.isWx || _common.isMy) {
  28. // 小程序
  29. defaultCfg.startEvent = 'touchstart';
  30. defaultCfg.endEvent = 'touchend';
  31. }
  32. return defaultCfg;
  33. };
  34. function PieSelect(cfg, chart) {
  35. var _this;
  36. _this = _Interaction.call(this, cfg, chart) || this;
  37. var self = _assertThisInitialized(_this);
  38. chart.registerPlugins({
  39. clearInner: function clearInner() {
  40. self.halo && self.halo.remove(true);
  41. self.selected = false;
  42. self.selectedShape = null;
  43. self.lastShape = null;
  44. self.halo = null;
  45. self.defaultSelected = null;
  46. }
  47. });
  48. var defaultSelected = self.defaultSelected;
  49. if ((0, _common.isObject)(defaultSelected)) {
  50. var selectedShape = self._getSelectedShapeByData(defaultSelected);
  51. selectedShape && self._selectedShape(selectedShape);
  52. _this.canvas.draw();
  53. }
  54. return _this;
  55. }
  56. _proto._getSelectedShapeByData = function _getSelectedShapeByData(data) {
  57. var selectedShape = null;
  58. var chart = this.chart;
  59. var geom = chart.get('geoms')[0];
  60. var container = geom.get('container');
  61. var children = container.get('children');
  62. (0, _common.each)(children, function (child) {
  63. if (child.get('isShape') && child.get('className') === geom.get('type')) {
  64. // get geometry's shape
  65. var shapeData = child.get('origin')._origin;
  66. if ((0, _common.isObjectValueEqual)(shapeData, data)) {
  67. selectedShape = child;
  68. return false;
  69. }
  70. }
  71. });
  72. return selectedShape;
  73. };
  74. _proto._selectedShape = function _selectedShape(selectedShape) {
  75. var offset = this.offset,
  76. style = this.style,
  77. appendRadius = this.appendRadius,
  78. chart = this.chart;
  79. this.lastShape = selectedShape;
  80. var _selectedShape$_attrs = selectedShape._attrs.attrs,
  81. x = _selectedShape$_attrs.x,
  82. y = _selectedShape$_attrs.y,
  83. startAngle = _selectedShape$_attrs.startAngle,
  84. endAngle = _selectedShape$_attrs.endAngle,
  85. r = _selectedShape$_attrs.r,
  86. fill = _selectedShape$_attrs.fill;
  87. var frontPlot = chart.get('frontPlot');
  88. var halo = frontPlot.addShape('sector', {
  89. attrs: (0, _common.mix)({
  90. x: x,
  91. y: y,
  92. r: r + offset + appendRadius,
  93. r0: r + offset,
  94. fill: fill,
  95. startAngle: startAngle,
  96. endAngle: endAngle
  97. }, style)
  98. });
  99. this.halo = halo;
  100. var animate = this.animate;
  101. if (animate) {
  102. if (animate === true) {
  103. animate = {
  104. duration: 300
  105. };
  106. }
  107. halo.attr('r', r + offset);
  108. halo.animate().to((0, _common.mix)({
  109. attrs: {
  110. r: r + offset + appendRadius
  111. }
  112. }, animate));
  113. }
  114. };
  115. _proto.start = function start(ev) {
  116. var chart = this.chart;
  117. if (ev.type === 'tap') {
  118. ev.clientX = ev.center.x;
  119. ev.clientY = ev.center.y;
  120. }
  121. var _createEvent = (0, _common.createEvent)(ev, chart),
  122. x = _createEvent.x,
  123. y = _createEvent.y;
  124. var records = chart.getSnapRecords({
  125. x: x,
  126. y: y
  127. });
  128. if (!records.length) {
  129. this.selected = false;
  130. this.selectedShape = null;
  131. return;
  132. }
  133. var data = records[0]._origin;
  134. var selectedShape = this._getSelectedShapeByData(data);
  135. var lastShape = this.lastShape;
  136. this.selectedShape = selectedShape;
  137. this.selected = true;
  138. if (selectedShape === lastShape) {
  139. if (!this.cancelable) {
  140. return;
  141. }
  142. this.halo && this.halo.remove(true);
  143. this.lastShape = null;
  144. this.selected = false;
  145. } else {
  146. this.halo && this.halo.remove(true);
  147. this._selectedShape(selectedShape);
  148. }
  149. this.canvas.draw();
  150. };
  151. _proto.end = function end(ev) {
  152. var selectedShape = this.selectedShape;
  153. if (selectedShape && !selectedShape.get('destroyed')) {
  154. ev.data = selectedShape.get('origin')._origin;
  155. ev.shapeInfo = selectedShape.get('origin');
  156. ev.shape = selectedShape;
  157. ev.selected = !!this.selected;
  158. }
  159. };
  160. return PieSelect;
  161. }(_base["default"]);
  162. _chart["default"].registerInteraction('pie-select', PieSelect);
  163. var _default = PieSelect;
  164. exports["default"] = _default;