tracker.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /**
  2. * DevExtreme (viz/components/tracker.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var _eventData = require("../../events/utils").eventData;
  11. var domAdapter = require("../../core/dom_adapter");
  12. var clickEventName = require("../../events/click").name;
  13. var downPointerEventName = require("../../events/pointer").down;
  14. var movePointerEventName = require("../../events/pointer").move;
  15. var eventsEngine = require("../../events/core/events_engine");
  16. function Tracker(parameters) {
  17. this._initHandlers(parameters)
  18. }
  19. Tracker.prototype = {
  20. constructor: Tracker,
  21. _initHandlers: function(parameters) {
  22. var document = domAdapter.getDocument();
  23. parameters.getCoords = function(e) {
  24. var data = _eventData(e);
  25. var offset = parameters.widget._renderer.getRootOffset();
  26. return [data.x - offset.left, data.y - offset.top]
  27. };
  28. parameters.root.on(clickEventName, clickHandler);
  29. parameters.root.on(downPointerEventName, downHandler);
  30. eventsEngine.on(document, downPointerEventName, downHandler);
  31. eventsEngine.on(document, movePointerEventName, moveHandler);
  32. this._disposeHandlers = function() {
  33. parameters.root.off(clickEventName, clickHandler);
  34. parameters.root.off(downPointerEventName, downHandler);
  35. eventsEngine.off(document, downPointerEventName, downHandler);
  36. eventsEngine.off(document, movePointerEventName, moveHandler)
  37. };
  38. function clickHandler(e) {
  39. processClick(e, parameters)
  40. }
  41. var isRootDown = false;
  42. function downHandler(e) {
  43. if (isRootDown) {
  44. isRootDown = false
  45. } else {
  46. if (void 0 !== parameters.getData(e)) {
  47. isRootDown = true
  48. }
  49. moveHandler(e)
  50. }
  51. }
  52. function moveHandler(e) {
  53. processHover(e, parameters);
  54. parameters.widget._getOption("tooltip").enabled && processTooltip(e, parameters)
  55. }
  56. },
  57. dispose: function() {
  58. this._disposeHandlers()
  59. }
  60. };
  61. function processClick(e, params) {
  62. var id = params.getData(e);
  63. if (id >= 0) {
  64. params.click({
  65. node: params.getNode(id),
  66. coords: params.getCoords(e),
  67. event: e
  68. })
  69. }
  70. }
  71. function processHover(e, params) {
  72. var id = params.getData(e);
  73. if (id >= 0) {
  74. params.getNode(id).setHover()
  75. } else {
  76. params.widget.clearHover()
  77. }
  78. }
  79. function processTooltip(e, params) {
  80. var id = params.getData(e, true);
  81. var coords;
  82. if (id >= 0) {
  83. coords = _eventData(e);
  84. params.getNode(id).showTooltip([coords.x, coords.y])
  85. } else {
  86. params.widget.hideTooltip()
  87. }
  88. }
  89. module.exports.Tracker = Tracker;