UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 10.9 kB
import CommonSpaceManager from'./commonspacemanager';import{chartPaletteStr,pluckNumber,pluck,pluckFontSize,extend2}from'../../../../fc-core/src/lib';import cartesianAxisFactory from'../../factories/cartesian-axis';import canvasFactory from'../../factories/canvas-axis-ref-cartesian';import virtualCanvasFactory from'../../factories/vcanvas';import mousetrackerFactory from'../../factories/mouse-tracker';let UNDEF,mathMax=Math.max,mathMin=Math.min;class Cartesian extends CommonSpaceManager{constructor(){super(),this.registerFactory('axis',cartesianAxisFactory,['canvas']),this.registerFactory('canvas',canvasFactory),this.registerFactory('vCanvas',virtualCanvasFactory,['axis']),this.registerFactory('mouseTracker',mousetrackerFactory,['canvas'])}static getName(){return'Cartesian'}getName(){return'Cartesian'}getType(){return'chartAPI'}_allocateXAxisLabelSpace(a){var b,c=this,d=c.config,e=a.getAxisEndLabelDisplaySpace(),f=e.left,g=e.right,h=e.top,i=e.bottom,j=d.availableWidth,k=d.availableHeight,l=d.canvasLeft,m=d.canvasRight,n=d.canvasTop,o=d.canvasBottom,p=d.width,q=d.height,r=function(a,b){return a<b&&0<b?b-a:0};h+i>k&&(b=h+i,h=k*h/b,i=k*i/b),f+g>j&&(b=f+g,f=j*f/b,g=j*g/b),f=r(l,f),g=r(p-m,g),h=r(n,h),i=r(q-o,i),c._allocateSpace({left:f,right:g,top:h,bottom:i})}_setCategories(){var a=this,b=a.getFromEnv('dataSource'),c=a.getChildren('xAxis'),d=b.categories&&b.categories.length&&b.categories[0].category;c&&c[0].setTickValues(d)}_feedAxesRawData(){var a,b,c=this,d=c.config,e=c.getFromEnv('dataSource');return a=c.getSpecificxAxisConf(),b=c.getSpecificyAxisConf(),a.vtrendlines=extend2([],e.vtrendlines),b.trendlines=extend2([],e.trendlines),d.isstacked&&(b.isPercent=pluckNumber(d.stack100percent,0)),{yAxisConf:[b],xAxisConf:[a]}}getSpecificxAxisConf(){var a=this,b=a.getFromEnv('chart-attrib'),c=a.config,d=a.config.is3D,e=a.getBasexAxisConf();return e.isReverse=c.reverseXAxis,e.axisLineColor=pluck(b.xaxislinecolor,b.axislinecolor,'#000000'),e.showAlternateGridColor=pluckNumber(b.showalternatevgridcolor,0),e.numDivLines=pluckNumber(b.numvdivlines,c.numVDivLines),e.axisName=b.xaxisname,e.setAdaptiveMin=pluckNumber(b.setadaptivexmin,c.setadaptivexmin,c.setadaptivexmin),e.showLimits=pluckNumber(b.showvlimits,c.showvlimits),e.showDivLineValues=pluckNumber(b.showvdivlinevalues,b.showvdivlinevalues,c.showvdivlinevalues),e.zeroPlaneThickness=pluckNumber(b.vzeroplanethickness,b.vdivlinethickness,c.zeroplanethickness,2),e.zeroPlaneAlpha=pluckNumber(b.vzeroplanealpha,b.vdivlinealpha,c.zeroplanealpha),e.showZeroPlaneValue=pluckNumber(b.showvzeroplanevalue,c.showzeroplanevalue),e.showAxisLine=d?0:pluckNumber(b.showxaxisline,b.showaxislines,b.drawAxisLines,c.showxaxisline,0),e.maxLabelHeight=b.maxlabelheight,e.showZeroPlane=pluckNumber(b.showvzeroplane,c.showzeroplane),e}getSpecificyAxisConf(){var a=this,b=a.getFromEnv('chart-attrib'),c=a.config,d=a.config.is3D,e=d?chartPaletteStr.chart3D:chartPaletteStr.chart2D,f=c.isInverse,g=a.getFromEnv('color-manager'),h=pluckNumber(b.showzeroplane,c.showzeroplane,1),i=pluckNumber(b.showzeroplanevalue,c.showzeroplanevalue);return h||i!==UNDEF||(i=0),{isVertical:!0,isReverse:!f,isOpposit:!1,outCanfontFamily:pluck(b.outcnvbasefont,b.basefont,'Verdana,sans'),outCanfontSize:pluckFontSize(b.outcnvbasefontsize,b.basefontsize,10),outCancolor:pluck(b.outcnvbasefontcolor,b.basefontcolor,g.getColor(e.baseFontColor)).replace(/^#? ([a-f0-9]+)/ig,'#$1'),axisBreaks:b.yaxisbreaks,axisNamePadding:b.yaxisnamepadding,axisValuePadding:b.yaxisvaluespadding,axisNameFont:b.yaxisnamefont,axisNameFontSize:b.yaxisnamefontsize,axisNameFontColor:b.yaxisnamefontcolor,axisNameFontBold:b.yaxisnamefontbold,axisNameFontItalic:b.yaxisnamefontitalic,axisNameBgColor:b.yaxisnamebgcolor,axisNameBorderColor:b.yaxisnamebordercolor,axisNameAlpha:b.yaxisnamealpha,axisNameFontAlpha:b.yaxisnamefontalpha,axisNameBgAlpha:b.yaxisnamebgalpha,axisNameBorderAlpha:b.yaxisnameborderalpha,axisNameBorderPadding:b.yaxisnameborderpadding,axisNameBorderRadius:b.yaxisnameborderradius,axisNameBorderThickness:b.yaxisnameborderthickness,axisNameBorderDashed:b.yaxisnameborderdashed,axisNameBorderDashLen:b.yaxisnameborderdashlen,axisNameBorderDashGap:b.yaxisnameborderdashgap,axisNameWidth:b.yaxisnamewidth,useEllipsesWhenOverflow:b.useellipseswhenoverflow,rotateAxisName:pluckNumber(b.rotateyaxisname,1),axisName:b.yaxisname,divLineColor:pluck(b.divlinecolor,g.getColor(e.divLineColor)),divLineAlpha:pluck(b.divlinealpha,d?g.getColor('divLineAlpha3D'):g.getColor('divLineAlpha')),divLineThickness:pluckNumber(b.divlinethickness,1),divLineIsDashed:!!pluckNumber(b.divlinedashed,b.divlineisdashed,0),divLineDashLen:pluckNumber(b.divlinedashlen,4),divLineDashGap:pluckNumber(b.divlinedashgap,2),showAlternateGridColor:pluckNumber(b.showalternatehgridcolor,1),alternateGridColor:pluck(b.alternatehgridcolor,g.getColor('altHGridColor')),alternateGridAlpha:pluck(b.alternatehgridalpha,g.getColor('altHGridAlpha')),numDivLines:pluckNumber(b.numdivlines,c.numDivLines),axisMinValue:c.yRangeMin||b.yaxisminvalue,axisMaxValue:c.yRangeMax||b.yaxismaxvalue,setAdaptiveMin:pluckNumber(b.setadaptivesymin,b.setadaptiveymin,c.setAdaptiveMin),adjustDiv:b.adjustdiv,labelStep:b.yaxisvaluesstep,showAxisValues:pluckNumber(b.showyaxisvalues,b.showyaxisvalue,c.showyaxisvalues),showLimits:pluckNumber(b.showyaxislimits,b.showlimits,a.showLimits),showDivLineValues:pluckNumber(b.showdivlinevalues,b.showdivlinevalue,c.showdivlinevalues),showZeroPlane:h,zeroPlaneColor:b.zeroplanecolor,zeroPlaneThickness:pluckNumber(b.zeroplanethickness,b.divlinethickness,c.zeroplanethickness,2),zeroPlaneAlpha:pluckNumber(b.zeroplanealpha,b.divlinealpha,c.zeroplanealpha),showZeroPlaneValue:i,showZeroPlaneOnTop:c.showzeroplaneontop,trendlineColor:b.trendlinecolor,trendlineToolText:b.trendlinetooltext,trendlineThickness:b.trendlinethickness,trendlineAlpha:b.trendlinealpha,showTrendlinesOnTop:b.showtrendlinesontop,showAxisLine:d?0:pluckNumber(b.showyaxisline,b.showaxislines,b.drawAxisLines,c.showyaxisline,0),axisLineThickness:pluckNumber(b.yaxislinethickness,b.axislinethickness,1),axisLineAlpha:pluckNumber(b.yaxislinealpha,b.axislinealpha,100),axisLineColor:pluck(b.yaxislinecolor,b.axislinecolor,'#000000'),forceTrendBelow:!!c.is3D}}getBasexAxisConf(){var a=this,b=a.getFromEnv('chart-attrib'),c=a.config.is3D,d=c?chartPaletteStr.chart3D:chartPaletteStr.chart2D,e=a.getFromEnv('color-manager');return{isVertical:!1,isOpposit:!1,outCanfontFamily:pluck(b.outcnvbasefont,b.basefont,'Verdana,sans'),outCanfontSize:pluckFontSize(b.outcnvbasefontsize,b.basefontsize,10),outCancolor:pluck(b.outcnvbasefontcolor,b.basefontcolor,e.getColor(d.baseFontColor)).replace(/^#? ([a-f0-9]+)/ig,'#$1'),axisNamePadding:b.xaxisnamepadding,axisValuePadding:b.labelpadding,axisNameFont:b.xaxisnamefont,axisNameFontSize:b.xaxisnamefontsize,axisNameFontColor:b.xaxisnamefontcolor,axisNameFontBold:b.xaxisnamefontbold,axisNameFontItalic:b.xaxisnamefontitalic,axisNameBgColor:b.xaxisnamebgcolor,axisNameBorderColor:b.xaxisnamebordercolor,axisNameAlpha:b.xaxisnamealpha,axisNameFontAlpha:b.xaxisnamefontalpha,axisNameBgAlpha:b.xaxisnamebgalpha,axisNameBorderAlpha:b.xaxisnameborderalpha,axisNameBorderPadding:b.xaxisnameborderpadding,axisNameBorderRadius:b.xaxisnameborderradius,axisNameBorderThickness:b.xaxisnameborderthickness,axisNameBorderDashed:b.xaxisnameborderdashed,axisNameBorderDashLen:b.xaxisnameborderdashlen,axisNameBorderDashGap:b.xaxisnameborderdashgap,useEllipsesWhenOverflow:b.useellipseswhenoverflow,divLineColor:pluck(b.vdivlinecolor,b.divlinecolor,e.getColor(d.divLineColor)),divLineAlpha:pluck(b.vdivlinealpha,b.divlinealpha,c?e.getColor('divLineAlpha3D'):e.getColor('divLineAlpha')),divLineThickness:pluckNumber(b.vdivlinethickness,b.divlinethickness,1),divLineIsDashed:!!pluckNumber(b.vdivlinedashed,b.vdivlineisdashed,b.divlinedashed,b.divlineisdashed,0),divLineDashLen:pluckNumber(b.vdivlinedashlen,b.divlinedashlen,4),divLineDashGap:pluckNumber(b.vdivlinedashgap,b.divlinedashgap,2),alternateGridColor:pluck(b.alternatevgridcolor,e.getColor('altVGridColor')),alternateGridAlpha:pluck(b.alternatevgridalpha,e.getColor('altVGridAlpha')),labelFont:b.labelfont,labelFontSize:b.labelfontsize,labelFontColor:b.labelfontcolor,labelFontAlpha:b.labelalpha,labelFontBold:b.labelfontbold,labelFontItalic:b.labelfontitalic,axisMinValue:b.xaxisminvalue,axisMaxValue:b.xaxismaxvalue,adjustDiv:b.adjustvdiv,labelDisplay:b.labeldisplay,showLabels:b.showlabels,rotateLabels:b.rotatelabels,slantLabel:pluckNumber(b.slantlabels,b.slantlabel),labelStep:pluckNumber(b.labelstep,b.xaxisvaluesstep),showAxisValues:pluckNumber(b.showxaxisvalues,b.showxaxisvalue),zeroPlaneColor:b.vzeroplanecolor,trendlineColor:b.trendlinecolor,trendlineToolText:b.trendlinetooltext,trendlineThickness:b.trendlinethickness,trendlineAlpha:b.trendlinealpha,showTrendlinesOnTop:b.showtrendlinesontop,axisLineThickness:pluckNumber(b.xaxislinethickness,b.axislinethickness,1),axisLineAlpha:pluckNumber(b.xaxislinealpha,b.axislinealpha,100)}}getConfig(a){return a?this.config[a]:this.config}_getSumValueSpace(a){var b,c=Math.max,d=this,e={},f=d.isBar,g=d.getFromEnv('dataSource').chart,h=0===d.showsum?0:pluckNumber(g.showsum,d.showsum,0),j=pluckNumber(d.config.stack100percent),k=d.config.isstacked,l=0,m=[],n=0;if(d.iterateComponents(a=>{('cartesianStackGroup'===a.getName()||'marimekkoStackgroup'===a.getName())&&m.push(a)}),h&&j&&k&&m.length){for(b=m.length-1;0<=b;b--)e=m[b].getMaxSumValueSpace(),f?l=c(l,e.maxWidth):n=c(n,e.maxHeight);n>a&&(n=a),l>a&&(l=a)}return{top:n,right:l}}setAxisDimention(){var a=Math.max;let b=this,c=b.getChildren('xAxis')&&b.getChildren('xAxis')[0],d=b.getChildren('yAxis')&&b.getChildren('yAxis')[0],e=b.getFromEnv('chartConfig'),f=e.xDepth,g=b.getChildren('canvas')&&b.getChildren('canvas')[0].config,h=g&&g.canvasBorderWidth,i=c&&c.getChildren('scrollBar')&&c.getChildren('scrollBar')[0],j=i&&!i.getState('removed'),k=(j||e.is3D)&&e.shift,l=g&&g.canvasPadding,m=g.canvasLeft,n=g&&g.canvasPaddingLeft,o=g&&g.canvasPaddingRight,p=g.canvasTop,q=g&&g.canvasPaddingTop;c&&c.setAxisConfig({canvasPaddingLeft:a(n,l),canvasPaddingRight:a(o,l)}),c&&c.setAxisDimention({x:m+(f||0)+a(n,l),y:e.canvasBottom+(k||0)+h,opposite:p-h,axisLength:g.canvasWidth-(f||0)-a(n,l)-a(o,l)}),d&&d.setAxisDimention({x:m-h,y:p+q,opposite:e.canvasRight+h,axisLength:e.canvasHeight-q-g.canvasPaddingBottom})}_getTrendLineMinMax(a,b){var c,d,e,f,g,h=this,j='v'===a?h.getFromEnv('dataSource').vtrendlines:h.getFromEnv('dataSource').trendlines,k={max:-Infinity,min:1/0};if(b=b||'p',j)for(d=0,f=j.length;d<f;d+=1)for(e=0,g=j[d].line?j[d].line.length:0;e<g;e+=1)(c=j[d].line[e],('s'!==b||'s'===c.parentyaxis)&&('s'===b||'s'!==c.parentyaxis))&&(k.max=mathMax(c.startvalue||-Infinity,c.endvalue||-Infinity,k.max),k.min=mathMin(c.startvalue||1/0,c.endvalue||1/0,k.min));return k}}export default Cartesian;