X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=inline;f=ui%2Fweb%2Fsrc%2Fcomposables%2FUtils.ts;h=8cd068b3dbdd2f46e074121287d4b279a534b52b;hb=2610da71b813ad94e1a2a48755d5689da53b41fa;hp=92f687d85302cf0cd56949fc800b899390459f47;hpb=b40b5cb39eb44088100f2ce5efc2a6fdf4b84f26;p=e-mobility-charging-stations-simulator.git diff --git a/ui/web/src/composables/Utils.ts b/ui/web/src/composables/Utils.ts index 92f687d8..8cd068b3 100644 --- a/ui/web/src/composables/Utils.ts +++ b/ui/web/src/composables/Utils.ts @@ -1,47 +1,55 @@ -export default class Utils { - // STATE - public static isUndefined(value: unknown): boolean { - return typeof value === 'undefined'; +export const convertToBoolean = (value: unknown): boolean => { + let result = false + if (value != null) { + // Check the type + if (typeof value === 'boolean') { + return value + } else if (typeof value === 'string' && (value.toLowerCase() === 'true' || value === '1')) { + result = true + } else if (typeof value === 'number' && value === 1) { + result = true + } } + return result +} - public static ifUndefined(value: T | undefined, isValue: T): T { - if (Utils.isUndefined(value) === true) return isValue; - return value as T; +export const convertToInt = (value: unknown): number => { + if (value == null) { + return 0 } - - public static isIterable>(obj: T): boolean { - if (obj === null || obj === undefined) { - return false; - } - return typeof obj[Symbol.iterator] === 'function'; + if (Number.isSafeInteger(value)) { + return value as number } + if (typeof value === 'number') { + return Math.trunc(value) + } + let changedValue: number = value as number + if (typeof value === 'string') { + changedValue = parseInt(value) + } + if (isNaN(changedValue)) { + throw new Error(`Cannot convert to integer: '${String(value)}'`) + } + return changedValue +} - // public static ifNotIterableDo(obj: T, cb: () => void): void { - // if (this.isIterable(obj) === false) cb(); - // } +export const setToLocalStorage = (key: string, value: T): void => { + localStorage.setItem(key, JSON.stringify(value)) +} - public static async promiseWithTimeout( - promise: Promise, - timeoutMs: number, - timeoutError: Error, - timeoutCallback: () => void = () => { - /* This is intentional */ - } - ): Promise { - // Create a timeout promise that rejects in timeout milliseconds - const timeoutPromise = new Promise((_, reject) => { - setTimeout(() => { - timeoutCallback(); - reject(timeoutError); - }, timeoutMs); - }); +export const getFromLocalStorage = (key: string, defaultValue: T): T => { + const item = localStorage.getItem(key) + return item != null ? (JSON.parse(item) as T) : defaultValue +} - // Returns a race between timeout promise and the passed promise - return Promise.race([promise, timeoutPromise]); - } +export const removeFromLocalStorage = (key: string): void => { + localStorage.removeItem(key) +} + +export const getLocalStorage = (): Storage => { + return localStorage +} - // FUNCTIONAL - // public static compose(...fns: ((arg: T) => T)[]): (x: T) => T { - // return (x: T) => fns.reduceRight((y, fn) => fn(y), x); - // } +export const randomUUID = (): `${string}-${string}-${string}-${string}-${string}` => { + return crypto.randomUUID() }