From 416b68e96ac09c55382453b28b22202aa4b65864 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Wed, 24 Sep 2025 17:15:53 -0600 Subject: [PATCH] [Android] 1.5.0 --- ...kotlin-compiler-8439154287983817179.salive | 0 android/app/build.gradle.kts | 6 +- .../openclimb/ui/components/BarChart.kt | 208 ++++++ .../openclimb/ui/screens/AnalyticsScreen.kt | 643 +++++++++--------- android/gradle/libs.versions.toml | 20 +- .../UserInterfaceState.xcuserstate | Bin 103703 -> 106217 bytes 6 files changed, 536 insertions(+), 341 deletions(-) create mode 100644 android/.kotlin/sessions/kotlin-compiler-8439154287983817179.salive create mode 100644 android/app/src/main/java/com/atridad/openclimb/ui/components/BarChart.kt diff --git a/android/.kotlin/sessions/kotlin-compiler-8439154287983817179.salive b/android/.kotlin/sessions/kotlin-compiler-8439154287983817179.salive new file mode 100644 index 0000000..e69de29 diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 786c604..be6b465 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.atridad.openclimb" minSdk = 31 targetSdk = 36 - versionCode = 23 - versionName = "1.4.2" + versionCode = 24 + versionName = "1.5.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -55,6 +55,7 @@ dependencies { implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) + implementation(libs.androidx.material.icons.extended) // Room Database implementation(libs.androidx.room.runtime) @@ -92,4 +93,3 @@ dependencies { debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) } - diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/components/BarChart.kt b/android/app/src/main/java/com/atridad/openclimb/ui/components/BarChart.kt new file mode 100644 index 0000000..01b2732 --- /dev/null +++ b/android/app/src/main/java/com/atridad/openclimb/ui/components/BarChart.kt @@ -0,0 +1,208 @@ +package com.atridad.openclimb.ui.components + +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.* +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.TextMeasurer +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.drawText +import androidx.compose.ui.text.rememberTextMeasurer +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +/** Data point for the bar chart */ +data class BarChartDataPoint(val label: String, val value: Int, val gradeNumeric: Int) + +/** Configuration for bar chart styling */ +data class BarChartStyle( + val barColor: Color, + val gridColor: Color, + val textColor: Color, + val backgroundColor: Color +) + +/** Custom Bar Chart for displaying grade distribution */ +@Composable +fun BarChart( + data: List, + modifier: Modifier = Modifier, + style: BarChartStyle = + BarChartStyle( + barColor = MaterialTheme.colorScheme.primary, + gridColor = MaterialTheme.colorScheme.outline.copy(alpha = 0.3f), + textColor = MaterialTheme.colorScheme.onSurfaceVariant, + backgroundColor = MaterialTheme.colorScheme.surface + ), + showGrid: Boolean = true +) { + val textMeasurer = rememberTextMeasurer() + val density = LocalDensity.current + + Box(modifier = modifier) { + Canvas(modifier = Modifier.fillMaxSize().padding(16.dp)) { + if (data.isEmpty()) return@Canvas + + val padding = with(density) { 32.dp.toPx() } + val chartWidth = size.width - padding * 2 + val chartHeight = size.height - padding * 2 + + // Sort data by grade numeric value for proper ordering + val sortedData = data.sortedBy { it.gradeNumeric } + + // Calculate max value for scaling + val maxValue = sortedData.maxOfOrNull { it.value } ?: 1 + + // Calculate bar dimensions + val barCount = sortedData.size + val totalSpacing = chartWidth * 0.2f // 20% of width for spacing + val barSpacing = if (barCount > 1) totalSpacing / (barCount + 1) else totalSpacing / 2 + val barWidth = (chartWidth - totalSpacing) / barCount + + // Draw background + drawRect( + color = style.backgroundColor, + topLeft = Offset(padding, padding), + size = androidx.compose.ui.geometry.Size(chartWidth, chartHeight) + ) + + // Draw grid + if (showGrid) { + drawGrid( + padding = padding, + chartWidth = chartWidth, + chartHeight = chartHeight, + gridColor = style.gridColor, + maxValue = maxValue, + textMeasurer = textMeasurer, + textColor = style.textColor + ) + } + + // Draw bars and labels + sortedData.forEachIndexed { index, dataPoint -> + val barHeight = + if (maxValue > 0) { + (dataPoint.value.toFloat() / maxValue.toFloat()) * chartHeight * 0.8f + } else 0f + + val barX = + padding + + barSpacing + + index * (barWidth + barSpacing / (barCount - 1).coerceAtLeast(1)) + val barY = padding + chartHeight - barHeight + + // Draw bar + drawRect( + color = style.barColor, + topLeft = Offset(barX, barY), + size = androidx.compose.ui.geometry.Size(barWidth, barHeight) + ) + + // Draw value on top of bar (if there's space) + if (dataPoint.value > 0) { + val valueText = dataPoint.value.toString() + val textStyle = TextStyle(color = style.textColor, fontSize = 10.sp) + val textSize = textMeasurer.measure(valueText, textStyle) + + // Position text on top of bar or inside if bar is tall enough + val textY = + if (barHeight > textSize.size.height + 8.dp.toPx()) { + barY + 8.dp.toPx() // Inside bar + } else { + barY - 4.dp.toPx() // Above bar + } + + val textColor = + if (barHeight > textSize.size.height + 8.dp.toPx()) { + Color.White // White text inside bar + } else { + style.textColor // Regular color above bar + } + + drawText( + textMeasurer = textMeasurer, + text = valueText, + style = textStyle.copy(color = textColor), + topLeft = Offset(barX + barWidth / 2f - textSize.size.width / 2f, textY) + ) + } + + // Draw grade label below bar + val gradeText = dataPoint.label + val labelTextStyle = TextStyle(color = style.textColor, fontSize = 10.sp) + val labelTextSize = textMeasurer.measure(gradeText, labelTextStyle) + + drawText( + textMeasurer = textMeasurer, + text = gradeText, + style = labelTextStyle, + topLeft = + Offset( + barX + barWidth / 2f - labelTextSize.size.width / 2f, + padding + chartHeight + 8.dp.toPx() + ) + ) + } + } + } +} + +private fun DrawScope.drawGrid( + padding: Float, + chartWidth: Float, + chartHeight: Float, + gridColor: Color, + maxValue: Int, + textMeasurer: TextMeasurer, + textColor: Color +) { + val textStyle = TextStyle(color = textColor, fontSize = 10.sp) + + // Draw horizontal grid lines (Y-axis) + val gridLines = + when { + maxValue <= 5 -> (0..maxValue).toList() + maxValue <= 10 -> (0..maxValue step 2).toList() + maxValue <= 20 -> (0..maxValue step 5).toList() + else -> { + val step = (maxValue / 5).coerceAtLeast(1) + (0..maxValue step step).toList() + } + } + + gridLines.forEach { value -> + val y = padding + chartHeight - (value.toFloat() / maxValue.toFloat()) * chartHeight * 0.8f + + // Draw grid line + drawLine( + color = gridColor, + start = Offset(padding, y), + end = Offset(padding + chartWidth, y), + strokeWidth = 1.dp.toPx() + ) + + // Draw Y-axis label + if (value >= 0) { + val text = value.toString() + val textSize = textMeasurer.measure(text, textStyle) + drawText( + textMeasurer = textMeasurer, + text = text, + style = textStyle, + topLeft = + Offset( + padding - textSize.size.width - 8.dp.toPx(), + y - textSize.size.height / 2f + ) + ) + } + } +} diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/screens/AnalyticsScreen.kt b/android/app/src/main/java/com/atridad/openclimb/ui/screens/AnalyticsScreen.kt index 3349fe2..33acbed 100644 --- a/android/app/src/main/java/com/atridad/openclimb/ui/screens/AnalyticsScreen.kt +++ b/android/app/src/main/java/com/atridad/openclimb/ui/screens/AnalyticsScreen.kt @@ -10,78 +10,76 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.atridad.openclimb.R -import com.atridad.openclimb.ui.viewmodel.ClimbViewModel +import com.atridad.openclimb.data.model.AttemptResult import com.atridad.openclimb.data.model.ClimbType import com.atridad.openclimb.data.model.DifficultySystem -import com.atridad.openclimb.ui.components.ChartDataPoint -import com.atridad.openclimb.ui.components.LineChart +import com.atridad.openclimb.ui.components.BarChart +import com.atridad.openclimb.ui.components.BarChartDataPoint +import com.atridad.openclimb.ui.viewmodel.ClimbViewModel +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter @Composable -fun AnalyticsScreen( - viewModel: ClimbViewModel -) { +fun AnalyticsScreen(viewModel: ClimbViewModel) { val sessions by viewModel.sessions.collectAsState() val problems by viewModel.problems.collectAsState() val attempts by viewModel.attempts.collectAsState() val gyms by viewModel.gyms.collectAsState() - + LazyColumn( - modifier = Modifier - .fillMaxSize() - .padding(16.dp), - verticalArrangement = Arrangement.spacedBy(16.dp) + modifier = Modifier.fillMaxSize().padding(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) ) { item { Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(12.dp) + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(12.dp) ) { Icon( - painter = painterResource(id = R.drawable.ic_mountains), - contentDescription = "OpenClimb Logo", - modifier = Modifier.size(32.dp), - tint = MaterialTheme.colorScheme.primary + painter = painterResource(id = R.drawable.ic_mountains), + contentDescription = "OpenClimb Logo", + modifier = Modifier.size(32.dp), + tint = MaterialTheme.colorScheme.primary ) Text( - text = "Analytics", - style = MaterialTheme.typography.headlineMedium, - fontWeight = FontWeight.Bold + text = "Analytics", + style = MaterialTheme.typography.headlineMedium, + fontWeight = FontWeight.Bold ) } } - + // Overall Stats item { OverallStatsCard( - totalSessions = sessions.size, - totalProblems = problems.size, - totalAttempts = attempts.size, - totalGyms = gyms.size + totalSessions = sessions.size, + totalProblems = problems.size, + totalAttempts = attempts.size, + totalGyms = gyms.size ) } - - // Progress Chart + + // Grade Distribution Chart item { - val progressData = calculateProgressOverTime(sessions, problems, attempts) - ProgressChartCard(progressData = progressData, problems = problems) + val gradeDistributionData = calculateGradeDistribution(sessions, problems, attempts) + GradeDistributionChartCard(gradeDistributionData = gradeDistributionData) } - + // Favorite Gym item { - val favoriteGym = sessions - .groupBy { it.gymId } - .maxByOrNull { it.value.size } - ?.let { (gymId, sessions) -> - gyms.find { it.id == gymId }?.name to sessions.size - } - + val favoriteGym = + sessions.groupBy { it.gymId }.maxByOrNull { it.value.size }?.let { + (gymId, sessions) -> + gyms.find { it.id == gymId }?.name to sessions.size + } + FavoriteGymCard( - gymName = favoriteGym?.first ?: "No sessions yet", - sessionCount = favoriteGym?.second ?: 0 + gymName = favoriteGym?.first ?: "No sessions yet", + sessionCount = favoriteGym?.second ?: 0 ) } - + // Recent Activity item { val recentSessions = sessions.take(5) @@ -91,31 +89,20 @@ fun AnalyticsScreen( } @Composable -fun OverallStatsCard( - totalSessions: Int, - totalProblems: Int, - totalAttempts: Int, - totalGyms: Int -) { - Card( - modifier = Modifier.fillMaxWidth() - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(16.dp) - ) { +fun OverallStatsCard(totalSessions: Int, totalProblems: Int, totalAttempts: Int, totalGyms: Int) { + Card(modifier = Modifier.fillMaxWidth()) { + Column(modifier = Modifier.fillMaxWidth().padding(16.dp)) { Text( - text = "Overall Stats", - style = MaterialTheme.typography.titleMedium, - fontWeight = FontWeight.Bold + text = "Overall Stats", + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Bold ) - + Spacer(modifier = Modifier.height(12.dp)) - + Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceEvenly + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly ) { StatItem(label = "Sessions", value = totalSessions.toString()) StatItem(label = "Problems", value = totalProblems.toString()) @@ -128,178 +115,241 @@ fun OverallStatsCard( @OptIn(ExperimentalMaterial3Api::class) @Composable -fun ProgressChartCard( - progressData: List, - problems: List, -) { - // Find all grading systems that have been used in the progress data - val usedSystems = remember(progressData) { - progressData.map { it.difficultySystem }.distinct() - } - - var selectedSystem by remember(usedSystems) { - mutableStateOf(usedSystems.firstOrNull() ?: DifficultySystem.V_SCALE) - } +fun GradeDistributionChartCard(gradeDistributionData: List) { + // Find all grading systems that have been used in the data + val usedSystems = + remember(gradeDistributionData) { + gradeDistributionData.map { it.difficultySystem }.distinct() + } + + var selectedSystem by + remember(usedSystems) { + mutableStateOf(usedSystems.firstOrNull() ?: DifficultySystem.V_SCALE) + } var expanded by remember { mutableStateOf(false) } - - Card( - modifier = Modifier.fillMaxWidth() - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(16.dp) - ) { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = "Progress Over Time", + var showAllTime by remember { mutableStateOf(true) } + + Card(modifier = Modifier.fillMaxWidth()) { + Column(modifier = Modifier.fillMaxWidth().padding(16.dp)) { + Text( + text = "Grade Distribution", style = MaterialTheme.typography.titleMedium, - fontWeight = FontWeight.Bold, - modifier = Modifier.weight(1f) - ) - + fontWeight = FontWeight.Bold + ) + + Spacer(modifier = Modifier.height(12.dp)) + + // Toggles section + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + // Time period toggle + Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { + // All Time button + FilterChip( + onClick = { showAllTime = true }, + label = { + Text("All Time", style = MaterialTheme.typography.bodySmall) + }, + selected = showAllTime, + colors = + FilterChipDefaults.filterChipColors( + selectedContainerColor = + MaterialTheme.colorScheme.primary, + selectedLabelColor = MaterialTheme.colorScheme.onPrimary + ) + ) + + // 7 Days button + FilterChip( + onClick = { showAllTime = false }, + label = { Text("7 Days", style = MaterialTheme.typography.bodySmall) }, + selected = !showAllTime, + colors = + FilterChipDefaults.filterChipColors( + selectedContainerColor = + MaterialTheme.colorScheme.primary, + selectedLabelColor = MaterialTheme.colorScheme.onPrimary + ) + ) + } + // Scale selector dropdown if (usedSystems.size > 1) { ExposedDropdownMenuBox( - expanded = expanded, - onExpandedChange = { expanded = !expanded } + expanded = expanded, + onExpandedChange = { expanded = !expanded } ) { OutlinedTextField( - value = when (selectedSystem) { - DifficultySystem.V_SCALE -> "V-Scale" - DifficultySystem.FONT -> "Font" - DifficultySystem.YDS -> "YDS" - DifficultySystem.CUSTOM -> "Custom" - }, - onValueChange = {}, - readOnly = true, - trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) }, - modifier = Modifier - .menuAnchor(type = MenuAnchorType.PrimaryNotEditable, enabled = true) - .width(120.dp), - textStyle = MaterialTheme.typography.bodyMedium - ) - ExposedDropdownMenu( - expanded = expanded, - onDismissRequest = { expanded = false } - ) { - usedSystems.forEach { system -> - DropdownMenuItem( - text = { - Text(when (system) { + value = + when (selectedSystem) { DifficultySystem.V_SCALE -> "V-Scale" DifficultySystem.FONT -> "Font" DifficultySystem.YDS -> "YDS" DifficultySystem.CUSTOM -> "Custom" - }) - }, - onClick = { - selectedSystem = system - expanded = false - } + }, + onValueChange = {}, + readOnly = true, + trailingIcon = { + ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) + }, + modifier = + Modifier.menuAnchor( + type = MenuAnchorType.PrimaryNotEditable, + enabled = true + ) + .width(120.dp), + textStyle = MaterialTheme.typography.bodyMedium + ) + ExposedDropdownMenu( + expanded = expanded, + onDismissRequest = { expanded = false } + ) { + usedSystems.forEach { system -> + DropdownMenuItem( + text = { + Text( + when (system) { + DifficultySystem.V_SCALE -> "V-Scale" + DifficultySystem.FONT -> "Font" + DifficultySystem.YDS -> "YDS" + DifficultySystem.CUSTOM -> "Custom" + } + ) + }, + onClick = { + selectedSystem = system + expanded = false + } ) } } } } } - + Spacer(modifier = Modifier.height(12.dp)) - - // Filter progress data by selected scale - val filteredProgressData = remember(progressData, selectedSystem) { - progressData.filter { it.difficultySystem == selectedSystem } - } - - if (filteredProgressData.isNotEmpty()) { - val chartData = remember(filteredProgressData) { - // Convert progress data to chart data points ordered by session - filteredProgressData - .sortedBy { it.date } - .mapIndexed { index, p -> - ChartDataPoint( - x = (index + 1).toFloat(), - y = p.maxGradeNumeric.toFloat(), - label = "Session ${index + 1}" - ) + + // Filter grade distribution data by selected scale and time period + val filteredGradeData = + remember(gradeDistributionData, selectedSystem, showAllTime) { + val systemFiltered = + gradeDistributionData.filter { + it.difficultySystem == selectedSystem + } + + if (showAllTime) { + systemFiltered + } else { + // Filter for last 7 days + val sevenDaysAgo = LocalDateTime.now().minusDays(7) + systemFiltered.filter { dataPoint -> + try { + val attemptDate = + LocalDateTime.parse( + dataPoint.date, + DateTimeFormatter.ISO_LOCAL_DATE_TIME + ) + attemptDate.isAfter(sevenDaysAgo) + } catch (e: Exception) { + // If date parsing fails, include the data point + true + } + } } - } - - LineChart( - data = chartData, - modifier = Modifier.fillMaxWidth().height(220.dp), - xAxisFormatter = { value -> - "S${value.toInt()}" // S1, S2, S3, etc. - }, - yAxisFormatter = { value -> - numericToGrade(selectedSystem, value.toInt()) } - ) - + + if (filteredGradeData.isNotEmpty()) { + // Group by grade and sum counts + val gradeGroups = + filteredGradeData + .groupBy { it.grade } + .mapValues { (_, dataPoints) -> dataPoints.sumOf { it.count } } + .map { (grade, count) -> + val firstDataPoint = + filteredGradeData.first { it.grade == grade } + BarChartDataPoint( + label = grade, + value = count, + gradeNumeric = firstDataPoint.gradeNumeric + ) + } + + BarChart(data = gradeGroups, modifier = Modifier.fillMaxWidth().height(220.dp)) + Spacer(modifier = Modifier.height(8.dp)) - + Text( - text = "X: session number, Y: max ${when(selectedSystem) { + text = + "Successful climbs by ${when(selectedSystem) { DifficultySystem.V_SCALE -> "V-grade" - DifficultySystem.FONT -> "Font grade" + DifficultySystem.FONT -> "Font grade" DifficultySystem.YDS -> "YDS grade" DifficultySystem.CUSTOM -> "custom grade" - }} achieved", - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant + }}", + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant ) } else { - Text( - text = "No progress data available for ${when(selectedSystem) { - DifficultySystem.V_SCALE -> "V-Scale" - DifficultySystem.FONT -> "Font" - DifficultySystem.YDS -> "YDS" - DifficultySystem.CUSTOM -> "Custom" - }} system", - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant - ) + Column( + modifier = Modifier.fillMaxWidth().height(220.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Icon( + painter = painterResource(id = R.drawable.ic_mountains), + contentDescription = "No data", + modifier = Modifier.size(48.dp), + tint = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + ) + + Spacer(modifier = Modifier.height(8.dp)) + + Text( + text = "No data available.", + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + + Text( + text = + if (showAllTime) + "Complete some climbs to see your grade distribution!" + else "No climbs in the last 7 days", + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.7f) + ) + } } } } } @Composable -fun FavoriteGymCard( - gymName: String, - sessionCount: Int -) { - Card( - modifier = Modifier.fillMaxWidth() - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(16.dp) - ) { +fun FavoriteGymCard(gymName: String, sessionCount: Int) { + Card(modifier = Modifier.fillMaxWidth()) { + Column(modifier = Modifier.fillMaxWidth().padding(16.dp)) { Text( - text = "Favorite Gym", - style = MaterialTheme.typography.titleMedium, - fontWeight = FontWeight.Bold + text = "Favorite Gym", + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Bold ) - + Spacer(modifier = Modifier.height(8.dp)) - + Text( - text = gymName, - style = MaterialTheme.typography.titleLarge, - fontWeight = FontWeight.Medium + text = gymName, + style = MaterialTheme.typography.titleLarge, + fontWeight = FontWeight.Medium ) - + if (sessionCount > 0) { Text( - text = "$sessionCount sessions", - style = MaterialTheme.typography.bodyMedium, - color = MaterialTheme.colorScheme.onSurfaceVariant + text = "$sessionCount sessions", + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant ) } } @@ -307,74 +357,92 @@ fun FavoriteGymCard( } @Composable -fun RecentActivityCard( - recentSessions: Int -) { - Card( - modifier = Modifier.fillMaxWidth() - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(16.dp) - ) { +fun RecentActivityCard(recentSessions: Int) { + Card(modifier = Modifier.fillMaxWidth()) { + Column(modifier = Modifier.fillMaxWidth().padding(16.dp)) { Text( - text = "Recent Activity", - style = MaterialTheme.typography.titleMedium, - fontWeight = FontWeight.Bold + text = "Recent Activity", + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Bold ) - + Spacer(modifier = Modifier.height(8.dp)) - + Text( - text = if (recentSessions > 0) { - "You've had $recentSessions recent sessions" - } else { - "No recent activity" - }, - style = MaterialTheme.typography.bodyMedium + text = + if (recentSessions > 0) { + "You've had $recentSessions recent sessions" + } else { + "No recent activity" + }, + style = MaterialTheme.typography.bodyMedium ) } } } -data class ProgressDataPoint( - val date: String, - val maxGrade: String, - val maxGradeNumeric: Int, - val climbType: ClimbType, - val difficultySystem: DifficultySystem +data class GradeDistributionDataPoint( + val date: String, + val grade: String, + val gradeNumeric: Int, + val count: Int, + val climbType: ClimbType, + val difficultySystem: DifficultySystem ) -fun calculateProgressOverTime( - sessions: List, - problems: List, - attempts: List -): List { +fun calculateGradeDistribution( + sessions: List, + problems: List, + attempts: List +): List { if (sessions.isEmpty() || problems.isEmpty() || attempts.isEmpty()) { return emptyList() } - - val sessionProgress = sessions.mapNotNull { session -> - val sessionAttempts = attempts.filter { it.sessionId == session.id } - if (sessionAttempts.isEmpty()) return@mapNotNull null - val attemptedProblemIds = sessionAttempts.map { it.problemId }.distinct() - val attemptedProblems = problems.filter { it.id in attemptedProblemIds } - if (attemptedProblems.isEmpty()) return@mapNotNull null - val highestGradeProblem = attemptedProblems.maxByOrNull { problem -> - gradeToNumeric(problem.difficulty.system, problem.difficulty.grade) - } - if (highestGradeProblem != null) { - ProgressDataPoint( - date = session.date, - maxGrade = highestGradeProblem.difficulty.grade, - maxGradeNumeric = gradeToNumeric(highestGradeProblem.difficulty.system, highestGradeProblem.difficulty.grade), - climbType = highestGradeProblem.climbType, - difficultySystem = highestGradeProblem.difficulty.system - ) - } else null + + // Get all successful attempts + val successfulAttempts = + attempts.filter { + it.result == AttemptResult.SUCCESS || it.result == AttemptResult.FLASH + } + + if (successfulAttempts.isEmpty()) { + return emptyList() } - return sessionProgress.sortedBy { it.date } + + // Map attempts to problems and create grade distribution data + val gradeDistribution = mutableMapOf() + + successfulAttempts.forEach { attempt -> + val problem = problems.find { it.id == attempt.problemId } + val session = sessions.find { it.id == attempt.sessionId } + + if (problem != null && session != null) { + val key = "${problem.difficulty.system.name}-${problem.difficulty.grade}" + + val existing = gradeDistribution[key] + if (existing != null) { + gradeDistribution[key] = existing.copy(count = existing.count + 1) + } else { + gradeDistribution[key] = + GradeDistributionDataPoint( + date = + attempt.timestamp + .toString(), // Use attempt timestamp for filtering + grade = problem.difficulty.grade, + gradeNumeric = + gradeToNumeric( + problem.difficulty.system, + problem.difficulty.grade + ), + count = 1, + climbType = problem.climbType, + difficultySystem = problem.difficulty.system + ) + } + } + } + + return gradeDistribution.values.toList() } fun gradeToNumeric(system: DifficultySystem, grade: String): Int { @@ -460,84 +528,3 @@ fun gradeToNumeric(system: DifficultySystem, grade: String): Int { } } } - -fun numericToGrade(system: DifficultySystem, numeric: Int): String { - return when (system) { - DifficultySystem.V_SCALE -> { - when (numeric) { - 0 -> "VB" - else -> "V$numeric" - } - } - DifficultySystem.FONT -> { - when (numeric) { - 3 -> "3" - 4 -> "4A" - 5 -> "4B" - 6 -> "4C" - 7 -> "5A" - 8 -> "5B" - 9 -> "5C" - 10 -> "6A" - 11 -> "6A+" - 12 -> "6B" - 13 -> "6B+" - 14 -> "6C" - 15 -> "6C+" - 16 -> "7A" - 17 -> "7A+" - 18 -> "7B" - 19 -> "7B+" - 20 -> "7C" - 21 -> "7C+" - 22 -> "8A" - 23 -> "8A+" - 24 -> "8B" - 25 -> "8B+" - 26 -> "8C" - 27 -> "8C+" - else -> numeric.toString() - } - } - DifficultySystem.YDS -> { - when (numeric) { - 50 -> "5.0" - 51 -> "5.1" - 52 -> "5.2" - 53 -> "5.3" - 54 -> "5.4" - 55 -> "5.5" - 56 -> "5.6" - 57 -> "5.7" - 58 -> "5.8" - 59 -> "5.9" - 60 -> "5.10a" - 61 -> "5.10b" - 62 -> "5.10c" - 63 -> "5.10d" - 64 -> "5.11a" - 65 -> "5.11b" - 66 -> "5.11c" - 67 -> "5.11d" - 68 -> "5.12a" - 69 -> "5.12b" - 70 -> "5.12c" - 71 -> "5.12d" - 72 -> "5.13a" - 73 -> "5.13b" - 74 -> "5.13c" - 75 -> "5.13d" - 76 -> "5.14a" - 77 -> "5.14b" - 78 -> "5.14c" - 79 -> "5.14d" - 80 -> "5.15a" - 81 -> "5.15b" - 82 -> "5.15c" - 83 -> "5.15d" - else -> numeric.toString() - } - } - DifficultySystem.CUSTOM -> numeric.toString() - } -} diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index d4d919a..38d2547 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] -agp = "8.12.2" -kotlin = "2.2.10" +agp = "8.12.3" +kotlin = "2.2.20" coreKtx = "1.17.0" junit = "4.13.2" junitVersion = "1.3.0" @@ -9,12 +9,12 @@ androidxTestCore = "1.7.0" androidxTestExt = "1.3.0" androidxTestRunner = "1.7.0" androidxTestRules = "1.7.0" -lifecycleRuntimeKtx = "2.9.3" -activityCompose = "1.10.1" -composeBom = "2025.08.01" -room = "2.7.2" -navigation = "2.9.3" -viewmodel = "2.9.3" +lifecycleRuntimeKtx = "2.9.4" +activityCompose = "1.11.0" +composeBom = "2025.09.01" +room = "2.8.1" +navigation = "2.9.5" +viewmodel = "2.9.4" kotlinxSerialization = "1.9.0" kotlinxCoroutines = "1.10.2" coil = "2.7.0" @@ -39,6 +39,7 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" } # Room Database androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } @@ -59,7 +60,7 @@ kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx- kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } # Testing -mockk = { group = "io.mockk", name = "mockk", version = "1.13.8" } +mockk = { group = "io.mockk", name = "mockk", version = "1.14.5" } # Image Loading coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coil" } @@ -72,4 +73,3 @@ kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } - diff --git a/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 3fcb8e5a766e4aba1faf3dc1df940450367b6009..e8446e6e803ce8c40458dd3da56f38c7945e807b 100644 GIT binary patch literal 106217 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%0AFx1NIlyY<9wJx9Y> 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 rJwFmp2IqrNr&h?j({@)9e2SMogrP literal 103703 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