Skip to content

Commit ac15e69

Browse files
committed
Add awards info to TeamLookup
1 parent de7bea0 commit ac15e69

File tree

3 files changed

+46
-15
lines changed

3 files changed

+46
-15
lines changed

app/src/main/java/com/sunkensplashstudios/VRCRoboScout/EventDivisionRankingsView.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,10 @@ fun EventDivisionRankingsView(event: Event, division: Division, eventDivisionRan
8585
fun updateRankings() {
8686
CoroutineScope(Dispatchers.Default).launch {
8787
try {
88-
println("updating rankings: $event, $division")
89-
/*println("old rankings: ${event.rankings[division]}")
90-
println("old rankings event model: ${eventDivisionRankingsViewModel.event.rankings}")
91-
println("old rankings model: ${eventDivisionRankingsViewModel.rankings}")
92-
println("old ratings: ${event.teamPerformanceRatings[division]}")
93-
println("old ratings model: ${eventDivisionRankingsViewModel.teamPerformanceRatings}")*/
9488
event.fetchRankings(division)
9589
eventDivisionRankingsViewModel.rankings = (event.rankings[division] ?: emptyList()).toMutableList()
9690
event.calculateTeamPerformanceRatings(division)
9791
eventDivisionRankingsViewModel.teamPerformanceRatings = event.teamPerformanceRatings[division] ?: emptyMap()
98-
/*println("new rankings: ${eventDivisionRankingsViewModel.rankings}")
99-
println("new ratings: ${eventDivisionRankingsViewModel.teamPerformanceRatings}")*/
10092
} catch (e: Exception) {
10193
e.printStackTrace()
10294
}
@@ -140,9 +132,6 @@ fun EventDivisionRankingsView(event: Event, division: Division, eventDivisionRan
140132
.fillMaxSize()
141133
) {
142134
var update by remember { mutableStateOf(true) }
143-
println("div: ${eventDivisionRankingsViewModel.rankings}")
144-
println("loading: $loading")
145-
println("update: $update")
146135

147136
if (update) {
148137
update = false
@@ -151,14 +140,11 @@ fun EventDivisionRankingsView(event: Event, division: Division, eventDivisionRan
151140

152141
if (loading) {
153142
LoadingView()
154-
println("loading")
155143
}
156144
else if (eventDivisionRankingsViewModel.rankings.isEmpty()) {
157145
NoDataView()
158-
println("no data")
159146
}
160147
else {
161-
println("data")
162148
Column(
163149
modifier = Modifier.verticalScroll(rememberScrollState())
164150
) {

app/src/main/java/com/sunkensplashstudios/VRCRoboScout/LookupView.kt

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class LookupViewModel : ViewModel() {
7979
var wsEntry = mutableStateOf(WSEntry())
8080
var vdaEntry = mutableStateOf(VDAEntry())
8181
var avgRanking = mutableDoubleStateOf(0.0)
82+
var awardCounts = LinkedHashMap<String, Int>()
8283
var fetched = mutableStateOf(false)
8384
var loading = mutableStateOf(false)
8485

@@ -90,11 +91,17 @@ class LookupViewModel : ViewModel() {
9091
textColor.value = Color.Unspecified
9192
CoroutineScope(Dispatchers.Default).launch {
9293
val fetchedTeam = Team(number.value)
94+
fetchedTeam.fetchAwards()
95+
val fetchedAwardCounts = LinkedHashMap<String, Int>()
96+
for (award in fetchedTeam.awards) {
97+
fetchedAwardCounts[award.title] = (fetchedAwardCounts[award.title] ?: 0) + 1
98+
}
9399
withContext(Dispatchers.Main) {
94100
team.value = fetchedTeam
95101
wsEntry.value = API.worldSkillsFor(fetchedTeam)
96102
vdaEntry.value = API.vdaFor(fetchedTeam)
97103
avgRanking.doubleValue = fetchedTeam.averageQualifiersRanking()
104+
awardCounts = fetchedAwardCounts
98105
fetched.value = fetchedTeam.id != 0
99106
loading.value = false
100107
}
@@ -258,7 +265,7 @@ fun TeamLookup(lookupViewModel: LookupViewModel, navController: NavController) {
258265
)
259266
) {
260267
Column(
261-
verticalArrangement = Arrangement.spacedBy(12.dp),
268+
verticalArrangement = Arrangement.spacedBy(10.dp),
262269
modifier = Modifier.padding(10.dp)
263270
) {
264271
Column {
@@ -444,6 +451,33 @@ fun TeamLookup(lookupViewModel: LookupViewModel, navController: NavController) {
444451
thickness = 0.5.dp,
445452
color = MaterialTheme.colorScheme.secondary.copy(alpha = 0.1f),
446453
)
454+
455+
var awardsExpanded by remember { mutableStateOf(false) }
456+
457+
Row {
458+
Text("Awards", modifier = Modifier.clickable {
459+
awardsExpanded = !awardsExpanded
460+
}, color = MaterialTheme.colorScheme.button)
461+
DropdownMenu(
462+
expanded = awardsExpanded,
463+
onDismissRequest = { awardsExpanded = false }
464+
) {
465+
lookupViewModel.awardCounts.forEach { award ->
466+
DropdownMenuItem(
467+
text = { Text("${award.value}x ${award.key}") },
468+
onClick = { }
469+
)
470+
}
471+
}
472+
Spacer(modifier = Modifier.weight(1.0f))
473+
Text(
474+
if (lookupViewModel.fetched.value) "${lookupViewModel.team.value.awards.size}" else ""
475+
)
476+
}
477+
HorizontalDivider(
478+
thickness = 0.5.dp,
479+
color = MaterialTheme.colorScheme.secondary.copy(alpha = 0.1f),
480+
)
447481
Row {
448482
Text("Qualifications")
449483
Spacer(modifier = Modifier.weight(1.0f))

app/src/main/java/com/sunkensplashstudios/VRCRoboScout/RoboScoutAPI.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,7 @@ class Team : MutableState<Team> {
817817
var id: Int = 0
818818
var events: MutableList<Event> = mutableListOf<Event>()
819819
var eventCount: Int = 0
820+
@kotlinx.serialization.Transient var awards: MutableList<Award> = mutableListOf<Award>()
820821
@SerialName("team_name") var name: String = ""
821822
var number: String = ""
822823
var organization: String = ""
@@ -894,6 +895,16 @@ class Team : MutableState<Team> {
894895
}
895896
}
896897

898+
suspend fun fetchAwards(season: Int? = null) {
899+
val data = RoboScoutAPI.roboteventsRequest("/teams/${this.id}/awards", mapOf("season" to (season ?: 181)))
900+
awards.clear()
901+
for (award in data) {
902+
val fetchedAward: Award = jsonWorker.decodeFromJsonElement(award)
903+
awards.add(fetchedAward)
904+
}
905+
this.awards.sortBy { it.order }
906+
}
907+
897908
suspend fun averageQualifiersRanking(season: Int? = null): Double {
898909
val data = RoboScoutAPI.roboteventsRequest("/teams/${this.id}/rankings/", mapOf("season" to (season ?: 181)))
899910
var total = 0

0 commit comments

Comments
 (0)