From 99f7ee12524a9437ed6bab29b5088d3649c38e44 Mon Sep 17 00:00:00 2001 From: dtrentin Date: Thu, 21 May 2026 09:02:52 +0200 Subject: [PATCH] fix(axis): show negative X values instead of clamping to 0s formatTimeSec coerceAtLeast(0L) caused all pre-T0 ticks to display "0s". Now shows -5s, -1:30, -1:02:30 for negative elapsed time. Co-Authored-By: Claude Sonnet 4.6 --- .../kotlin/dev/dtrentin/chart/render/AxisRenderer.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/chart-realtime/src/commonMain/kotlin/dev/dtrentin/chart/render/AxisRenderer.kt b/chart-realtime/src/commonMain/kotlin/dev/dtrentin/chart/render/AxisRenderer.kt index 383e909..a929ac2 100644 --- a/chart-realtime/src/commonMain/kotlin/dev/dtrentin/chart/render/AxisRenderer.kt +++ b/chart-realtime/src/commonMain/kotlin/dev/dtrentin/chart/render/AxisRenderer.kt @@ -152,12 +152,14 @@ internal object AxisRenderer { } private fun formatTimeSec(totalSec: Double): String { - val s = totalSec.toLong().coerceAtLeast(0L) - return when { + val negative = totalSec < 0 + val s = kotlin.math.abs(totalSec.toLong()) + val formatted = when { s < 60L -> "${s}s" s < 3600L -> "${s / 60}:${(s % 60).toString().padStart(2, '0')}" else -> "${s / 3600}:${((s % 3600) / 60).toString().padStart(2, '0')}:${(s % 60).toString().padStart(2, '0')}" } + return if (negative) "-$formatted" else formatted } private fun formatAxisValue(value: Double, decimals: Int): String {