in src/components/CompareResults/TableContent.tsx [56:89]
function processResults(
results: CompareResultsItem[],
): ListOfResultsGroupedByTest {
// This map will make it possible to group all results by test header first,
// and by revision then.
// Map<header, Map<revision, array of results>>
const processedResults: Map<
string,
Map<string, CompareResultsItem[]>
> = new Map();
for (const result of results) {
const { new_rev: newRevision, header_name: header } = result;
let resultsForHeader = processedResults.get(header);
if (!resultsForHeader) {
resultsForHeader = new Map();
processedResults.set(header, resultsForHeader);
}
const resultsForRevision = resultsForHeader.get(newRevision);
if (!resultsForRevision) {
resultsForHeader.set(newRevision, [result]);
} else {
resultsForRevision.push(result);
}
}
// This command converts the Map of maps in an array of arrays.
return Array.from(processedResults, ([header, resultsForHeader]) => [
header,
[...resultsForHeader],
]);
}