extractPlans function
Implementation
List<StudyTeamEntry> extractPlans(BeautifulSoup soup) {
List<StudyTeamEntry> plans = [];
Bs4Element? table = soup.find('*', id: 's_m_Content_Content_spUge_theTable');
if (table != null) {
List<Bs4Element> elementHeaders = table.children[0].children[0].children;
List<Bs4Element> teamEntriesWithEnds =
table.children[0].children[1].children;
if (elementHeaders.isNotEmpty && teamEntriesWithEnds.isNotEmpty) {
List<Bs4Element> headers =
elementHeaders.sublist(2, elementHeaders.length - 2);
List<Bs4Element> teamEntries =
teamEntriesWithEnds.sublist(2, teamEntriesWithEnds.length - 1);
List<_HeaderEntry> teams =
headers.map((header) => _extractHeader(header)).toList();
for (var header in teams) {
var elements = teamEntries.sublist(0, header.colSpan);
teamEntries.removeRange(0, header.colSpan);
List<StudyPlanRef> refs = [];
for (var element in elements) {
List<Bs4Element> phases = element.findAll('*', class_: 'phase');
for (var phase in phases) {
refs.add(_extractPlan(phase));
}
}
plans.add(StudyTeamEntry(team: header.team, entries: refs));
}
}
}
return plans;
}