StructureJS

0.10.1

Code and documentation for the StructureJS library.

File: js/util/NumberUtil.js

(function (factory) {
    if (typeof module === 'object' && typeof module.exports === 'object') {
        var v = factory(require, exports); if (v !== undefined) module.exports = v;
    }
    else if (typeof define === 'function' && define.amd) {
        define(["require", "exports"], factory);
    }
})(function (require, exports) {
    /**
     * The NumberUtil class has many helper methods to work with number data.
     *
     * @class NumberUtil
     * @module StructureJS
     * @submodule util
     * @author Robert S. (www.codeBelt.com)
     * @static
     */
    var NumberUtil = (function () {
        function NumberUtil() {
            throw new Error('[NumberUtil] Do not instantiate the NumberUtil class because it is a static class.');
        }
        /**
         * Converts bytes into megabytes.
         *
         * @method bytesToMegabytes
         * @param bytes {number}
         * @returns {number}
         * @public
         * @static
         * @example
         *
         */
        NumberUtil.bytesToMegabytes = function (bytes) {
            return bytes / 1048576;
        };
        /**
         * Converts centimeters into inches.
         *
         * @method centimeterToInch
         * @param cm {number}
         * @public
         * @static
         * @returns {number}
         * @example
         *     NumberUtil.centimeterToInch(1);
         *     // 0.3937
         */
        NumberUtil.centimeterToInch = function (cm) {
            return cm * 0.39370;
        };
        /**
         * Converts inches into centimeters.
         *
         * @method inchToCentimeter
         * @param inch {number}
         * @public
         * @static
         * @returns {number}
         * @example
         *     NumberUtil.inchToCentimeter(1);
         *     // 2.54
         */
        NumberUtil.inchToCentimeter = function (inch) {
            return inch * 2.54;
        };
        /**
         * Converts feet into meters.
         *
         * @method feetToMeter
         * @param feet {number}
         * @public
         * @static
         * @returns {number}
         * @example
         *     NumberUtil.feetToMeter(1);
         *     // 0.3048
         *
         */
        NumberUtil.feetToMeter = function (feet) {
            return feet / 3.2808;
        };
        /**
         * Converts seconds into hour, minutes, seconds.
         *
         * @method convertToHHMMSS
         * @param seconds {number}
         * @param showHours [boolean=true] By default if the time does not pass one hour it will show 00:05:34. Pass false to display the time as 05:34 until it gets pass one hour and then it will show 01:00:00
         * @returns {string}
         * @public
         * @static
         * @example
         *     NumberUtil.convertToHHMMSS(33333);
         *     // '09:15:33'
         */
        NumberUtil.convertToHHMMSS = function (seconds, showHours) {
            if (showHours === void 0) { showHours = true; }
            var sec = isNaN(seconds) ? 0 : seconds; //Changes NaN to 0
            var s = sec % 60;
            var m = Math.floor((sec % 3600) / 60);
            var h = Math.floor(sec / (60 * 60));
            var hourStr;
            if (showHours === false) {
                hourStr = (h == 0) ? '' : NumberUtil.doubleDigitFormat(h) + ':';
            }
            else {
                hourStr = NumberUtil.doubleDigitFormat(h) + ':';
            }
            var minuteStr = NumberUtil.doubleDigitFormat(m) + ':';
            var secondsStr = NumberUtil.doubleDigitFormat(s);
            return hourStr + minuteStr + secondsStr;
        };
        /**
         * Formats a number from 0-9 to display with 2 digits.
         *
         * @method doubleDigitFormat
         * @param num {number}
         * @returns {string}
         * @public
         * @static
         * @example
         *     NumberUtil.doubleDigitFormat(0);
         *     // '00'
         *
         *     NumberUtil.doubleDigitFormat(5);
         *     // '05'
         *
         *     NumberUtil.doubleDigitFormat(9);
         *     // '09'
         */
        NumberUtil.doubleDigitFormat = function (num) {
            if (num < 10) {
                return ('0' + num);
            }
            return String(num);
        };
        /**
         * Formats a currency string as a number.
         *
         * @method unformatUnit
         * @param value {string} The string currency that you want converted into a number.
         * @returns {number} Returns the number value of the currency string.
         * @public
         * @static
         * @example
         *     NumberUtil.unformatUnit('$1,234,567.89');
         *     // 1234567.89
         *
         *     NumberUtil.unformatUnit('1.234.567,89 €');
         *     // 1234567.89
         *
         *     NumberUtil.unformatUnit('$-123,456,789.99');
         *     // -123456789.99
         */
        NumberUtil.unformatUnit = function (value) {
            // Removes all characters and spaces except the period (.), comma (,) and the negative symbol (-).
            var withoutSpecialCharacters = value.replace(/[^\d.,-]/g, '');
            // Gets the index where the decimal placement is located.
            var decimalIndex = withoutSpecialCharacters.length - 3;
            var decimalSeparator = withoutSpecialCharacters.charAt(decimalIndex);
            if (decimalSeparator === '.') {
                // Removes all comma (,) characters and leaves the period (.) and the negative symbol (-).
                withoutSpecialCharacters = value.replace(/[^\d.-]/g, '');
            }
            else {
                // Removes all period (.) characters and leaves the comma (,) and the negative symbol (-).
                withoutSpecialCharacters = value.replace(/[^\d,-]/g, '');
                decimalIndex = withoutSpecialCharacters.length - 3;
                //Replaces the comma (,) to a period (.).
                withoutSpecialCharacters = withoutSpecialCharacters.replace(',', '.');
            }
            return parseFloat(withoutSpecialCharacters);
        };
        /**
         * Formats a number as a currency string.
         *
         * @method formatUnit
         * @param value {number} The number value you want formatted.
         * @param [decimalPlacement=2] {number} How many decimal placements you want to show.
         * @param [decimalSeparator='.'] {string} The character you want to use as the thousands separator.
         * @param [thousandsSeparator=','] {string} The character you want to use as the thousands separator.
         * @param [currencySymbol=''] {string} The symbol you would like to add.
         * @param [currencySymbolPlacement=0] {number} The placement of the symbol. Use 0 to place in front or 1 to place at the end.
         * @returns {string} Returns the formatted currency.
         * @public
         * @static
         * @example
         *     NumberUtil.formatUnit(1234567.89, 2, ".", ",", "$", 0);
         *     // '$1,234,567.89'
         *
         *     NumberUtil.formatUnit(12341234.56, 2, "*", ",", " €", 1);
         *     // '12,341,234*56 €'
         *
         *     NumberUtil.formatUnit(-1900.24, 1);
         *     // '-1,900.2'
         */
        NumberUtil.formatUnit = function (value, decimalPlacement, decimalSeparator, thousandsSeparator, currencySymbol, currencySymbolPlacement) {
            if (decimalPlacement === void 0) { decimalPlacement = 2; }
            if (decimalSeparator === void 0) { decimalSeparator = '.'; }
            if (thousandsSeparator === void 0) { thousandsSeparator = ','; }
            if (currencySymbol === void 0) { currencySymbol = ''; }
            if (currencySymbolPlacement === void 0) { currencySymbolPlacement = 0; }
            var str = String(Number(value).toFixed(decimalPlacement));
            var result = '';
            if (decimalPlacement != 0) {
                result = str.slice(-1 - decimalPlacement);
                result = result.replace('.', decimalSeparator);
                str = str.slice(0, str.length - 1 - decimalPlacement);
            }
            while (str.length > 3) {
                result = thousandsSeparator + str.slice(-3) + result;
                str = str.slice(0, str.length - 3);
            }
            if (str.length > 0) {
                if (currencySymbolPlacement === 0) {
                    result = currencySymbol + str + result;
                }
                else if (currencySymbolPlacement === 1) {
                    result = str + result + currencySymbol;
                }
                else {
                    result = str + result;
                }
            }
            return result;
        };
        /**
         * Convert Fahrenheit to Celsius.
         *
         * @method fahrenheitToCelsius
         * @param fahrenheit {number} The fahrenheit value.
         * @param decimals {number} The number of decimals.
         * @return {number}
         * @example
         *      MathUtil.fahrenheitToCelsius(32);
         *      // 0
         *
         *      MathUtil.fahrenheitToCelsius(212);
         *      // 100
         */
        NumberUtil.fahrenheitToCelsius = function (fahrenheit, decimals) {
            if (decimals === void 0) { decimals = 2; }
            var d = '';
            var r = (5 / 9) * (fahrenheit - 32);
            var s = r.toString().split('.');
            if (s[1] != undefined) {
                d = s[1].substr(0, decimals);
            }
            else {
                var i_1 = decimals;
                while (i_1 > 0) {
                    d += '0';
                    i_1--;
                }
            }
            var c = s[0] + '.' + d;
            return Number(c);
        };
        /**
         * Convert Celsius to Fahrenheit.
         *
         * @method celsiusToFahrenheit
         * @param celsius {number} The celsius value.
         * @param decimals {number} The number of decimals.
         * @return {number}
         * @example
         *      MathUtil.celsiusToFahrenheit(0);
         *      // 32
         *
         *      MathUtil.celsiusToFahrenheit(100);
         *      // 212
         */
        NumberUtil.celsiusToFahrenheit = function (celsius, decimals) {
            if (decimals === void 0) { decimals = 2; }
            var d = '';
            var r = (celsius / (5 / 9)) + 32;
            var s = r.toString().split('.');
            if (s[1] != undefined) {
                d = s[1].substr(0, decimals);
            }
            else {
                var i_2 = decimals;
                while (i_2 > 0) {
                    d += '0';
                    i_2--;
                }
            }
            var f = s[0] + '.' + d;
            return Number(f);
        };
        return NumberUtil;
    })();
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.default = NumberUtil;
});