UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

75 lines (65 loc) 2.35 kB
"use strict"; var proto = require("./funnel").prototype, Tracker = require("../components/tracker").Tracker, DATA_KEY_BASE = "__funnel_data_", isDefined = require("../../core/utils/type").isDefined, dataKeyModifier = 0; proto._eventsMap.onItemClick = { name: "itemClick" }; proto._eventsMap.onLegendClick = { name: "legendClick" }; exports.plugin = { name: "tracker", init: function init() { var that = this, dataKey = DATA_KEY_BASE + dataKeyModifier++, getProxyData = function getProxyData(e) { var rootOffset = that._renderer.getRootOffset(), x = Math.floor(e.pageX - rootOffset.left), y = Math.floor(e.pageY - rootOffset.top); return that._hitTestTargets(x, y); }; that._tracker = new Tracker({ widget: that, root: that._renderer.root, getData: function getData(e, tooltipData) { var target = e.target, data = target[dataKey], proxyData; if (isDefined(data)) { return data; } proxyData = getProxyData(e); if (tooltipData && proxyData && proxyData.type !== "inside-label") { return; } return proxyData && proxyData.id; }, getNode: function getNode(index) { return that._items[index]; }, click: function click(e) { var proxyData = getProxyData(e.event), dataType = proxyData && proxyData.type, event = dataType === "legend" ? "legendClick" : "itemClick"; that._eventTrigger(event, { item: e.node, event: e.event }); } }); ///#DEBUG exports._TESTS_dataKey = dataKey; ///#ENDDEBUG this._dataKey = dataKey; }, dispose: function dispose() { this._tracker.dispose(); }, extenders: { _change_TILING: function _change_TILING() { var dataKey = this._dataKey; this._items.forEach(function (item, index) { item.element.data(dataKey, index); }); } } };