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;
}