2021-03-25 13:26:58 +00:00
|
|
|
(() => {
|
|
|
|
function getFace(){
|
|
|
|
var intervalRefSec;
|
2021-05-10 19:05:09 +00:00
|
|
|
var trip;
|
|
|
|
var prevSteps;
|
2021-03-25 13:26:58 +00:00
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
function init(g,sw,hrm,tr) {
|
|
|
|
trip = tr;
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function freeResources() {
|
2021-05-10 19:05:09 +00:00
|
|
|
trip = undefined;
|
|
|
|
prevSteps = -1;
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
function onButtonShort(btn) {
|
|
|
|
trip.setTripState(!trip.getTripState());
|
|
|
|
drawStepText();
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
function onButtonLong(btn) {
|
2021-07-04 18:38:53 +00:00
|
|
|
if (btn === 1) {
|
|
|
|
trip.resetTrip(getSteps());
|
|
|
|
trip.setTripState(true);
|
|
|
|
drawStepText();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (btn === 2) Bangle.showLauncher();
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
2021-07-04 18:38:53 +00:00
|
|
|
|
2021-03-25 13:26:58 +00:00
|
|
|
function radians(a) {
|
|
|
|
return a*Math.PI/180;
|
|
|
|
}
|
|
|
|
|
|
|
|
function startTimer() {
|
|
|
|
draw();
|
|
|
|
intervalRefSec = setInterval(draw, 5000);
|
|
|
|
}
|
|
|
|
|
|
|
|
function stopTimer() {
|
|
|
|
if(intervalRefSec) {intervalRefSec=clearInterval(intervalRefSec);}
|
|
|
|
}
|
|
|
|
|
|
|
|
function drawSteps() {
|
|
|
|
var i = 0;
|
2021-05-10 19:05:09 +00:00
|
|
|
var cx = 60 + 60;
|
|
|
|
var cy = 60 + 115;
|
2021-03-25 13:26:58 +00:00
|
|
|
var r = 56;
|
|
|
|
var steps = getSteps();
|
2021-05-10 19:05:09 +00:00
|
|
|
|
|
|
|
if (prevSteps == steps)
|
|
|
|
return;
|
|
|
|
|
|
|
|
prevSteps = steps;
|
|
|
|
|
2021-03-25 13:26:58 +00:00
|
|
|
var percent = steps / 10000;
|
|
|
|
|
|
|
|
if (percent > 1) percent = 1;
|
|
|
|
|
|
|
|
var startrot = 0 - 180;
|
|
|
|
var midrot = -180 - (360 * percent);
|
|
|
|
var endrot = -360 - 180;
|
2021-05-10 19:05:09 +00:00
|
|
|
|
|
|
|
g.setColor(0xAFE5); // greenyellow
|
2021-03-25 13:26:58 +00:00
|
|
|
|
|
|
|
// draw guauge
|
|
|
|
for (i = startrot; i > midrot; i -= 4) {
|
|
|
|
x = cx + r * Math.sin(radians(i));
|
|
|
|
y = cy + r * Math.cos(radians(i));
|
2021-05-10 19:05:09 +00:00
|
|
|
g.fillCircle(x,y,4);
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
// change the remaining color to RED if battery is below 25%
|
|
|
|
if (E.getBattery() > 25)
|
|
|
|
g.setColor(0x7BEF); // grey
|
|
|
|
else
|
|
|
|
g.setColor(0xF800); // red
|
|
|
|
|
|
|
|
// draw remainder of guage in grey or red
|
2021-03-25 13:26:58 +00:00
|
|
|
for (i = midrot; i > endrot; i -= 4) {
|
|
|
|
x = cx + r * Math.sin(radians(i));
|
|
|
|
y = cy + r * Math.cos(radians(i));
|
2021-05-10 19:05:09 +00:00
|
|
|
g.fillCircle(x,y,4);
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
2021-05-10 19:05:09 +00:00
|
|
|
}
|
2021-03-25 13:26:58 +00:00
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
function drawStepText() {
|
|
|
|
var cx = 60 + 60;
|
|
|
|
var cy = 60 + 115;
|
|
|
|
var r = 56;
|
|
|
|
var steps = getSteps();
|
2021-03-25 13:26:58 +00:00
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
/*
|
|
|
|
* if our trip count is greater than todays steps then we have
|
|
|
|
* rolled over to the next day so we should reset the trip counter
|
|
|
|
*/
|
|
|
|
if (trip.getTrip(steps) < 0)
|
|
|
|
trip.resetTrip(steps);
|
|
|
|
|
|
|
|
// show trip count or total steps today
|
|
|
|
g.setFontAlign(0,0);
|
|
|
|
g.setFont("Vector", 24);
|
2021-03-25 13:26:58 +00:00
|
|
|
|
2021-05-10 19:05:09 +00:00
|
|
|
// clear the space for the text
|
|
|
|
g.clearRect(cx - (r - 12), cy - 16, cx + (r - 12), cy + 16);
|
|
|
|
|
|
|
|
if (trip.getTripState() == true) {
|
|
|
|
g.setColor(0x7BEF); // grey
|
|
|
|
//g.setColor(1,0,0); // red
|
|
|
|
g.drawString(trip.getTrip(steps), cx, cy);
|
|
|
|
} else {
|
|
|
|
g.setColor(1,1,1); // white
|
|
|
|
g.drawString(steps, cx, cy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-25 13:26:58 +00:00
|
|
|
function draw() {
|
|
|
|
var d = new Date();
|
|
|
|
var da = d.toString().split(" ");
|
|
|
|
var time = da[4].substr(0,5);
|
|
|
|
|
|
|
|
g.clearRect(0, 30, 239, 99);
|
|
|
|
g.setColor(1,1,1);
|
|
|
|
g.setFontAlign(0, -1);
|
|
|
|
g.setFont("Vector", 80);
|
|
|
|
g.drawString(time, 120, 30, true);
|
|
|
|
|
|
|
|
drawSteps();
|
2021-05-10 19:05:09 +00:00
|
|
|
drawStepText();
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getSteps() {
|
|
|
|
if (stepsWidget() !== undefined)
|
|
|
|
return stepsWidget().getSteps();
|
2021-04-28 21:46:26 +00:00
|
|
|
return "E-STEPS";
|
2021-03-25 13:26:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function stepsWidget() {
|
|
|
|
if (WIDGETS.activepedom !== undefined) {
|
|
|
|
return WIDGETS.activepedom;
|
|
|
|
} else if (WIDGETS.wpedom !== undefined) {
|
|
|
|
return WIDGETS.wpedom;
|
|
|
|
}
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
|
|
|
|
return {init:init, freeResources:freeResources, startTimer:startTimer, stopTimer:stopTimer,
|
|
|
|
onButtonShort:onButtonShort, onButtonLong:onButtonLong};
|
|
|
|
}
|
|
|
|
|
|
|
|
return getFace;
|
|
|
|
})();
|