quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 3.03 kB
JavaScript
import range from'./utils/array/range';import{UNDEF,safeMin}from'../lib';import{bimap,deInterpolateLinear}from'./scales/continuous';import interpolateNumber from'./utils/interpolators/number';let errorMapping=bimap([2,100],[80,20],deInterpolateLinear,interpolateNumber),getErrorValue=a=>100<=a?.2:1>=a?0:errorMapping(a)/100,niceInterval=function(a){if(1>=a)return 1;let b=[],c=Math.ceil(a);return b[2]=c%2,b[5]=c%5,b[10]=c%10,safeMin(b)+c},noLimitChange=function(a,b,c,d,e,f){var g=Math.abs;let h,i,l,m,n,o,p,q,r,s,t,u,v=a,w=Math.ceil(c*(1-d)),x=Math.floor(c*(1+d)),y=[],z=a=>{let b,c,d,e=[10,5,2,1],f=e.length;for(b=0;b<f;++b)if(c=a%e[b],0==c%1){d=!0;break}return d},A=-1,B=c=>z(h=(b-a)/(c+1))?c:UNDEF;for(;(!s||!t)&&(++A,u=c+A,u>=x&&(t=!0),m=B(u),!m)&&(u=c-A,u<=w&&(s=!0),m=B(u),!m););for(0>a&&0<b&&e&&(l=!0),i=0;i<m;i++)l&&0>v&&0<v+h&&(y.push(0),n=!0),v+=h,y.push(v);return m===UNDEF&&e&&(y=f.ticks(c),p=y.length,1<p?(h=g(y[0]-y[1]),o=.2*h,q=y[0],r=y[p-1],g(a-q)<=o&&0!==q&&y.shift(),g(b-r)<=o&&0!==r&&y.pop(),(0===q||0===r)&&(n=!0)):0===y[0]&&(n=!0)),l&&!n&&-1===y.indexOf(0)&&(0>a&&0<y[0]?y=[0].concat(y):0<b&&0>y[y.length-1]?y.push(0):y=[0],n=!0),{output:y,interval:h,isZeroTickForced:n}},domainUpdater=function(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A=Math.pow,B=Math.LN10,C=Math.log,D=Math.max,E=Math.abs,F=Math.floor,G=d.isPercent?0:d.axisMinValue,H=d.isPercent?100:d.axisMaxValue,I=!!d.adjustDiv,J=d.numDivLines,K=!!d.setAdaptiveMin,L=d.axisRange,M=5.960464477539063e-8,N=!0,O=.2,P=!0,Q=d.xAxisLabelMode,R=d.dependentInfo;e=d.majorTMNumber===UNDEF?J:D(0,J-2),R&&R.count&&!R.limit&&R.numDivLines!==UNDEF&&(e=J=R.numDivLines,I=!1),f=e+1,a===UNDEF&&b===UNDEF&&(a=0,b=1,N=!1),b===a&&0===b&&(b=1,N=!1),('categories'===Q||'mixed'===Q)&&(N=!1),N?(h=F(C(E(b))/B),g=F(C(E(a))/B),i=D(g,h),j=A(10,i),2>E(b)/j&&2>E(a)/j&&(i--,j=A(10,i)),p=F(C(b-a)/B),q=A(10,p),0<b-a&&10<=j/q&&(j=q,i=p),l=(F(b/j)+1)*j,0>a?m=-1*((F(E(a/j))+1)*j):K?(m=F(E(a/j)-1)*j,m=0>m?0:m):m=0,!K&&0>=b&&(l=0),n=!!(H||0===H),o=!!(G||0===G),!d.freezeLimit&&(!1===n||!0===n&&+H<b&&b-+H>M?(b=l,n=!1):b=+H,!1===o||!0===o&&+G>a&&+G-a>M?(a=m,o=!1):a=+G)):(n=!!(H||0===H),o=!!(G||0===G),!0===n&&+H>=b?b=+H:n=!1,!0===o&&+G<=a?a=+G:o=!1),u=[a,b],c.setDomain(u),I&&!d.freezeLimit?n||o?(O=getErrorValue(e),x=noLimitChange(a,b,e,O,d.forceZeroTick,c),r=x.output,y=r.length,z=x.isZeroTickForced,E((e-y+(z?1:0))/e)>O?k=(b-a)/f:(k=0===y||1===y&&z?b-a:x.interval,d.isZeroTickForced=z,d.ticks=z&&0===a?r.concat(b):[a].concat(r,b),P=!1)):(d.ticks=e?c.nice(f).ticks(f):c.getDomain(),k=E(d.ticks[1]-d.ticks[0]),P=!1):n||o||d.freezeLimit?k=(b-a)/f:([s,t]=c.nice(f).getDomain(),j=(t-s)/f,k=niceInterval(j),t=s+k*f,(t-b)/b>O||(s-a)/a>O?(c.setDomain([a,b]),k=(b-a)/f):(a=s,b=t,c.setDomain([a,b]))),P&&(0>a&&0<b&&d.forceZeroTick?(v=range(a,0,k),w=v[v.length-1]+k,0===w?w+=k:d.isZeroTickForced=!0,d.ticks=v.concat(0,range(w,b,k),b)):d.ticks=range(a,b,k).concat(b)),[a,b]=c.getDomain(),d._allTicks=d.ticks.slice(),L.tickInterval=k,L.min=a,L.max=b};export default domainUpdater;