tracker.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * DevExtreme (viz/funnel/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 proto = require("./funnel").prototype;
  11. var Tracker = require("../components/tracker").Tracker;
  12. var DATA_KEY_BASE = "__funnel_data_";
  13. var isDefined = require("../../core/utils/type").isDefined;
  14. var dataKeyModifier = 0;
  15. proto._eventsMap.onItemClick = {
  16. name: "itemClick"
  17. };
  18. proto._eventsMap.onLegendClick = {
  19. name: "legendClick"
  20. };
  21. exports.plugin = {
  22. name: "tracker",
  23. init: function() {
  24. var that = this;
  25. var dataKey = DATA_KEY_BASE + dataKeyModifier++;
  26. var getProxyData = function(e) {
  27. var rootOffset = that._renderer.getRootOffset();
  28. var x = Math.floor(e.pageX - rootOffset.left);
  29. var y = Math.floor(e.pageY - rootOffset.top);
  30. return that._hitTestTargets(x, y)
  31. };
  32. that._tracker = new Tracker({
  33. widget: that,
  34. root: that._renderer.root,
  35. getData: function(e, tooltipData) {
  36. var target = e.target;
  37. var data = target[dataKey];
  38. if (isDefined(data)) {
  39. return data
  40. }
  41. var proxyData = getProxyData(e);
  42. if (tooltipData && proxyData && "inside-label" !== proxyData.type) {
  43. return
  44. }
  45. return proxyData && proxyData.id
  46. },
  47. getNode: function(index) {
  48. return that._items[index]
  49. },
  50. click: function(e) {
  51. var proxyData = getProxyData(e.event);
  52. var dataType = proxyData && proxyData.type;
  53. var event = "legend" === dataType ? "legendClick" : "itemClick";
  54. that._eventTrigger(event, {
  55. item: e.node,
  56. event: e.event
  57. })
  58. }
  59. });
  60. this._dataKey = dataKey
  61. },
  62. dispose: function() {
  63. this._tracker.dispose()
  64. },
  65. extenders: {
  66. _change_TILING: function() {
  67. var dataKey = this._dataKey;
  68. this._items.forEach(function(item, index) {
  69. item.element.data(dataKey, index)
  70. })
  71. }
  72. }
  73. };