in src/hooks/useTableSort.ts [70:109]
export function sortResults(
columnsConfiguration: CompareResultsTableConfig,
results: CompareResultsItem[],
columnId: string | null,
direction: 'asc' | 'desc' | null,
defaultSortFunction: (
resultA: CompareResultsItem,
resultB: CompareResultsItem,
) => number,
) {
let sortFunction = defaultSortFunction;
let columnConfiguration: CompareResultsTableConfig[number] | undefined;
if (columnId && direction) {
columnConfiguration = columnsConfiguration.find(
(column) => column.key === columnId,
);
}
if (columnConfiguration) {
if (!('sortFunction' in columnConfiguration)) {
console.warn(
`No sortFunction information for the columnConfiguration ${String(
columnConfiguration.name ?? columnId,
)}`,
);
return results;
}
sortFunction = columnConfiguration.sortFunction;
}
const directionedSortFunction =
direction === 'desc'
? (itemA: CompareResultsItem, itemB: CompareResultsItem) =>
sortFunction(itemB, itemA)
: sortFunction;
return results.toSorted(directionedSortFunction);
}