quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 8.59 kB
JavaScript
import Canvas from'./canvas';import{pluckNumber,preDefStr,toRaphaelColor,pluck,canvasBorderColorStr,BGRATIOSTRING,COMMASTRING,dropHash,HASHSTRING,stubFN,convertColor,getDarkColor,getLightColor,getAngle}from'../../../../../fc-core/src/lib';import{getDep,addDep}from'../../../../../fc-core/src/dependency-manager';import canvas3dAnimation from'./canvas3d.animation';import raphaelShapesCubepath from'../../../../../fc-core/src/_internal/redraphael/redraphael-shapes/redraphael-shapes.cubepath';let R=getDep('redraphael','plugin'),canvasBaseColor3DStr='canvasBaseColor3D',canvasBGAlphaStr='canvasBgAlpha',clipCanvasStr='clip-canvas',clipCanvasInitStr='clip-canvas-init',COMMA=',',MAX_MITER_LINEJOIN=2,ROUND=preDefStr.ROUND,miterStr=preDefStr.miterStr,math=Math,mathMax=math.max,Raphael=R,NONE='none',M='M',L='L',Z='Z',V='V',chartPaletteStr={chart2D:{bgColor:'bgColor',bgAlpha:'bgAlpha',bgAngle:'bgAngle',bgRatio:'bgRatio',canvasBgColor:'canvasBgColor',canvasBaseColor:'canvasBaseColor',divLineColor:'divLineColor',legendBgColor:'legendBgColor',legendBorderColor:'legendBorderColor',toolTipbgColor:'toolTipbgColor',toolTipBorderColor:'toolTipBorderColor',baseFontColor:'baseFontColor',anchorBgColor:'anchorBgColor'},chart3D:{bgColor:'bgColor3D',bgAlpha:'bgAlpha3D',bgAngle:'bgAngle3D',bgRatio:'bgRatio3D',canvasBgColor:'canvasBgColor3D',canvasBaseColor:'canvasBaseColor3D',divLineColor:'divLineColor3D',divLineAlpha:'divLineAlpha3D',legendBgColor:'legendBgColor3D',legendBorderColor:'legendBorderColor3D',toolTipbgColor:'toolTipbgColor3D',toolTipBorderColor:'toolTipBorderColor3D',baseFontColor:'baseFontColor3D',anchorBgColor:'anchorBgColor3D'}},hideFn=function(){this.hide()},hide3dBaseFn=function(){this.hide(),this._.cubeside.hide(),this._.cubetop.hide()},show3dBaseFn=function(){this.show(),this._.cubeside.show(),this._.cubetop.show()};addDep({name:'canvas3dAnimation',type:'animationRule',extension:canvas3dAnimation}),raphaelShapesCubepath(R);class Canvas3d extends Canvas{getName(){return'canvas'}getType(){return'canvas'}drawCanvas(){this.getFromEnv('chart').isBar?this.drawCanvas3dBar():this.drawCanvas3dColumn()}configureAttributes(){super.configureAttributes(),this.config.xDepth=10,this.config.yDepth=10}drawCanvas3dColumn(){var a,b,c,d,e,f,g,i,j,k,l,m,n,o,p,q,r=this,s=r.getFromEnv('chart'),t=s.getFromEnv('dataSource'),u=r.config,v=s.config,z=u.canvasLeft,A=u.canvasTop,B=u.canvasWidth,C=u.canvasHeight,D=t.chart,E=r.getFromEnv('animationManager'),F=s.getFromEnv('color-manager'),G=r.getGraphicalElement('canvasBorderElement'),H=r.getGraphicalElement('canvasElement'),I=r.config,J=I.clip={},K=r.getContainer('canvasGroup'),L=r.getGraphicalElement('canvasBg'),M=r.getGraphicalElement('canvas3DBase'),N=preDefStr.miterStr,O=Math.max,P=preDefStr.ROUND,Q=s.getChildContainer('plotGroup'),S=s.getChildContainer('datalabelsGroup'),T=r.getGraphicalElement('canvas3dbaseline'),U=I.canvasBgColor,V=I.showCanvasBG=!!pluckNumber(D.showcanvasbg,1),W=v.canvasBgDepth,X=v.showCanvasBase,Y=v.canvasBaseDepth,Z=I.canvasBaseColor3D=pluck(D.canvasbasecolor,F.getColor('canvasBaseColor3D')),$=I.use3DLighting=pluckNumber(D.use3dlighting,1),_=chartPaletteStr.chart3D,aa=I.canvasBorderRadius=pluckNumber(D.plotborderradius,0),ba=I.canvasBorderColor=convertColor(pluck(D.canvasbordercolor,F.getColor(canvasBorderColorStr))),ca=I.canBGAlpha=pluck(D.canvasbgalpha,F.getColor('canvasBgAlpha')),da=I.canBGColor=pluck(D.canvasbgcolor,F.getColor(_.canvasBgColor)),ea=v.canvasBasePadding||2;U=$?I.canvasBgColor={FCcolor:{color:getDarkColor(da,85)+COMMASTRING+getLightColor(da,55),alpha:ca+COMMASTRING+ca,ratio:BGRATIOSTRING,angle:getAngle(v.width-(v.marginLeft+v.marginRight),v.height-(v.marginTop+v.marginBottom),1)}}:I.canvasBgColor=convertColor(da,ca),da=da.split(COMMASTRING)[0],ca=ca.split(COMMASTRING)[0],p=I.xDepth,q=I.yDepth,f={x:z-0,y:A-0,width:B+0,height:C+0,r:aa,"stroke-width":0,stroke:ba,"stroke-linejoin":N},a=E.setAnimation({el:G||'rect',attr:f,component:r,label:'canvas',container:K}),G||r.addGraphicalElement('canvasBorderElement',a),J['clip-canvas']=[O(0,z-p),O(0,A),O(1,B+p),O(1,C+q)],J['clip-canvas-init']=[O(0,z-p),O(0,A-q),1,O(1,C+2*q)],n=J['clip-canvas'].slice(0),E.setAnimation({el:Q,attr:{"clip-rect":n},component:r}),E.setAnimation({el:S,attr:{"clip-rect":n},component:r}),f={x:z,y:A,width:B,height:C,r:aa,"stroke-width":0,stroke:'none',fill:toRaphaelColor(U)},b=E.setAnimation({el:H||'rect',attr:f,component:r,label:'canvas',callback:V?stubFN:hideFn,container:K}),H||r.addGraphicalElement('canvasElement',b),e=['M',z+B,A,'L',z+B+W,A+1.2*W,z+B+W,A+C-W,z+B,A+C,'Z'],c=E.setAnimation({el:L||'path',attr:{path:e,"stroke-width":0,stroke:'none',fill:toRaphaelColor(U)},component:r,label:'canvas',callback:V?stubFN:hideFn,container:K}),L||r.addGraphicalElement('canvasBg',c),V?(c.show(),b.show()):(c.hide(),b.hide()),g=z-p-ea,i=A+C+q+ea,j=B,k=Y,l=p+ea,m=q+ea,d=E.setAnimation({el:M||'cubepath',component:r,index:0,attr:{cubepath:[g,i,j,k,l,m],stroke:'none',"stroke-width":0,fill:Z.replace(dropHash,HASHSTRING),noGradient:!$},callback:X?stubFN:hide3dBaseFn,label:'canvas',container:K}),M||r.addGraphicalElement('canvas3DBase',d),o=E.setAnimation({el:T||'path',attr:{path:['M',z,A+C,'H',B+z],stroke:R.tintshade(Z.replace(dropHash,HASHSTRING),.05).rgba},component:r,callback:X?stubFN:hideFn,label:'canvas',container:K}),T||r.addGraphicalElement('canvas3dbaseline',o),X&&(show3dBaseFn.call(d),o.show())}drawCanvas3dBar(){var a,b,c,d,e,f,g,i,j,k,l,m,n,o,p=this,q=p.getFromEnv('chart'),r=q.getFromEnv('dataSource'),s=q.config,t=s.canvasLeft,u=s.canvasTop,v=s.canvasWidth,z=s.canvasHeight,A=r.chart,B=q.getFromEnv('color-manager'),C=p.getGraphicalElement('canvasBorderElement'),D=p.getGraphicalElement('canvasElement'),E=p.config,F=E.clip={},G=p.getContainer('canvasGroup'),H=p.getGraphicalElement('canvasBg'),I=p.getGraphicalElement('canvas3DBase'),J=q.getChildContainer('plotGroup'),K=q.getChildContainer('datalabelsGroup'),N=p.getFromEnv('animationManager'),O=p.getGraphicalElement('canvas3dbaseline'),P=E.canvasBgColor,Q=E.showCanvasBG=!!pluckNumber(A.showcanvasbg,1),R=s.canvasBgDepth,S=s.showCanvasBase,T=s.canvasBaseDepth,U=E.canvasBaseColor3D=pluck(A.canvasbasecolor,B.getColor(canvasBaseColor3DStr)),W=E.use3DLighting=pluckNumber(A.use3dlighting,1),X=chartPaletteStr.chart3D,Y=E.canvasBorderRadius=pluckNumber(A.plotborderradius,0),$=E.canvasBorderWidth=0,_=.5*$,aa=E.canvasBorderColor=convertColor(pluck(A.canvasbordercolor,B.getColor(canvasBorderColorStr))),ba=E.canBGAlpha=pluck(A.canvasbgalpha,B.getColor(canvasBGAlphaStr)),ca=E.canBGColor=pluck(A.canvasbgcolor,B.getColor(X.canvasBgColor)),da=E.xDepth,ea=E.yDepth;P=W?E.canvasBgColor={FCcolor:{color:getDarkColor(ca,85)+COMMA+getLightColor(ca,55),alpha:ba+COMMA+ba,ratio:BGRATIOSTRING,angle:getAngle(s.width-(s.marginLeft+s.marginRight),s.height-(s.marginTop+s.marginBottom),1)}}:E.canvasBgColor=convertColor(ca,ba),ca=ca.split(COMMA)[0],ba=ba.split(COMMA)[0],da=E.xDepth=5,ea=E.yDepth=5,e={x:t-_,y:u-_,width:v+$,height:z+$,r:Y,"stroke-width":$,stroke:aa,"stroke-linejoin":$>MAX_MITER_LINEJOIN?ROUND:miterStr},a=N.setAnimation({el:C||'rect',attr:e,container:G,label:'canvas',component:p}),C||p.addGraphicalElement('canvasBorderElement',a),F[clipCanvasStr]=[mathMax(0,t-da),mathMax(0,u),mathMax(1,v+da),mathMax(1,z+ea)],F[clipCanvasInitStr]=[mathMax(0,t-da),mathMax(0,u-ea),1,mathMax(1,z+2*ea)],n=F[clipCanvasStr].slice(0),N.setAnimation({el:J,attr:{"clip-rect":n},component:p}),N.setAnimation({el:K,attr:{"clip-rect":n},component:p}),e={x:t,y:u,width:v,height:z,r:Y,"stroke-width":0,stroke:NONE,fill:toRaphaelColor(P)},b=N.setAnimation({el:D||'rect',attr:e,component:p,label:'canvas',container:G}),D||p.addGraphicalElement('canvasElement',b),f=[M,t,u,L,t+1.2*R,u-R,t+v-R,u-R,t+v,u,Z],c=N.setAnimation({el:H||'path',attr:{path:f,"stroke-width":0,stroke:NONE,fill:toRaphaelColor(P)},component:p,callback:Q?stubFN:hideFn,label:'canvas',container:G}),H||p.addGraphicalElement('canvasBg',c),Q?(b.show(),c.show()):(b.hide(),c.hide()),g=t-da-T-1,i=u+ea+1,j=T,k=z,l=da+1,m=ea+1,d=N.setAnimation({el:I||'cubepath',attr:{cubepath:[g,i,j,k,l,m],stroke:NONE,"stroke-width":0,fill:U.replace(dropHash,HASHSTRING),noGradient:!W},component:p,callback:S?stubFN:hide3dBaseFn,label:'canvas',container:G}),I||p.addGraphicalElement('canvas3DBase',d),o=N.setAnimation({el:O||'path',attr:{path:[M,t,u,V,z+u],stroke:Raphael.tintshade(U.replace(dropHash,HASHSTRING),.05).rgba},component:p,callback:S?stubFN:hideFn,label:'canvas',container:G}),O||p.addGraphicalElement('canvas3dbaseline',o),S&&(o.show(),show3dBaseFn.call(d))}}export default Canvas3d;