Files
OpenTracks/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java
T
2025-11-17 22:22:44 +01:00

51 lines
1.8 KiB
Java

package de.dennisguse.opentracks.chart;
import androidx.annotation.NonNull;
import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.settings.UnitSystem;
public record ChartPoint(
//X-axis
double timeOrDistance,
//Y-axis
Double altitude,
Double speed,
Double pace,
Double heartRate,
Double cadence,
Double power
) {
public static ChartPoint create(@NonNull Statistics trackStatistics, @NonNull TrackPoint trackPoint, Speed smoothedSpeed, boolean chartByDistance, UnitSystem unitSystem) {
return new ChartPoint(
chartByDistance
? trackStatistics.totalDistance().toKM_Miles(unitSystem)
: trackStatistics.totalDuration().toMillis(),
trackPoint.hasAltitude()
? Distance.of(trackPoint.getAltitude().toM()).toM_FT(unitSystem)
: null,
smoothedSpeed != null
? smoothedSpeed.to(unitSystem)
: null,
smoothedSpeed != null
? smoothedSpeed.toPace(unitSystem).toSeconds() / 60d
: null,
trackPoint.hasHeartRate()
? (double) trackPoint.getHeartRate().getBPM()
: null,
trackPoint.hasCadence()
? (double) trackPoint.getCadence().getRPM()
: null,
trackPoint.hasPower()
? (double) trackPoint.getPower().getW()
: null
);
}
}