For anyone interested in implementing HR zones, I coded the following:
// Create vars
var valueHr = null;
var valueHrZone = null;
// Read user profile & store in vars
var userProfile = Toybox.UserProfile.getProfile();
var userAge = Time.Gregorian.info(Time.now()).year-userProfile.birthYear;
var restHr = userProfile.restingHeartRate;
var maxHr = 221-userAge;
// Store Strava HR upper zone limits in array
var hrRanges = [restHr,0.59*maxHr,0.77*maxHr,0.87*maxHr,0.97*maxHr,maxHr];
function compute(info) {
// Get current HR zone info
if (info.currentHeartRate){
valueHr = info.currentHeartRate;
for(var i=0; i<hrRanges.size();i++){
if(valueHr > hrRanges&& valueHr < hrRanges[i+1]){
valueHrZone = (i+1)+((valueHr-hrRanges)/(hrRanges[i+1]-hrRanges));
}
else if (valueHr < hrRanges[0]){
valueHrZone = 0.0;
}
else if (valueHr > hrRanges[5]){
valueHrZone = 5+((valueHr-hrRanges[4])/(hrRanges[5]-hrRanges[4]));
}
}
}
else{
valueHrZone = 0.0;
}
}[/CODE]
On a related note: I'm getting and setting all my metrics this way in the function "compute(info)" (using if-else statements). Is this good coding practice or is there some better way of handling this?
Cheers,
Lorenzo