* Show tip manually by * dispatchAction({ * type: 'showTip', * x: 10, * y: 10 * }); * Or * dispatchAction({ * type: 'showTip', * seriesIndex: 0, * dataIndex or dataIndexInside or name * }); * * TODO Batch
(
tooltipModel: TooltipModel,
ecModel: GlobalModel,
api: ExtensionAPI,
payload: ShowTipPayload
)
| 290 | * TODO Batch |
| 291 | */ |
| 292 | manuallyShowTip( |
| 293 | tooltipModel: TooltipModel, |
| 294 | ecModel: GlobalModel, |
| 295 | api: ExtensionAPI, |
| 296 | payload: ShowTipPayload |
| 297 | ) { |
| 298 | if (payload.from === this.uid || env.node || !api.getDom()) { |
| 299 | return; |
| 300 | } |
| 301 | |
| 302 | const dispatchAction = makeDispatchAction(payload, api); |
| 303 | |
| 304 | // Reset ticket |
| 305 | this._ticket = ''; |
| 306 | |
| 307 | // When triggered from axisPointer. |
| 308 | const dataByCoordSys = payload.dataByCoordSys; |
| 309 | |
| 310 | const cmptRef = findComponentReference(payload, ecModel, api); |
| 311 | |
| 312 | if (cmptRef) { |
| 313 | const rect = cmptRef.el.getBoundingRect().clone(); |
| 314 | rect.applyTransform(cmptRef.el.transform); |
| 315 | this._tryShow({ |
| 316 | offsetX: rect.x + rect.width / 2, |
| 317 | offsetY: rect.y + rect.height / 2, |
| 318 | target: cmptRef.el, |
| 319 | position: payload.position, |
| 320 | // When manully trigger, the mouse is not on the el, so we'd better to |
| 321 | // position tooltip on the bottom of the el and display arrow is possible. |
| 322 | positionDefault: 'bottom' |
| 323 | }, dispatchAction); |
| 324 | } |
| 325 | else if (payload.tooltip && payload.x != null && payload.y != null) { |
| 326 | const el = proxyRect as unknown as ECElement; |
| 327 | el.x = payload.x; |
| 328 | el.y = payload.y; |
| 329 | el.update(); |
| 330 | getECData(el).tooltipConfig = { |
| 331 | name: null, |
| 332 | option: payload.tooltip |
| 333 | }; |
| 334 | // Manually show tooltip while view is not using zrender elements. |
| 335 | this._tryShow({ |
| 336 | offsetX: payload.x, |
| 337 | offsetY: payload.y, |
| 338 | target: el |
| 339 | }, dispatchAction); |
| 340 | } |
| 341 | else if (dataByCoordSys) { |
| 342 | this._tryShow({ |
| 343 | offsetX: payload.x, |
| 344 | offsetY: payload.y, |
| 345 | position: payload.position, |
| 346 | dataByCoordSys: dataByCoordSys, |
| 347 | tooltipOption: payload.tooltipOption |
| 348 | }, dispatchAction); |
| 349 | } |
no test coverage detected