X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Futils%2FUtils.ts;h=69ccc318143b7f481b0a0f059d5c5aacff1f19dc;hb=f738a0e9257a5bd6d46a79a5845b929c4a06e94f;hp=c54bb17fa7431c587d21548b6923975d058bb5b4;hpb=6af9012e5b9ef2ed6f4fe8a9696b40ac0e8da4d0;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index c54bb17f..69ccc318 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -5,14 +5,16 @@ export default class Utils { return uuid(); } - static async sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)); + static async sleep(milliSeconds: number): Promise { + return new Promise((resolve) => setTimeout(resolve, milliSeconds)); } - static secondstoHHMMSS(seconds): string { - const date = new Date(); - date.setSeconds(seconds); - return date.toISOString().substr(11, 8); + static secondsToHHMMSS(seconds: number): string { + return new Date(seconds * 1000).toISOString().substr(11, 8); + } + + static milliSecondsToHHMMSS(milliSeconds: number): string { + return new Date(milliSeconds).toISOString().substr(11, 8); } static removeExtraEmptyLines(tab): void { @@ -100,7 +102,8 @@ export default class Utils { } static roundTo(number: number, scale: number): number { - return Utils.convertToFloat(number.toFixed(scale)); + const roundPower = Math.pow(10, scale); + return Math.round(number * roundPower) / roundPower; } static getRandomFloatRounded(max: number, min = 0, scale = 2): number { @@ -115,10 +118,6 @@ export default class Utils { return date.toLocaleString() + prefixString; } - static objectHasOwnProperty(object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - } - static cloneObject(object) { return JSON.parse(JSON.stringify(object)); } @@ -147,7 +146,7 @@ export default class Utils { return typeof value === 'string'; } - static isUndefined(value) { + static isUndefined(value): boolean { return typeof value === 'undefined'; } @@ -160,6 +159,9 @@ export default class Utils { } static isEmptyArray(object): boolean { + if (!object) { + return true; + } if (Array.isArray(object) && object.length > 0) { return false; } @@ -169,4 +171,16 @@ export default class Utils { static isEmptyObject(obj): boolean { return !Object.keys(obj).length; } + + static insertAt = (str: string, subStr: string, pos: number): string => `${str.slice(0, pos)}${subStr}${str.slice(pos)}`; + + /** + * @param {number} [retryNumber=0] + * @return {number} - delay in milliseconds + */ + static exponentialDelay(retryNumber = 0): number { + const delay = Math.pow(2, retryNumber) * 100; + const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay + return delay + randomSum; + } }