Skip to content

Commit 1981315

Browse files
committed
Sort team members on the website
1 parent 871bada commit 1981315

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

src/teams.rs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ impl RustTeams {
9090
let teams = self.teams.clone();
9191

9292
// Find the main team first
93-
let main_team = teams
93+
let mut main_team = teams
9494
.iter()
9595
.filter(|team| {
9696
team.website_data.as_ref().map(|ws| ws.page.as_str()) == Some(team_page_name)
@@ -181,6 +181,41 @@ impl RustTeams {
181181
}
182182
}
183183

184+
fn sort_members(members: &mut [TeamMember]) {
185+
members.sort_by_key(|member| member.github.to_lowercase());
186+
members.sort_by(|a, b| {
187+
// First, sort by lead status (lead before non-lead)
188+
if a.is_lead != b.is_lead {
189+
b.is_lead.cmp(&a.is_lead)
190+
} else if a.roles.len() != b.roles.len() {
191+
// Then by role count (more roles before less roles)
192+
b.roles.cmp(&a.roles)
193+
} else {
194+
// Then by the role contents
195+
// If there is no role, will return equal, and thus use the original GitHub username
196+
// ordering
197+
a.roles.cmp(&b.roles)
198+
}
199+
});
200+
}
201+
202+
fn sort_team_members(team: &mut Team) {
203+
sort_members(&mut team.members);
204+
sort_members(&mut team.alumni);
205+
}
206+
207+
fn sort_teams(teams: &mut [Team]) {
208+
for team in teams {
209+
sort_team_members(team);
210+
}
211+
}
212+
213+
sort_team_members(&mut main_team);
214+
sort_teams(&mut subteams);
215+
sort_teams(&mut wgs);
216+
sort_teams(&mut project_groups);
217+
sort_teams(&mut other_teams);
218+
184219
Ok(PageData {
185220
team: main_team,
186221
zulip_domain: crate::ZULIP_DOMAIN,

0 commit comments

Comments
 (0)