in src/components/CompareResults/TableHeader.tsx [322:392]
function renderColumnHeader(header: CompareResultsTableColumn) {
let content: ReactNode = header.name;
if ('sortFunction' in header && 'filter' in header) {
content = (
<ButtonGroup
variant='contained'
color='tableHeaderButton'
disableElevation
>
<SortableColumnHeader
name={header.name}
displayLabel={false}
sortDirection={header.key === sortColumn ? sortDirection : null}
onToggle={(newSortDirection) =>
onToggleSort(header.key, newSortDirection)
}
/>
<FilterableColumnHeader
possibleValues={header.possibleValues}
name={header.name}
columnId={header.key}
checkedValues={filters.get(header.key)}
onClearFilter={() => onClearFilter(header.key)}
onToggleFilter={(checkedValues) =>
onToggleFilter(header.key, checkedValues)
}
tooltip={header.tooltip}
/>
</ButtonGroup>
);
} else if ('sortFunction' in header) {
content = (
<SortableColumnHeader
name={header.name}
displayLabel={true}
sortDirection={header.key === sortColumn ? sortDirection : null}
onToggle={(newSortDirection) =>
onToggleSort(header.key, newSortDirection)
}
/>
);
} else if ('filter' in header) {
content = (
<FilterableColumnHeader
possibleValues={header.possibleValues}
name={header.name}
columnId={header.key}
checkedValues={filters.get(header.key)}
onClearFilter={() => onClearFilter(header.key)}
onToggleFilter={(checkedValues) =>
onToggleFilter(header.key, checkedValues)
}
tooltip={header.tooltip}
/>
);
}
// we don't want to show tooltip in filterable columns again
if (header.tooltip && !('filter' in header)) {
return (
<Tooltip title={header.tooltip} placement='top' arrow>
{/* Box is used because tooltip expects a single valid element but sometimes content is a string */}
<Box component='span' sx={{ cursor: 'pointer' }}>
{content}
</Box>
</Tooltip>
);
}
return content;
}