mirror of
https://github.com/dyuri/garmin-repafield.git
synced 2025-12-16 19:24:01 +00:00
imperial unit support
This commit is contained in:
parent
1a16f7d64f
commit
6f73f37eaa
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,3 +4,5 @@
|
|||||||
/internal-mir
|
/internal-mir
|
||||||
RepaField.prg
|
RepaField.prg
|
||||||
RepaField.prg.debug.xml
|
RepaField.prg.debug.xml
|
||||||
|
RepaField-settings.json
|
||||||
|
|
||||||
|
|||||||
6
TODO.md
6
TODO.md
@ -1,6 +1,8 @@
|
|||||||
- settings
|
- settings
|
||||||
- pace/speed based on sport
|
- pace/speed switch
|
||||||
- imperial unit support
|
|
||||||
|
- cadence => vertical speed (might be a setting?)
|
||||||
|
- also might save vertical speed to fit
|
||||||
|
|
||||||
- track color => color coded by elevation gain/loss (or even vertical speed ?)
|
- track color => color coded by elevation gain/loss (or even vertical speed ?)
|
||||||
- https://github.com/loukad/vertlover
|
- https://github.com/loukad/vertlover
|
||||||
|
|||||||
@ -17,6 +17,10 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
hidden var hrZoneColors as Array<Numeric>;
|
hidden var hrZoneColors as Array<Numeric>;
|
||||||
hidden var cadenceZones as Array<Numeric>;
|
hidden var cadenceZones as Array<Numeric>;
|
||||||
hidden var cadenceZoneColors as Array<Numeric>;
|
hidden var cadenceZoneColors as Array<Numeric>;
|
||||||
|
hidden var isDistanceMetric as Boolean;
|
||||||
|
hidden var isElevationMetric as Boolean;
|
||||||
|
hidden var mileToKm as Float = 1.609344f;
|
||||||
|
hidden var meterToFeet as Float = 3.28084f;
|
||||||
|
|
||||||
// fields
|
// fields
|
||||||
hidden var fBgOverlay;
|
hidden var fBgOverlay;
|
||||||
@ -48,6 +52,8 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
hidden var offCourse as Float;
|
hidden var offCourse as Float;
|
||||||
hidden var speed as Float;
|
hidden var speed as Float;
|
||||||
hidden var aspeed as Float;
|
hidden var aspeed as Float;
|
||||||
|
hidden var pace as Float;
|
||||||
|
hidden var apace as Float;
|
||||||
hidden var altitude as Float;
|
hidden var altitude as Float;
|
||||||
hidden var egain as Number;
|
hidden var egain as Number;
|
||||||
hidden var edrop as Number;
|
hidden var edrop as Number;
|
||||||
@ -76,10 +82,16 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
offCourse = 0.0f;
|
offCourse = 0.0f;
|
||||||
speed = 0.0f;
|
speed = 0.0f;
|
||||||
aspeed = 0.0f;
|
aspeed = 0.0f;
|
||||||
|
pace = 0.0f;
|
||||||
|
apace = 0.0f;
|
||||||
altitude = 0.0f;
|
altitude = 0.0f;
|
||||||
egain = 0;
|
egain = 0;
|
||||||
edrop = 0;
|
edrop = 0;
|
||||||
cadence = 0;
|
cadence = 0;
|
||||||
|
|
||||||
|
var settings = System.getDeviceSettings();
|
||||||
|
isDistanceMetric = settings.distanceUnits == System.UNIT_METRIC;
|
||||||
|
isElevationMetric = settings.elevationUnits == System.UNIT_METRIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
function tickHr(v as Number) {
|
function tickHr(v as Number) {
|
||||||
@ -162,6 +174,12 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
fElevationGain.setColor(themeColor2);
|
fElevationGain.setColor(themeColor2);
|
||||||
fElevationLoss.setColor(themeColor2);
|
fElevationLoss.setColor(themeColor2);
|
||||||
fTime.setColor(themeColor3);
|
fTime.setColor(themeColor3);
|
||||||
|
|
||||||
|
// units
|
||||||
|
if (!isDistanceMetric) {
|
||||||
|
var fdl = View.findDrawableById("distanceLabel") as Text;
|
||||||
|
fdl.setText("mi");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function compute(info as Activity.Info) as Void {
|
function compute(info as Activity.Info) as Void {
|
||||||
@ -208,13 +226,25 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
}
|
}
|
||||||
if (info.currentSpeed != null) {
|
if (info.currentSpeed != null) {
|
||||||
speed = info.currentSpeed as Float;
|
speed = info.currentSpeed as Float;
|
||||||
|
if (speed == 0) {
|
||||||
|
pace = 0.0f;
|
||||||
|
} else {
|
||||||
|
pace = 1000 / 60 / speed;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
speed = 0.0f;
|
speed = 0.0f;
|
||||||
|
pace = 0.0f;
|
||||||
}
|
}
|
||||||
if (info.averageSpeed != null) {
|
if (info.averageSpeed != null) {
|
||||||
aspeed = info.averageSpeed as Float;
|
aspeed = info.averageSpeed as Float;
|
||||||
|
if (aspeed == 0) {
|
||||||
|
apace = 0.0f;
|
||||||
|
} else {
|
||||||
|
apace = 1000 / 60 / aspeed;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
aspeed = 0.0f;
|
aspeed = 0.0f;
|
||||||
|
apace = 0.0f;
|
||||||
}
|
}
|
||||||
if (info.altitude != null) {
|
if (info.altitude != null) {
|
||||||
altitude = info.altitude as Float;
|
altitude = info.altitude as Float;
|
||||||
@ -236,6 +266,19 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
} else {
|
} else {
|
||||||
cadence = 0;
|
cadence = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// convert units to imperial if needed
|
||||||
|
if (!isDistanceMetric) {
|
||||||
|
distance = distance / mileToKm;
|
||||||
|
toDestination = toDestination / mileToKm;
|
||||||
|
pace = pace * mileToKm;
|
||||||
|
apace = apace * mileToKm;
|
||||||
|
}
|
||||||
|
if (!isElevationMetric) {
|
||||||
|
altitude = altitude * meterToFeet;
|
||||||
|
egain = (egain * meterToFeet).toNumber();
|
||||||
|
edrop = (edrop * meterToFeet).toNumber();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display the value you computed here. This will be called
|
// Display the value you computed here. This will be called
|
||||||
@ -303,7 +346,6 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
// pace
|
// pace
|
||||||
if (fPace != null) {
|
if (fPace != null) {
|
||||||
if (speed != 0) {
|
if (speed != 0) {
|
||||||
var pace = 1000 / 60 / speed; // mps -> min/km
|
|
||||||
var pmin = pace.toNumber();
|
var pmin = pace.toNumber();
|
||||||
var psec = (pace - pmin) * 60;
|
var psec = (pace - pmin) * 60;
|
||||||
fPace.setText(pmin.format("%2d") + ":" + psec.format("%02d"));
|
fPace.setText(pmin.format("%2d") + ":" + psec.format("%02d"));
|
||||||
@ -313,7 +355,6 @@ class RepaFieldView extends WatchUi.DataField {
|
|||||||
}
|
}
|
||||||
if (fAPace != null) {
|
if (fAPace != null) {
|
||||||
if (aspeed != 0) {
|
if (aspeed != 0) {
|
||||||
var apace = 1000 / 60 / aspeed; // mps -> min/km
|
|
||||||
var apmin = apace.toNumber();
|
var apmin = apace.toNumber();
|
||||||
var apsec = (apace - apmin) * 60;
|
var apsec = (apace - apmin) * 60;
|
||||||
fAPace.setText(apmin.format("%2d") + ":" + apsec.format("%02d"));
|
fAPace.setText(apmin.format("%2d") + ":" + apsec.format("%02d"));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user