function createColouredTable(arrayOfDicts, colourMapping) {
const rgbaMapping = {};
colourMapping.domain.forEach((key, i) => {
rgbaMapping[key] = [
hexToRgba(colourMapping.range[i], 0.35),
hexToRgba(colourMapping.range[i], 0.1)
];
});
const headerKeys = Object.keys(arrayOfDicts[0]);
const thead = `<tr>${headerKeys
.map((key) => {
const colorKey = colourMapping.domain.find((d) => key.includes(d));
const bgColor = colorKey ? rgbaMapping[colorKey][0] : "";
return `<th style='background-color:${bgColor};'>${key}</th>`;
})
.join("")}</tr>`;
const rows = arrayOfDicts
.map((row) => {
return `<tr>${headerKeys
.map((key) => {
const value = row[key];
let bgColor = "";
if (key.includes("final_match_weight")) {
bgColor = getColorForFinalMatchWeight(value);
} else if (key.includes("match_probability")) {
bgColor = getColorForMatchProbability(value);
} else {
const colorKey = colourMapping.domain.find((d) => key.includes(d));
bgColor = colorKey ? rgbaMapping[colorKey][1] : "";
}
return `<td style='background-color:${bgColor};'>${value}</td>`;
})
.join("")}</tr>`;
})
.join("");
return `<table>${thead}${rows}</table>`;
}