All files / src/app/utils utils.ts

90.38% Statements 47/52
78.94% Branches 30/38
100% Functions 10/10
89.79% Lines 44/49

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112  9675x 6593x     3082x 451x 451x 3170x   451x     2631x 2631x 6453x 6453x     2631x           3024x     3024x     3024x     3024x     3024x   3024x           11629x 11609x   20x     20x       12x 12x       4x       341x 214x     127x 91x       91x       91x 5x       91x     36x 44x     44x     28x     8x       36x       70x 70x 205x 118x     70x    
export function deepCopy<T>(obj: T): T {
    if (obj === null || typeof obj !== 'object') {
        return obj;
    }
 
    if (Array.isArray(obj)) {
        const arrCopy: T[] = [];
        for (const item of obj) {
            arrCopy.push(deepCopy(item));
        }
        return arrCopy as unknown as T;
    }
 
    const objCopy: { [key: string]: T[keyof T] } = {} as { [key: string]: T[keyof T] };
    for (const key in obj) {
        Eif (Object.prototype.hasOwnProperty.call(obj, key)) {
            objCopy[key] = deepCopy((obj as { [key: string]: T[keyof T] })[key]);
        }
    }
    return objCopy as T;
}
 
 
export function getWeekNumber(date: Date): number {
    // Clone the date to avoid modifying the original
    const current = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
 
    // Set the first day of the week to Monday
    const day = current.getUTCDay() === 0 ? 7 : current.getUTCDay(); // Sunday is 7
 
    // Set the current date to the nearest Thursday (current day + 4 - day number)
    current.setUTCDate(current.getUTCDate() + 4 - day);
 
    // Get the year of the adjusted date
    const yearStart = new Date(Date.UTC(current.getUTCFullYear(), 0, 1));
 
    // Calculate the week number
    const weekNumber = Math.ceil((((current.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);
 
    return weekNumber;
}
 
 
 
export function getSeverity(status: string) {
    if (status === "up") {
        return "success";
    }
    Iif (status === "no data") {
        return "info";
    }
    return "danger";
}
 
function componentToHex(c: number) {
    const hex = Math.round(c).toString(16);
    return hex.length == 1 ? "0" + hex : hex;
}
 
export function rgbToHex(r: number, g: number, b: number) {
    return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
 
export function areEqual<T>(firstObject: T, secondObject: T): boolean {
    if (firstObject === null || typeof firstObject !== 'object') {
        return firstObject === secondObject;
    }
 
    if (Array.isArray(firstObject) && Array.isArray(secondObject)) {
        Iif (firstObject === secondObject) {
            return true;
        }
 
        Iif (firstObject.length !== secondObject.length) {
            return false;
        }
 
        for (let i = 0; i < firstObject.length; ++i) {
            Iif (!areEqual(firstObject[i], secondObject[i])) {
                return false;
            }
        }
        return true;
    }
 
    for (const key in firstObject) {
        Iif (!Object.prototype.hasOwnProperty.call(firstObject, key) || !Object.prototype.hasOwnProperty.call(secondObject, key)) {
            return false;
        }
        if (!areEqual(
            (firstObject as { [key: string]: T[keyof T] })[key],
            (secondObject as { [key: string]: T[keyof T] })[key])) {
            return false;
        }
    }
    return true;
}
 
export function arrayContains<T>(array: T[], object: T) {
    return (array.find(element => areEqual(element, object)) !== undefined);
}
 
export function getDistinctElements<T>(array: T[]): T[] {
    const newArray: T[] = [];
    for (const element of array) {
        if (newArray.every(elem => !areEqual(elem, element))) {
            newArray.push(element);
        }
    }
    return newArray;
}