diff --git a/src/component/axisPointer.js b/src/component/axisPointer.js index ddf66040d35101e529fdc5c5bc1179e5fd7ba878..f42fae8835c6b322cb7d0074ea1a30610cbd2b90 100644 --- a/src/component/axisPointer.js +++ b/src/component/axisPointer.js @@ -43,19 +43,6 @@ define(function (require) { type: 'updateAxisPointer', event: 'updateAxisPointer', update: ':updateAxisPointer' - }, function (payload, ecModel, api) { - var outputFinder = axisTrigger( - ecModel.getComponent('axisPointer').coordSysAxesInfo, - payload.currTrigger, - [payload.x, payload.y], - payload, - payload.dispatchAction || zrUtil.bind(api.dispatchAction, api), - ecModel, - api, - payload.tooltipOption - ); - - return outputFinder; - }); + }, axisTrigger); }); \ No newline at end of file diff --git a/src/component/axisPointer/axisTrigger.js b/src/component/axisPointer/axisTrigger.js index a192495204c0f85f7ea89697a828e742d437a849..98f06af829e2fe06c92fa9deedf193c73112c28c 100644 --- a/src/component/axisPointer/axisTrigger.js +++ b/src/component/axisPointer/axisTrigger.js @@ -14,26 +14,35 @@ define(function(require) { * then hide/downplay them. * * @param {Object} coordSysAxesInfo - * @param {string} [currTrigger] 'click' | 'mousemove' | 'leave' - * @param {Array.} [point] x and y, which are mandatory, specify a point to + * @param {Object} payload + * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave' + * @param {Array.} [payload.x] x and y, which are mandatory, specify a point to * tigger axisPointer and tooltip. - * @param {Object} [finder] { - * seriesIndex, dataIndex, - * axesInfo: [{ - * axisDim: 'x'|'y'|'angle'|..., axisIndex: ..., value: ... - * }, ...] - * } - * These properties, which are optional, restrict target axes. - * @param {Function} dispatchAction + * @param {Array.} [payload.y] x and y, which are mandatory, specify a point to + * tigger axisPointer and tooltip. + * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes. + * @param {Object} [payload.dataIndex] finder, restrict target axes. + * @param {Object} [payload.axesInfo] finder, restrict target axes. + * [{ + * axisDim: 'x'|'y'|'angle'|..., + * axisIndex: ..., + * value: ... + * }, ...] + * @param {Function} [payload.dispatchAction] + * @param {Object} [payload.tooltipOption] + * @param {Object|Array.|Function} [payload.position] Tooltip position, + * which can be specified in dispatchAction + * @param {module:echarts/model/Global} ecModel * @param {module:echarts/ExtensionAPI} api - * @param {Object} [tooltipOption] * @return {Object} content of event obj for echarts.connect. */ - function axisTrigger( - coordSysAxesInfo, currTrigger, point, finder, dispatchAction, - ecModel, api, tooltipOption - ) { - finder = finder || {}; + function axisTrigger(payload, ecModel, api) { + var currTrigger = payload.currTrigger; + var point = [payload.x, payload.y]; + var finder = payload; + var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api); + var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; + if (illegalPoint(point)) { // Used in the default behavior of `connection`: use the sample seriesIndex // and dataIndex. And also used in the tooltipView trigger. @@ -107,7 +116,7 @@ define(function(require) { }); updateModelActually(showValueMap, axesInfo, outputFinder); - dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction); + dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction); dispatchHighDownActually(axesInfo, dispatchAction, api); return outputFinder; @@ -290,7 +299,7 @@ define(function(require) { }); } - function dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction) { + function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) { // Basic logic: If no showTip required, hideTip will be dispatched. if (illegalPoint(point) || !dataByCoordSys.list.length) { dispatchAction({type: 'hideTip'}); @@ -308,7 +317,8 @@ define(function(require) { escapeConnect: true, x: point[0], y: point[1], - tooltipOption: tooltipOption, + tooltipOption: payload.tooltipOption, + position: payload.position, dataIndexInside: sampleItem.dataIndexInside, dataIndex: sampleItem.dataIndex, seriesIndex: sampleItem.seriesIndex, diff --git a/src/component/tooltip/TooltipView.js b/src/component/tooltip/TooltipView.js index 0a7cca3a78e92763898da554ee365c7345bcef06..b866f866da4dcda056ace691ba3639abc48451d7 100644 --- a/src/component/tooltip/TooltipView.js +++ b/src/component/tooltip/TooltipView.js @@ -265,7 +265,8 @@ define(function (require) { api.dispatchAction({ type: 'updateAxisPointer', seriesIndex: seriesIndex, - dataIndex: dataIndex + dataIndex: dataIndex, + position: payload.position }); return true; diff --git a/test/tooltip.html b/test/tooltip.html index de575574a999d76285921b2c2066b74566a78ceb..cfb93fc9f70546cfafdcfa55d14fab9f0f866e0a 100644 --- a/test/tooltip.html +++ b/test/tooltip.html @@ -40,6 +40,8 @@

triggerOn click

+

dispatchAciton manually with `position` specified (postion: [10,10])

+
@@ -646,6 +648,168 @@ + + + + + + + + + + + + + + + + +