From 35524dd9baf9c7d79db48368e14d35a0214a4e23 Mon Sep 17 00:00:00 2001 From: Gyuri Horak Date: Sat, 21 Oct 2023 10:39:01 +0200 Subject: [PATCH] #2 pace/speed switch --- README.md | 1 + TODO.md | 3 -- resources/settings/properties.xml | 3 +- resources/settings/settings.xml | 4 ++- resources/strings/strings.xml | 1 + source/RepaFieldView.mc | 48 ++++++++++++++++++++----------- 6 files changed, 39 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 04f07a3..7694b9e 100644 --- a/README.md +++ b/README.md @@ -24,5 +24,6 @@ Trail running focused Garmin watch DataField (for myself) - 3 theme colors - set primary theme color to 0 to use the HR color instead - HR display type (value, percentage, zone) +- Display speed instead of pace ![RepaField running](./repafield1.png) diff --git a/TODO.md b/TODO.md index a0775e7..ff040b5 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,3 @@ -- settings - - pace/speed switch - - cadence => vertical speed (might be a setting?) - also might save vertical speed to fit diff --git a/resources/settings/properties.xml b/resources/settings/properties.xml index 9cf5654..d3c6ee0 100644 --- a/resources/settings/properties.xml +++ b/resources/settings/properties.xml @@ -1,7 +1,8 @@ - 1.1.1 + 1.1.2 0 0088FF FFFF00 0 + false diff --git a/resources/settings/settings.xml b/resources/settings/settings.xml index 007944d..1673980 100644 --- a/resources/settings/settings.xml +++ b/resources/settings/settings.xml @@ -19,5 +19,7 @@ @Strings.HrZone - + + + \ No newline at end of file diff --git a/resources/strings/strings.xml b/resources/strings/strings.xml index 73a3f73..8e5839f 100644 --- a/resources/strings/strings.xml +++ b/resources/strings/strings.xml @@ -8,4 +8,5 @@ Value Percentage Zone + Show speed instead of pace diff --git a/source/RepaFieldView.mc b/source/RepaFieldView.mc index a346114..2c0c7b2 100644 --- a/source/RepaFieldView.mc +++ b/source/RepaFieldView.mc @@ -38,6 +38,7 @@ class RepaFieldView extends WatchUi.DataField { hidden var themeColor2 as Number; hidden var themeColor3 as Number; hidden var hrDisplayType as Number; + hidden var speedNotPace as Boolean; hidden var hrZones as Array; hidden var hrHist as Array; hidden var hrZoneColors as Array; @@ -45,6 +46,7 @@ class RepaFieldView extends WatchUi.DataField { hidden var cadenceZoneColors as Array; hidden var isDistanceMetric as Boolean; hidden var isElevationMetric as Boolean; + hidden var isPaceMetric as Boolean; hidden var mileToKm as Float = 1.609344f; hidden var meterToFeet as Float = 3.28084f; @@ -92,6 +94,7 @@ class RepaFieldView extends WatchUi.DataField { themeColor2 = Application.Properties.getValue("themeColor2").toNumberWithBase(16); themeColor3 = Application.Properties.getValue("themeColor3").toNumberWithBase(16); hrDisplayType = Application.Properties.getValue("hrDisplay").toNumber(); + speedNotPace = Application.Properties.getValue("speedNotPace"); hrValue = 0; ahrValue = 0; @@ -119,6 +122,7 @@ class RepaFieldView extends WatchUi.DataField { var settings = System.getDeviceSettings(); isDistanceMetric = settings.distanceUnits == System.UNIT_METRIC; isElevationMetric = settings.elevationUnits == System.UNIT_METRIC; + isPaceMetric = settings.paceUnits == System.UNIT_METRIC; } function tickHr(v as Number) { @@ -256,22 +260,22 @@ class RepaFieldView extends WatchUi.DataField { offCourse = 0.0f; } if (info.currentSpeed != null) { - speed = info.currentSpeed as Float; + speed = info.currentSpeed * 3.6; if (speed == 0) { pace = 0.0f; } else { - pace = 1000 / 60 / speed; + pace = 60 / speed; } } else { speed = 0.0f; pace = 0.0f; } if (info.averageSpeed != null) { - aspeed = info.averageSpeed as Float; + aspeed = info.averageSpeed * 3.6; if (aspeed == 0) { apace = 0.0f; } else { - apace = 1000 / 60 / aspeed; + apace = 60 / aspeed; } } else { aspeed = 0.0f; @@ -302,14 +306,18 @@ class RepaFieldView extends WatchUi.DataField { 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(); } + if (!isPaceMetric) { + pace = pace * mileToKm; + apace = apace * mileToKm; + speed = speed / mileToKm; + aspeed = aspeed / mileToKm; + } } // Display the value you computed here. This will be called @@ -383,21 +391,29 @@ class RepaFieldView extends WatchUi.DataField { // pace if (fPace != null) { - if (speed != 0) { - var pmin = pace.toNumber(); - var psec = (pace - pmin) * 60; - fPace.setText(pmin.format("%2d") + ":" + psec.format("%02d")); + if (speedNotPace) { + fPace.setText(speed.format("%.1f")); } else { - fPace.setText("--:--"); + if (speed != 0) { + var pmin = pace.toNumber(); + var psec = (pace - pmin) * 60; + fPace.setText(pmin.format("%2d") + ":" + psec.format("%02d")); + } else { + fPace.setText("--:--"); + } } } if (fAPace != null) { - if (aspeed != 0) { - var apmin = apace.toNumber(); - var apsec = (apace - apmin) * 60; - fAPace.setText(apmin.format("%2d") + ":" + apsec.format("%02d")); + if (speedNotPace) { + fAPace.setText(aspeed.format("%.1f")); } else { - fAPace.setText("--:--"); + if (aspeed != 0) { + var apmin = apace.toNumber(); + var apsec = (apace - apmin) * 60; + fAPace.setText(apmin.format("%2d") + ":" + apsec.format("%02d")); + } else { + fAPace.setText("--:--"); + } } }