quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 1.93 kB
JavaScript
import{ComponentInterface}from'../../../fc-core/src/component-interface';import{componentFactory,getMouseCoordinate}from'../../../fc-core/src/lib';const inclusionList={candlestick:!0};class manageMultiCanvasCrossline extends ComponentInterface{constructor(){super(),this._handlers=function(a){return{onhover:b=>{b.originalEvent&&a.show(b)},onhoverout:b=>{b.originalEvent&&a.hide(b)}}}(this)}getAxesInfo(a={},b){let c,d,e,f,g=this,h=b.getAxes(),j=[],k=getMouseCoordinate(g.getFromEnv('chart-container'),a.originalEvent,g.getFromEnv('chart')),l=k.chartX||0,m=k.chartY||0;for(c=h.length-1;0<=c;c--)d=h[c].axis,e=h[c].isY,f=!!d.config.isVertical,j.push({value:f?d.getValue(m):d.getValue(l),axis:d,isVertical:f,isY:e});return j}getName(){return'multiCanvasCrosslineManager'}getType(){return'multiCanvasCrosslineManager'}show(a){let b,c=a.sender,d=this.getFromEnv('chart');b=this.getAxesInfo(a,c),d.iterateComponents(a=>{'canvas'===a.getName()&&a!==c&&a.fireEvent('fc-mousemove',{axes:b})})}hide(a){let b=a.sender,c=getMouseCoordinate(b.getFromEnv('chart-container'),a&&a.originalEvent,b.getFromEnv('chart')),d=c.chartX,e=c.chartY;b.isWithinCanvas(d,e)||this.getFromEnv('chart').iterateComponents(a=>{'canvas'===a.getName()&&a!==b&&a.fireEvent('fc-mouseout')})}}export default{extension:a=>{a.addEventListener('instantiated',a=>{if(a.sender.getType&&'chartAPI'===a.sender.getType()&&inclusionList[a.sender.getName&&a.sender.getName()]){let b,c,d=a.sender;d.registerFactory('multiCanvasCrossline',function(){componentFactory(d,manageMultiCanvasCrossline,'multiCanvasCrosslineManager'),b=d.getChildren('multiCanvasCrosslineManager')[0],c=b._handlers,d.iterateComponents(a=>{'canvas'===a.getName()&&(a.addEventListener('fc-mouseover',c.onhover),a.addEventListener('fc-mousemove',c.onhover),a.addEventListener('fc-mouseout',c.onhoverout))})},['canvas'])}})},name:'multi-canvas-crossline-manager',type:'extension',requiresFusionCharts:!0};