Harmattan font size changes testing
[marketstoday] / src / qml / Library / js / Common.js
index d781a0f..56ce2a9 100644 (file)
@@ -6,6 +6,52 @@
 
 function isTodayAWeekDay(){
     var dayOfWeek = (new Date()).getDay();
-    var isWeekDay = (dayOfWeek == 0 || dayOfWeek == 6)? false : true;
+    var isWeekDay = (dayOfWeek === 0 || dayOfWeek === 6)? false : true;
     return isWeekDay;
 }
+
+
+
+/**
+* Enforce a specific amount of decimal digits and also fix floating
+* point rounding issues.
+* @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) ->
+* 0.61`
+*/
+function enforcePrecision(val, nDecimalDigits){
+    var pow = Math.pow(10, nDecimalDigits);
+    return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits);
+}
+
+var _defaultDict = {
+    thousand : 'K',
+    million : 'M',
+    billion : 'B'
+};
+
+
+/**
+* Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...)
+*/
+function abbreviateNumber(val, nDecimals, dict){
+    nDecimals = nDecimals !== null? nDecimals : 1;
+    dict = dict || _defaultDict;
+    val = enforcePrecision(val, nDecimals);
+
+    var str, mod;
+
+    if (val < 1000){
+        str = val;
+    } else if (val < 1000000) {
+        mod = enforcePrecision(val / 1000, nDecimals);
+        // might overflow to next scale during rounding
+        str = mod < 1000? mod + dict.thousand : 1 + dict.million;
+    } else if (val < 1000000000) {
+        mod = enforcePrecision(val / 1000000, nDecimals);
+        str = mod < 1000? mod + dict.million : 1 + dict.billion;
+    } else {
+        str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion;
+    }
+
+    return str;
+}