legend-active.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.PieLegendAction = void 0;
  4. var tslib_1 = require("tslib");
  5. var g2_1 = require("@antv/g2");
  6. var util_1 = require("@antv/util");
  7. var matrix_1 = require("../../../../utils/matrix");
  8. /**
  9. * 饼图 图例激活 action
  10. */
  11. var PieLegendAction = /** @class */ (function (_super) {
  12. tslib_1.__extends(PieLegendAction, _super);
  13. function PieLegendAction() {
  14. return _super !== null && _super.apply(this, arguments) || this;
  15. }
  16. /**
  17. * 获取激活的图形元素
  18. */
  19. PieLegendAction.prototype.getActiveElements = function () {
  20. var delegateObject = g2_1.Util.getDelegationObject(this.context);
  21. if (delegateObject) {
  22. var view = this.context.view;
  23. var component = delegateObject.component, item_1 = delegateObject.item;
  24. var field_1 = component.get('field');
  25. if (field_1) {
  26. var elements = view.geometries[0].elements;
  27. return elements.filter(function (ele) { return ele.getModel().data[field_1] === item_1.value; });
  28. }
  29. }
  30. return [];
  31. };
  32. /**
  33. * 获取激活的标签
  34. */
  35. PieLegendAction.prototype.getActiveElementLabels = function () {
  36. var view = this.context.view;
  37. var elements = this.getActiveElements();
  38. var labels = view.geometries[0].labelsContainer.getChildren();
  39. return labels.filter(function (label) { return elements.find(function (ele) { return (0, util_1.isEqual)(ele.getData(), label.get('data')); }); });
  40. };
  41. PieLegendAction.prototype.transfrom = function (offset) {
  42. if (offset === void 0) { offset = 7.5; }
  43. var elements = this.getActiveElements();
  44. var elementLabels = this.getActiveElementLabels();
  45. elements.forEach(function (element, idx) {
  46. var labelShape = elementLabels[idx];
  47. var coordinate = element.geometry.coordinate;
  48. if (coordinate.isPolar && coordinate.isTransposed) {
  49. var _a = g2_1.Util.getAngle(element.getModel(), coordinate), startAngle = _a.startAngle, endAngle = _a.endAngle;
  50. var middleAngle = (startAngle + endAngle) / 2;
  51. var r = offset;
  52. var x = r * Math.cos(middleAngle);
  53. var y = r * Math.sin(middleAngle);
  54. element.shape.setMatrix((0, matrix_1.transform)([['t', x, y]]));
  55. labelShape.setMatrix((0, matrix_1.transform)([['t', x, y]]));
  56. }
  57. });
  58. };
  59. PieLegendAction.prototype.active = function () {
  60. this.transfrom();
  61. };
  62. /**
  63. * 激活态还原
  64. */
  65. PieLegendAction.prototype.reset = function () {
  66. this.transfrom(0);
  67. };
  68. return PieLegendAction;
  69. }(g2_1.Action));
  70. exports.PieLegendAction = PieLegendAction;
  71. //# sourceMappingURL=legend-active.js.map