Harmattan font changes completed
[marketstoday] / src / qml / Library / js / Common.js
1 /*
2 @version: 0.5
3 @author: Sudheer K. <scifi1947 at gmail.com>
4 @license: GNU General Public License
5 */
6
7 function isTodayAWeekDay(){
8     var dayOfWeek = (new Date()).getDay();
9     var isWeekDay = (dayOfWeek === 0 || dayOfWeek === 6)? false : true;
10     return isWeekDay;
11 }
12
13
14 //Source: Mout JS library (https://github.com/mout/mout/blob/master/src/number/abbreviate.js)
15
16 /**
17 * Enforce a specific amount of decimal digits and also fix floating
18 * point rounding issues.
19 * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) ->
20 * 0.61`
21 */
22 function enforcePrecision(val, nDecimalDigits){
23     var pow = Math.pow(10, nDecimalDigits);
24     return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits);
25 }
26
27 var _defaultDict = {
28     thousand : 'K',
29     million : 'M',
30     billion : 'B'
31 };
32
33
34 /**
35 * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...)
36 */
37 function abbreviateNumber(val, nDecimals, dict){
38     nDecimals = nDecimals !== null? nDecimals : 1;
39     dict = dict || _defaultDict;
40     val = enforcePrecision(val, nDecimals);
41
42     var str, mod;
43
44     if (val < 1000){
45         str = val;
46     } else if (val < 1000000) {
47         mod = enforcePrecision(val / 1000, nDecimals);
48         // might overflow to next scale during rounding
49         str = mod < 1000? mod + dict.thousand : 1 + dict.million;
50     } else if (val < 1000000000) {
51         mod = enforcePrecision(val / 1000000, nDecimals);
52         str = mod < 1000? mod + dict.million : 1 + dict.billion;
53     } else {
54         str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion;
55     }
56
57     return str;
58 }