quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 2.9 kB
JavaScript
import Tool from'../tool';import{pluckNumber}from'../../../lib';import{getDep}from'../../../dependency-manager';let R=getDep('redraphael','plugin'),M='M',m='m',v='v',COLOR_5F5F5F='#5F5F5F';class ScrollAnchor extends Tool{constructor(){super(),this._evtHandlers={}}configureAttributes(a={}){let b=this.config;b.drawStripes=pluckNumber(a.drawStripes,0),b._nodeDimensions={},b.style={scroller:Object.assign({},{fill:a.displayFlat&&R.tintshade(a.color,-.6).rgba||[270*a.isHorizontal,R.tintshade(a.color,.3).rgba+':40',R.tintshade(a.color,-.7).rgba].join('-'),stroke:R.tintshade(a.color,-.6).rgba},a.style.scroller),grip:Object.assign({},{stroke:COLOR_5F5F5F,"stroke-linecap":'round',"stroke-width":2},a.style.grip)}}attachEventHandlers(){let a,b,c,d=this,e=d.config,f=this.getLinkedParent(),g=f.config,h=g.isHorizontal;d.addEventListener('fc-dragmove',d._evtHandlers.dragmove||(d._evtHandlers.dragmove=function(f){c=a+f.originalEvent.data[b]/e.trackLength,1<=c?c=1:(0>=c||isNaN(c))&&(c=0),g.scrollPosition=c,d.asyncDraw(),'function'==typeof g.evt.scroll&&g.evt.scroll(g.scrollPosition)})),d.addEventListener('fc-dragstart',d._evtHandlers.dragstart||(d._evtHandlers.dragstart=function(){b=h?0:1,a=g.scrollPosition,'function'==typeof g.evt.scrollStart&&g.evt.scrollStart(g.scrollPosition)})),d.addEventListener('fc-dragend',d._evtHandlers.dragend||(d._evtHandlers.dragend=function(){'function'==typeof g.evt.scrollEnd&&g.evt.scrollEnd(g.scrollPosition)}))}draw(){var a=Math.min;let b,c,d=this,e=d.config,f=this.getLinkedParent(),g=f.config,h=g.x+.5,i=g.y+g.padding+.5,j=g.width-1,k=1>g.height-1?1:g.height-1,l=g.restrictScrollAnchor?Math.max(g.scrollRatio,.01):g.scrollRatio,n=g.isHorizontal,o=pluckNumber(g.scrollPosition,g.startPercent,0),p=0,q=n?j*l:k*l;1<=o?o=1:(0>=o||isNaN(o))&&(o=0),g.showButtons&&(p=n?a(k,.5*j):a(j,.5*k),q-=2*p*l),e.trackLength=b=n?j-2*p-q:k-2*p-q,e.trackOffset=c=n?h+p+.5:i+p+.5,e._nodeDimensions={x:n?c+b*o:h,y:n?i:c+b*o,width:n?1>q-1?1:q-1:1>j?1:j,height:n?1>k?1:k:1>q-1?1:q-1},d.addGraphicalElement({el:'rect',attr:{x:e._nodeDimensions.x,y:e._nodeDimensions.y,width:e._nodeDimensions.width,height:e._nodeDimensions.height,r:g.roundEdges&&2||0,opacity:e.style.scroller},css:e.style.scroller,container:{id:'scrollbarGroup',label:'scrollbarGroup',isParent:!0},component:d,label:'scrollbarAnchor',id:'scrollbarAnchor'}),e.drawStripes&&8<=e._nodeDimensions.width&&d.addGraphicalElement({el:'path',attr:{path:[M,e._nodeDimensions.x+e._nodeDimensions.width/2-3,e._nodeDimensions.y+.2*e._nodeDimensions.height,v,.6*e._nodeDimensions.height,m,3,-.6*e._nodeDimensions.height,v,.6*e._nodeDimensions.height,m,3,-.6*e._nodeDimensions.height,v,.6*e._nodeDimensions.height],opacity:e.style.grip.opacity},css:e.style.grip,container:{id:'scrollbarGroup',label:'scrollbarGroup',isParent:!0},component:d,label:'scrollbarAnchorStripe',id:'scrollbarAnchorStripe'})}}export default ScrollAnchor;