base.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports["default"] = void 0;
  5. var _common = require("../../util/common");
  6. var _context = _interopRequireDefault(require("./context"));
  7. var Base = /*#__PURE__*/function () {
  8. var _proto = Base.prototype;
  9. // 交互的上下文
  10. _proto.getDefaultCfg = function getDefaultCfg() {
  11. return {};
  12. };
  13. _proto.getInteractionContext = function getInteractionContext(chart) {
  14. var interactionContext = chart.get('interactionContext');
  15. if (interactionContext) {
  16. return interactionContext;
  17. }
  18. interactionContext = new _context["default"](chart);
  19. chart.set('interactionContext', interactionContext);
  20. return interactionContext;
  21. };
  22. function Base(cfg, chart) {
  23. var _this = this;
  24. this.type = '';
  25. this.startEvent = 'touchstart';
  26. this.processEvent = 'touchmove';
  27. this.endEvent = 'touchend';
  28. this.resetEvent = null;
  29. this.context = null;
  30. this._start = function (ev) {
  31. _this.start(ev);
  32. };
  33. this._process = function (ev) {
  34. _this.process(ev);
  35. };
  36. this._end = function (ev) {
  37. _this.end(ev);
  38. };
  39. this._reset = function (ev) {
  40. _this.reset(ev);
  41. };
  42. (0, _common.mix)(this, this.getDefaultCfg(), cfg);
  43. this.context = this.getInteractionContext(chart);
  44. this.chart = chart; // 只处理range, 暂时先这么处理后面再看情况调整
  45. var range = this.range;
  46. if (range) {
  47. this.context.range = range;
  48. }
  49. this._bindEvents(chart);
  50. }
  51. _proto._bindEvents = function _bindEvents(chart) {
  52. var startEvent = this.startEvent,
  53. processEvent = this.processEvent,
  54. endEvent = this.endEvent,
  55. resetEvent = this.resetEvent;
  56. var canvas = chart.get('canvas'); // 统一绑定事件
  57. canvas.on(startEvent, this._start);
  58. canvas.on(processEvent, this._process);
  59. canvas.on(endEvent, this._end);
  60. canvas.on(resetEvent, this._reset);
  61. };
  62. _proto._clearEvents = function _clearEvents() {
  63. var chart = this.chart,
  64. startEvent = this.startEvent,
  65. processEvent = this.processEvent,
  66. endEvent = this.endEvent,
  67. resetEvent = this.resetEvent;
  68. var canvas = chart.get('canvas'); // 统一绑定事件
  69. canvas.off(startEvent, this._start);
  70. canvas.off(processEvent, this._process);
  71. canvas.off(endEvent, this._end);
  72. canvas.off(resetEvent, this._start);
  73. };
  74. // override
  75. _proto.start = function start() {} // override
  76. ;
  77. _proto.process = function process() {} // override
  78. ;
  79. _proto.end = function end() {} // override
  80. ;
  81. _proto.reset = function reset() {};
  82. _proto.destroy = function destroy() {
  83. this._clearEvents();
  84. };
  85. return Base;
  86. }();
  87. var _default = Base;
  88. exports["default"] = _default;