From 19813157a6a386cf2680728beabc04c8347a2fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Tue, 4 Nov 2025 18:47:49 +0100 Subject: [PATCH 1/2] Sort team members on the website --- src/teams.rs | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/teams.rs b/src/teams.rs index 31a2209e..76de23fe 100644 --- a/src/teams.rs +++ b/src/teams.rs @@ -90,7 +90,7 @@ impl RustTeams { let teams = self.teams.clone(); // Find the main team first - let main_team = teams + let mut main_team = teams .iter() .filter(|team| { team.website_data.as_ref().map(|ws| ws.page.as_str()) == Some(team_page_name) @@ -181,6 +181,41 @@ impl RustTeams { } } + fn sort_members(members: &mut [TeamMember]) { + members.sort_by_key(|member| member.github.to_lowercase()); + members.sort_by(|a, b| { + // First, sort by lead status (lead before non-lead) + if a.is_lead != b.is_lead { + b.is_lead.cmp(&a.is_lead) + } else if a.roles.len() != b.roles.len() { + // Then by role count (more roles before less roles) + b.roles.cmp(&a.roles) + } else { + // Then by the role contents + // If there is no role, will return equal, and thus use the original GitHub username + // ordering + a.roles.cmp(&b.roles) + } + }); + } + + fn sort_team_members(team: &mut Team) { + sort_members(&mut team.members); + sort_members(&mut team.alumni); + } + + fn sort_teams(teams: &mut [Team]) { + for team in teams { + sort_team_members(team); + } + } + + sort_team_members(&mut main_team); + sort_teams(&mut subteams); + sort_teams(&mut wgs); + sort_teams(&mut project_groups); + sort_teams(&mut other_teams); + Ok(PageData { team: main_team, zulip_domain: crate::ZULIP_DOMAIN, From 8c9e734e4bd6794cf53058247aa4d983ebf6dee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Tue, 4 Nov 2025 21:10:44 +0100 Subject: [PATCH 2/2] Fix sort by role count Co-authored-by: Remo Senekowitsch --- src/teams.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/teams.rs b/src/teams.rs index 76de23fe..77e406bc 100644 --- a/src/teams.rs +++ b/src/teams.rs @@ -189,7 +189,7 @@ impl RustTeams { b.is_lead.cmp(&a.is_lead) } else if a.roles.len() != b.roles.len() { // Then by role count (more roles before less roles) - b.roles.cmp(&a.roles) + b.roles.len().cmp(&a.roles.len()) } else { // Then by the role contents // If there is no role, will return equal, and thus use the original GitHub username