49 lines
1.0 KiB
TypeScript
49 lines
1.0 KiB
TypeScript
import type { TeamMemberRole } from '@/components/teams/TeamRoster';
|
|
|
|
interface TeamMember {
|
|
driver: {
|
|
id: string;
|
|
name: string;
|
|
country: string;
|
|
};
|
|
role: TeamMemberRole;
|
|
joinedAt: string;
|
|
rating: number | null;
|
|
overallRank: number | null;
|
|
}
|
|
|
|
export function sortMembers(members: TeamMember[], sortBy: string) {
|
|
function getRoleOrder(role: TeamMemberRole): number {
|
|
switch (role) {
|
|
case 'owner':
|
|
return 0;
|
|
case 'manager':
|
|
return 1;
|
|
case 'member':
|
|
return 2;
|
|
default:
|
|
return 3;
|
|
}
|
|
}
|
|
|
|
const list = [...members];
|
|
list.sort((a, b) => {
|
|
switch (sortBy) {
|
|
case 'rating': {
|
|
const ratingA = a.rating ?? 0;
|
|
const ratingB = b.rating ?? 0;
|
|
return ratingB - ratingA;
|
|
}
|
|
case 'role': {
|
|
return getRoleOrder(a.role) - getRoleOrder(b.role);
|
|
}
|
|
case 'name': {
|
|
return a.driver.name.localeCompare(b.driver.name);
|
|
}
|
|
default:
|
|
return 0;
|
|
}
|
|
});
|
|
return list;
|
|
}
|