export function parseTableData(table: HTMLTableElement): any[] { const data: any[][] = []; table.querySelectorAll("tr").forEach((row, i) => { let cells = row.cells; let row_data: any[] = []; Array.from(cells).forEach(cell => { let selectElement = cell.querySelector("select"); let value: string | null = selectElement ? selectElement.value : cell.innerText; value = value.trim(); value = value.toLowerCase(); if (value === "") { value = null; } row_data.push(value); }); data.push(row_data); }); const formattedData: any[] = data.reduce((accumulator: any, row: any[], i: number) => { if (i === 0) { accumulator.properties = row; } else { const rowObject: { [key: string]: any } = {}; rowObject["uid"] = i; accumulator.properties.forEach((key: string, i: number) => { rowObject[key] = row[i]; }); accumulator.push(rowObject); } return accumulator; }, []); return formattedData; }