quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 4.19 kB
JavaScript
import SmartRenderer from'../../../../fc-core/src/component-interface/smart-renderer';const MOUSEOVER='fc-mouseover',MOUSEDOWN='fc-mousedown',MOUSEUP='fc-mouseup',MOUSEMOVE='fc-mousemove',MOUSEOUT='fc-mouseout',CLICK='fc-click',xShift=5,createDivString=(a='',b='')=>b&&`<div ${a}>${b}</div>`;class MouseAction extends SmartRenderer{configure(){super.configure();let a=this,b=a.config,c=a.getFromEnv('chartConfig'),d=a.getFromEnv('mouseTracker');b.showTooltip=c.showTooltip,b.eventAdded||a.addExtEventListener('canvasHovered',function(a){return b.eventAdded=!0,function(){switch(arguments[1].hoveredInfo&&arguments[1].hoveredInfo.component&&arguments[1].hoveredInfo.component.getType()){case'timeMarker':a._triggerMarkerMouseActions(...arguments);break;default:a._triggerMouseActions(...arguments);}}}(a),d)}mouseoutHandler(a,b,c,d){var e=this,f=e.config;d&&d.config&&(d.setHoverOutEffect(c),d._firePlotEvent&&d._firePlotEvent(MOUSEOUT,c,a)),f.showTooltip&&e.getFromEnv('toolTipController').hide(f.currentToolTip),delete f._lastDatasetIndex,delete f._lastPointIndex}_triggerMarkerMouseActions(a){let b,c,d=this,e=a.data,f=d.getFromEnv('toolTipController'),g=d.getFromEnv('tooltipStyle'),h=e.chartX,i=e.chartY,j=d.getLinkedParent(),k=j.getTranslation(),l=e.hoveredInfo,m=l.hovered,n=d.config,o=n.showTooltip,p=l.component,q=l.pointObj.hoveredMarkerDim||{},r='',s=l.hovered&&p.getToolTextConfiguration(q.toolTextArr,l.pointObj.type),t=j.isWithinCanvas(h-(q.thresholdX||0),i-(q.thresholdY||0));if(m&&t){const{header:a,body:d}=s;r=createDivString(g.headerStyleString,a)+createDivString(g.bodyStyleString,d),b=h,c=q.y-s.dimensions.height+k.y,o&&(n.currentToolTip=f.drawAt(b,c,r,n.currentToolTip,j)),p.setHoverInEffect(l.pointIndex,l.pointObj.index,!1)}else o&&f.hide(n.currentToolTip),p.setHoverOutEffect()}_triggerMouseActions(a){var b,c,d,f,g,h,i,k,m,n=this,o=a.data,p=n.getFromEnv('toolTipController'),q=n.getFromEnv('tooltipStyle'),r=o.i,s=o.e,e=o.chartX,t=o.chartY,u=o.hoveredInfo,v=0<=r,w=n.getLinkedParent(),x=w.getChild(void 0,'dataset'),y=n.config,z=y._lastDatasetIndex,A=y._lastPointIndex,B=w.getTranslation(),C='',D='',E='',F=u&&u.pointIndex,G=w.isWithinCanvas(e,t);if(v&&(u.datasetIndex=r,m=n.getMouseEvents(s,u.datasetIndex,F,u.component.getName(),u.markerObj)),(!G||(!v||m&&m.fireOut)&&'undefined'!=typeof z)&&(m&&!m.events.length?y.mouseoutTimer=setTimeout(function(){n.mouseoutHandler(s,z,A,y._lastComponentHovered)},20):(n.mouseoutHandler(s,z,A,y._lastComponentHovered),clearTimeout(y.mouseoutTimer))),G&&x.length&&y.showTooltip&&(x.forEach((a,b)=>{k=a.config,'visible'===k.visibility&&(f=a._getTooltext(v,r===b,a._getHoveredBin()),E+=f,k.dataInfo[a._getHoveredBin()]&&f&&(g=k.dataInfo[a._getHoveredBin()],i=a))}),i&&({header:C,body:D}=i._getDateForToolText(i._getHoveredBin())),E=createDivString(q.headerStyleString,C)+createDivString(q.bodyStyleString,D+E),b=v?u.pointObj:g,b?''===E?p.hide(y.currentToolTip):y.currentToolTip=p.drawAt(b.x+(b.width||0)/2+xShift+B.x,(b.colY||b.y)+B.y,E,y.currentToolTip,w):p.hide(y.currentToolTip)),v&&(c=m.events&&m.events.length,c))for(y._lastDatasetIndex=u.datasetIndex,y._lastPointIndex=F,h=y._lastComponentHovered=u.component,y._lastComponentHoveredName=h&&h.getName(),h.setHoverInEffect(F),y.showTooltip&&'dataMarker'===h.getType()&&(({header:C,body:D}=h._getTooltext(F)),E=createDivString(q.headerStyleString,C)+createDivString(q.bodyStyleString,D),y.currentToolTip=p.draw(s,E,y.currentToolTip)),d=0;d<c;d+=1)h&&h._firePlotEvent&&h&&h._firePlotEvent&&h._firePlotEvent(m.events[d],F,s,u)}getMouseEvents(a,b,c,d){var e=this,f=e.config,g=f._lastDatasetIndex,h=f._lastPointIndex,i=f._lastComponentHoveredName,j=a.type,k={fireOut:!1,events:[]};return j===CLICK?k.events.push(CLICK):j===MOUSEMOVE?i===d&&g===b&&h===c?(clearTimeout(f.mouseoutTimer),k.events.push(MOUSEMOVE)):(k.events.push(MOUSEOVER),k.fireOut=!0):j===MOUSEDOWN?((i!==d||g!==b||h!==c)&&(k.fireOut=!0,k.events.push(MOUSEOVER)),k.events.push(MOUSEDOWN)):j===MOUSEOVER?i===d&&g===b&&h===c?clearTimeout(f.mouseoutTimer):(k.fireOut=!0,k.events.push(MOUSEOVER)):j===MOUSEUP?k.events.push(MOUSEUP):j===MOUSEOUT?k.fireOut=!0:void 0,k}}export default MouseAction;export{createDivString};