Charts: Fix hours in x-axis

This commit is contained in:
José Rebelo
2026-01-16 22:10:19 +00:00
parent 12a3c33f5d
commit 5ce72e011c
@@ -1,32 +1,25 @@
package nodomain.freeyourgadget.gadgetbridge.activities.charts; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.annotation.SuppressLint;
import com.github.mikephil.charting.formatter.ValueFormatter; import com.github.mikephil.charting.formatter.ValueFormatter;
import java.text.SimpleDateFormat; import java.util.Locale;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DurationXLabelFormatter extends ValueFormatter { public class DurationXLabelFormatter extends ValueFormatter {
@SuppressLint("SimpleDateFormat")
private final SimpleDateFormat annotationDateFormatMmSs = new SimpleDateFormat("mm:ss");
@SuppressLint("SimpleDateFormat")
private final SimpleDateFormat annotationDateFormatHhMmSs = new SimpleDateFormat("HH:mm:ss");
private final Calendar cal = GregorianCalendar.getInstance();
public DurationXLabelFormatter() { public DurationXLabelFormatter() {
} }
// TODO: this does not work. Cannot use precomputed labels // TODO: this does not work. Cannot use precomputed labels
@Override @Override
public String getFormattedValue(final float value) { public String getFormattedValue(final float value) {
cal.clear(); final long shortenSeconds = Math.round(value / 1000);
final int ts = (int) value; final long hours = shortenSeconds / 3600;
cal.setTimeInMillis(ts); final long minutes = (shortenSeconds % 3600) / 60;
final Date date = cal.getTime(); final long seconds = shortenSeconds % 60;
return (ts >= 3600000 ? annotationDateFormatHhMmSs : annotationDateFormatMmSs).format(date);
if (hours > 0) {
return String.format(Locale.ROOT, "%02d:%02d:%02d", hours, minutes, seconds);
} else {
return String.format(Locale.ROOT, "%02d:%02d", minutes, seconds);
}
} }
} }