pinch.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import Base from './base';
  2. import { mix } from '../../util/common';
  3. class Pinch extends Base {
  4. getDefaultCfg() {
  5. return {
  6. type: 'pinch',
  7. startEvent: 'pinchstart',
  8. processEvent: 'pinch',
  9. endEvent: 'pinchend'
  10. };
  11. }
  12. constructor(cfg, chart) {
  13. super(cfg, chart);
  14. var {
  15. context
  16. } = this;
  17. mix(context, cfg);
  18. }
  19. start() {
  20. var {
  21. context
  22. } = this;
  23. context.start();
  24. }
  25. process(e) {
  26. e.preventDefault && e.preventDefault();
  27. var {
  28. zoom,
  29. center
  30. } = e;
  31. var {
  32. context
  33. } = this;
  34. var {
  35. chart
  36. } = context;
  37. var coord = chart.get('coord');
  38. var {
  39. start,
  40. end
  41. } = coord;
  42. var coordWidth = end.x - start.x;
  43. var leftLen = Math.abs(center.x - start.x);
  44. var rightLen = Math.abs(end.x - center.x); // 计算左右缩放的比例
  45. var leftScale = leftLen / coordWidth;
  46. var rightScale = rightLen / coordWidth;
  47. context.doZoom(leftScale, rightScale, zoom);
  48. }
  49. end() {
  50. // 缩放完成后再更新ticks
  51. var {
  52. context
  53. } = this;
  54. context.updateTicks();
  55. }
  56. }
  57. export default Pinch;