quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 1.66 kB
JavaScript
let getSplineExtremities=function(a,b,c,d,e){var f=[],g=!1,h=d||0;for(e=e||{max:Number.MIN_VALUE,min:Number.MAX_VALUE};h<a.length;++h)if(!g){if(!isNaN(a[h].config.setValue)&&null!==a[h].config.setValue)g=!0;else continue;f.push({index:h,y:a[h].config.setValue})}else if(!(isNaN(a[h].config.setValue)||null===a[h].config.setValue))f.push({index:h,y:a[h].config.setValue});else if(c)continue;else break;return 2<f.length&&evalSplineExtremities(f,b,e),h<a.length&&!c&&getSplineExtremities(a,b,c,h,e),e},evalSplineExtremities=function(a,b,c){var d,e,f,g,h,j={};for(e=0;e<a.length;++e)f=a[e].index,j['D'+f]=0;for(d=0;10>d;++d)for(e=0;e<a.length;++e)g=0===e?(3*(a[e+1].y-a[e].y)-j['D'+a[e+1].index])/2:e===a.length-1?(3*(a[e].y-a[e-1].y)-j['D'+a[e-1].index])/2:(3*(a[e+1].y-a[e-1].y)-j['D'+a[e+1].index]-j['D'+a[e-1].index])/4,j['D'+a[e].index]=g;for(h=Math.round(b/(a.length-1)),e=1;e<a.length;++e)getSegmentExtremities(e,a,j,c,h)},getSegmentExtremities=function(a,b,c,d,e){var f,g,h,j,l,m,o,p,q,r,s,u,v=b,w=a;for(f=c['D'+v[0].index],g=c['D'+v[w].index],h=v[0].y,j=f,l=3*(v[w].y-v[0].y)-2*f-g,m=2*(v[0].y-v[w].y)+f+g,o=d.max,p=d.min,(q=0,r=e);q<=r;q++)s=q/r,u=h+j*s+l*s*s+m*s*s*s,u<p&&(p=u),u>o&&(o=u);d.max=o,d.min=p},_calculateMaxMin=function(){var a,b=this,c=b.config,d=b.getFromEnv('chart'),e=b.getFromEnv('chartConfig'),f=d.config.origRenderWidth,g=e.connectnulldata,h=e.minimizetendency,i=b.components.data,j=Number.MIN_VALUE,k=Number.MAX_VALUE;0===h&&(a=getSplineExtremities(i,f,g),c.maxValue=Math.max(c.maxValue,a.max),c.minValue=Math.min(c.minValue,a.min),c.maxValue===j&&(c.maxValue=0),c.minValue===k&&(c.minValue=0))};export default _calculateMaxMin;