tracker.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * DevExtreme (viz/sankey/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("./sankey").prototype;
  11. var Tracker = require("../components/tracker").Tracker;
  12. var DATA_KEY_BASE = "__sankey_data_";
  13. var dataKeyModifier = 0;
  14. proto._eventsMap.onNodeClick = {
  15. name: "nodeClick"
  16. };
  17. proto._eventsMap.onLinkClick = {
  18. name: "linkClick"
  19. };
  20. exports.plugin = {
  21. name: "tracker",
  22. init: function() {
  23. var that = this;
  24. var dataKey = DATA_KEY_BASE + dataKeyModifier++;
  25. that._tracker = new Tracker({
  26. widget: that,
  27. root: that._renderer.root,
  28. getData: function(e) {
  29. var target = e.target;
  30. return target[dataKey]
  31. },
  32. getNode: function(index) {
  33. if (index < that._nodes.length) {
  34. return that._nodes[index]
  35. } else {
  36. return that._links[index - that._nodes.length]
  37. }
  38. },
  39. click: function(e) {
  40. var eventName = this.getData(e.event) < that._nodes.length ? "nodeClick" : "linkClick";
  41. that._eventTrigger(eventName, {
  42. target: e.node,
  43. event: e.event
  44. })
  45. }
  46. });
  47. this._dataKey = dataKey
  48. },
  49. dispose: function() {
  50. this._tracker.dispose()
  51. },
  52. extenders: {
  53. _change_LINKS_DRAW: function() {
  54. var dataKey = this._dataKey;
  55. this._nodes.concat(this._links).forEach(function(item, index) {
  56. item.element.data(dataKey, index)
  57. })
  58. }
  59. }
  60. };