Skip to content

Commit 8ed71c9

Browse files
committed
Support subsubteams
1 parent a73b1ea commit 8ed71c9

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

src/teams.rs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,17 +106,36 @@ impl Data {
106106
let mut wgs = Vec::new();
107107
let mut project_groups = Vec::new();
108108
self.teams
109-
.into_iter()
109+
.iter()
110110
.filter(|team| team.website_data.is_some())
111111
.filter(|team| team.subteam_of.as_ref() == Some(&main_team.name))
112-
.for_each(|team| match team.kind {
113-
TeamKind::Team => subteams.push(team),
114-
TeamKind::WorkingGroup => wgs.push(team),
115-
TeamKind::ProjectGroup => project_groups.push(team),
112+
.for_each(|subteam| match subteam.kind {
113+
TeamKind::Team => {
114+
subteams.push(subteam.clone());
115+
116+
subteams.extend(
117+
self.teams
118+
.iter()
119+
.filter(|team| team.subteam_of.as_ref() == Some(&subteam.name))
120+
.filter(|team| matches!(team.kind, TeamKind::Team))
121+
.filter(|team| team.website_data.is_some())
122+
.cloned(),
123+
);
124+
}
125+
TeamKind::WorkingGroup => wgs.push(subteam.clone()),
126+
TeamKind::ProjectGroup => project_groups.push(subteam.clone()),
116127
_ => {}
117128
});
118129

119-
subteams.sort_by_key(|team| Reverse(team.website_data.as_ref().unwrap().weight));
130+
subteams.sort_by_key(|team| {
131+
Reverse((
132+
self.teams
133+
.iter()
134+
.find(|superteam| team.subteam_of.as_ref() == Some(&superteam.name))
135+
.and_then(|team| team.website_data.as_ref().map(|data| data.weight)),
136+
team.website_data.as_ref().unwrap().weight,
137+
))
138+
});
120139
wgs.sort_by_key(|team| Reverse(team.website_data.as_ref().unwrap().weight));
121140
project_groups.sort_by_key(|team| Reverse(team.website_data.as_ref().unwrap().weight));
122141

0 commit comments

Comments
 (0)