| export class UtilSOP { | 
|   public static readonly dayArray: string[] = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; | 
|   | 
|   /** | 
|    * Format the date into string format (1-Jan-2021). | 
|    * | 
|    * @param date Date to format. | 
|    * @returns The date string in format (1-Jan-2021). | 
|    */ | 
|   public static getDateString(date: Date): string { | 
|     const actualDateDay = date.getDate(); // Careful not to use getDay() as that returns day of the week | 
|     const actualDateMonthShort = date.toLocaleString('en-us', { month: 'short' }); // Format = Jan, Feb .... | 
|     const actualDateYear = date.getFullYear(); | 
|     const actualDateStr = `${actualDateDay}-${actualDateMonthShort}-${actualDateYear}`; | 
|   | 
|     return actualDateStr; | 
|   } | 
|   | 
|   public static getDaysString(dayNumbers: number[]): string[] { | 
|     return dayNumbers.map((x: number) => UtilSOP.dayArray[x]); | 
|   } | 
|   | 
|   public static getInterfaceKeysAsStringArray(interfaceObj: any): string[] { | 
|     const arr: string[] = []; | 
|     for (const [key, _value] of Object.entries(interfaceObj)) { | 
|       arr.push(key); | 
|     } | 
|   | 
|     return arr; | 
|   } | 
|   | 
|   public static getInterfaceObjectAsKeyValueArray(interfaceObj: any): string[] { | 
|     const arr: string[] = []; | 
|     for (const [key, value] of Object.entries(interfaceObj)) { | 
|       arr.push(`${key} = "${value}"`); | 
|     } | 
|   | 
|     return arr; | 
|   } | 
|   | 
|   /** | 
|    * More precise rounding of numbers. | 
|    * https://www.jacklmoore.com/notes/rounding-in-javascript/ | 
|    * | 
|    * @param num Number to round | 
|    * @param decimals Number of decimals to round | 
|    * @returns Rounded number | 
|    */ | 
|   public static roundNumber(num: number, decimals: number): number { | 
|     const a = Number(`${num}e${decimals}`); | 
|   | 
|     return Number(`${Math.round(a)}e-${decimals}`); | 
|   } | 
|   | 
|   /** | 
|    * Retrieve all values (ignoring the keys) from the array of interface and output the values as string array. | 
|    * | 
|    * @param arrKeyValues Array of interface such as [{Name: X1}, {Name: X2}] | 
|    * @returns The string array in the form [X1, X2] | 
|    */ | 
|   public static transformInterfaceValuesToStringArray(arrKeyValues: any[]): string[] { | 
|     const values: string[] = []; | 
|   | 
|     // For each object in the array, retrieve the values delimited by comma | 
|     // Example: [{Name: X1}, {Name: X2}] => [X1, X2] | 
|     for (const keyValue of arrKeyValues) { | 
|       for (const [, entryvalue] of Object.entries(keyValue)) { | 
|         values.push(entryvalue as string); | 
|       } | 
|     } | 
|     return values; | 
|   } | 
| } |