quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 1.87 kB
JavaScript
import numberConverter from'../number-converter';import precisionFixed from'../number-converter/precision-fixed';import precisionRound from'../number-converter/precision-round';import FormatSpecifier from'../number-converter/format-specifier';import precisionPrefix from'../number-converter/precision-prefix';const E10=7.0710678118654755,E5=3.1622776601683795,E2=1.4142135623730951,isNil=a=>null===a||'undefined'==typeof a;function getMultiplier(a){let b;return b=a>=E10?10:a>=E5?5:a>=E2?2:1,b}function tickIncrement(a=0,b=1,c=7){var d=Math.pow;const e=(b-a)/Math.max(0,c),f=Math.floor(Math.log(e)/Math.LN10),g=e/d(10,f);return 0<=f?getMultiplier(g)*d(10,f):-d(10,-f)/getMultiplier(g)}function tickStep(a=0,b=1,c=7){let d=Math.abs(b-a)/Math.max(0,c),e=Math.floor(Math.log(d)/Math.LN10),f=Math.pow(10,e),g=d/f;return g>=E10?f*=10:g>=E5?f*=5:g>=E2&&(f*=2),b<a?-f:f}function ticks(a=0,b=1,c=7){var d=Math.ceil,e=Math.floor;let f,g,h,j=-1,k=[];if(b=+b,a=+a,c=+c,a===b&&0<c)return[a];if(f=b<a,f&&(g=a,a=b,b=g),h=tickIncrement(a,b,c),0===h||!isFinite(h))return[];if(0<h)for(a=d(a/h),b=e(b/h),g=d(b-a+1);++j<g;)k[j]=(a+j)*h;else for(a=e(a*h),b=d(b*h),g=d(a-b+1);++j<g;)k[j]=(a-j)/h;return f&&k.reverse(),k}function tickFormat(a,b,c,d=numberConverter){var e=Math.abs,f=Math.max;const g=a[0],h=a[a.length-1],i=tickStep(g,h,isNil(b)?7:b);let j,k;switch(c=new FormatSpecifier(isNil(c)?',f':c),c.type){case's':return k=f(e(g),e(h)),j=precisionPrefix(i,k),isNil(c.precision)&&!isNaN(j)&&(c.precision=j),a=>d.formatPrefix(c,k).format(a);case'':case'e':case'g':case'p':case'r':{j=precisionRound(i,f(e(g),e(h))),isNil(c.precision)&&!isNaN(j)&&(c.precision=j-('e'===c.type));break}case'f':case'%':{j=precisionFixed(i),isNil(c.precision)&&!isNaN(j)&&(c.precision=j-2*('%'===c.type));break}}return a=>d.formatter(c).format(a)}export default ticks;export{tickIncrement,tickStep,tickFormat};