From a4b4ce612349291877de90f7e35bba6e0fef3652 Mon Sep 17 00:00:00 2001 From: Nishant Mishra Date: Thu, 9 Oct 2025 08:39:44 +0530 Subject: [PATCH] fix: show minutes when hour count is 0 on graph vertical axis Closes: #62 --- .../org/nsh07/pomodoro/ui/statsScreen/TimeColumnChart.kt | 9 +++++++-- app/src/main/java/org/nsh07/pomodoro/utils/Utils.kt | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/TimeColumnChart.kt b/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/TimeColumnChart.kt index 3edf72f..497e553 100644 --- a/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/TimeColumnChart.kt +++ b/app/src/main/java/org/nsh07/pomodoro/ui/statsScreen/TimeColumnChart.kt @@ -34,6 +34,7 @@ import com.patrykandpatrick.vico.core.cartesian.layer.ColumnCartesianLayer import com.patrykandpatrick.vico.core.common.Fill import com.patrykandpatrick.vico.core.common.shape.CorneredShape import org.nsh07.pomodoro.utils.millisecondsToHours +import org.nsh07.pomodoro.utils.millisecondsToMinutes @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable @@ -43,8 +44,12 @@ internal fun TimeColumnChart( thickness: Dp = 40.dp, columnCollectionSpacing: Dp = 4.dp, xValueFormatter: CartesianValueFormatter = CartesianValueFormatter.Default, - yValueFormatter: CartesianValueFormatter = CartesianValueFormatter { measuringContext, value, _ -> - millisecondsToHours(value.toLong()) + yValueFormatter: CartesianValueFormatter = CartesianValueFormatter { _, value, _ -> + if (value >= 60 * 60 * 1000) { + millisecondsToHours(value.toLong()) + } else { + millisecondsToMinutes(value.toLong()) + } }, animationSpec: AnimationSpec? = motionScheme.slowEffectsSpec() ) { diff --git a/app/src/main/java/org/nsh07/pomodoro/utils/Utils.kt b/app/src/main/java/org/nsh07/pomodoro/utils/Utils.kt index 6406065..4bbaabf 100644 --- a/app/src/main/java/org/nsh07/pomodoro/utils/Utils.kt +++ b/app/src/main/java/org/nsh07/pomodoro/utils/Utils.kt @@ -30,6 +30,15 @@ fun millisecondsToHours(t: Long): String { ) } +fun millisecondsToMinutes(t: Long): String { + require(t >= 0L) + return String.format( + Locale.getDefault(), + "%dm", + TimeUnit.MILLISECONDS.toMinutes(t) + ) +} + fun millisecondsToHoursMinutes(t: Long): String { require(t >= 0L) return String.format(