Dear All,
I like very much datafield developed by Dr.MAUMI : POWER+AVG and SPEED+AVG and I use it a lot on my edge 820.
I like it so much that I decided to code Cadence+Avg and HR+Avg on the same model.
I do not know how to publish my app but at least I decided to share source code on this forum.
Code could probably be optimise a lot because I am not a specialist (i.e. position of field because I build it only for 10 fields display).
If anyone want to make it own, optimise and publish it, I would be very happy of that.
BR
McEwans
Below code for HRAvg ----------------------------------
using Toybox.WatchUi as Ui;
using Toybox.Graphics as Gfx;
using Toybox.Activity as activity;
using Toybox.System as System;
class HRAvgView extends Ui.DataField {
hidden var hr = 0;
hidden var avghr = 0;
hidden var backgroundColor = Graphics.COLOR_WHITE;
function initialize() {
DataField.initialize();
}
function onLayout(dc) {
View.setLayout(Rez.Layouts.MainLayout(dc));
var labelView = View.findDrawableById("label");
labelView.locY = labelView.locY - 16;
View.findDrawableById("label").setText(Rez.Strings.label);
return true;
}
function compute(info) {
hr = info.currentHeartRate != null ? info.currentHeartRate : 0;
avghr = info.averageHeartRate != null ? info.averageHeartRate : 0;
}
function onUpdate(dc) {
backgroundColor = getBackgroundColor();
View.findDrawableById("Background").setColor(getBackgroundColor());
View.onUpdate(dc);
var dataColor;
var avghrstring;
var hrstring;
hrstring = hr;
avghrstring = avghr;
if( hrstring >= avghrstring * 1.05 and hrstring != 0)
{
dc.setColor(Gfx.COLOR_RED, Gfx.COLOR_TRANSPARENT);
}
else
{
if( hrstring <= avghrstring * 0.95 and hrstring != 0)
{
dc.setColor(Gfx.COLOR_GREEN, Gfx.COLOR_TRANSPARENT);
}
else
{
if( backgroundColor == Graphics.COLOR_WHITE)
{
dc.setColor(Gfx.COLOR_BLACK, Gfx.COLOR_TRANSPARENT);
}
else
{
dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_TRANSPARENT);
}
}
}
dc.drawText(dc.getWidth()/3, (dc.getHeight()/2)+15, Gfx.FONT_LARGE, hrstring, (Gfx.TEXT_JUSTIFY_CENTER | Gfx.TEXT_JUSTIFY_VCENTER));
if( backgroundColor == Graphics.COLOR_WHITE)
{
dc.setColor(Gfx.COLOR_BLACK, Gfx.COLOR_TRANSPARENT);
}
else
{
dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_TRANSPARENT);
}
dc.drawText((dc.getWidth()/1.5), (dc.getHeight()/3)+13, Gfx.FONT_SMALL, avghrstring, (Gfx.TEXT_JUSTIFY_LEFT | Gfx.TEXT_JUSTIFY_VCENTER));
dc.drawText((dc.getWidth()/1.5), (dc.getHeight()/1.5)+10, Gfx.FONT_XTINY, "bpm", (Gfx.TEXT_JUSTIFY_LEFT | Gfx.TEXT_JUSTIFY_VCENTER));
}
}
And Code for CadenceAvg ---------------------------------------------------------------------------------------
using Toybox.WatchUi as Ui;
using Toybox.Graphics as Gfx;
using Toybox.Activity as activity;
using Toybox.System as System;
class CadenceAvgView extends Ui.DataField {
hidden var cd = 0;
hidden var avgcd = 0;
hidden var backgroundColor = Graphics.COLOR_WHITE;
function initialize() {
DataField.initialize();
}
function onLayout(dc) {
View.setLayout(Rez.Layouts.MainLayout(dc));
var labelView = View.findDrawableById("label");
labelView.locY = labelView.locY - 16;
View.findDrawableById("label").setText(Rez.Strings.label);
return true;
}
function compute(info) {
cd = info.currentCadence != null ? info.currentCadence : 0;
avgcd = info.averageCadence != null ? info.averageCadence : 0;
}
function onUpdate(dc) {
backgroundColor = getBackgroundColor();
View.findDrawableById("Background").setColor(getBackgroundColor());
View.onUpdate(dc);
var dataColor;
var avgcdstring;
var cdstring;
cdstring = cd;
avgcdstring = avgcd;
if( cdstring >= avgcdstring * 1.10 and cdstring != 0)
{
dc.setColor(Gfx.COLOR_RED, Gfx.COLOR_TRANSPARENT);
}
else
{
if( cdstring <= avgcdstring * 0.90 and cdstring != 0)
{
dc.setColor(Gfx.COLOR_GREEN, Gfx.COLOR_TRANSPARENT);
}
else
{
if( backgroundColor == Graphics.COLOR_WHITE)
{
dc.setColor(Gfx.COLOR_BLACK, Gfx.COLOR_TRANSPARENT);
}
else
{
dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_TRANSPARENT);
}
}
}
dc.drawText(dc.getWidth()/3, (dc.getHeight()/2)+15, Gfx.FONT_LARGE, cdstring, (Gfx.TEXT_JUSTIFY_RIGHT | Gfx.TEXT_JUSTIFY_VCENTER));
if( backgroundColor == Graphics.COLOR_WHITE)
{
dc.setColor(Gfx.COLOR_BLACK, Gfx.COLOR_TRANSPARENT);
}
else
{
dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_TRANSPARENT);
}
dc.drawText((dc.getWidth()/1.5), (dc.getHeight()/3)+13, Gfx.FONT_SMALL, avgcdstring, (Gfx.TEXT_JUSTIFY_LEFT | Gfx.TEXT_JUSTIFY_VCENTER));
dc.drawText((dc.getWidth()/1.5), (dc.getHeight()/1.5)+10, Gfx.FONT_XTINY, "rpm", (Gfx.TEXT_JUSTIFY_LEFT | Gfx.TEXT_JUSTIFY_VCENTER));
}
}