Skip to content

Commit

Permalink
Merge pull request #3751 from JimMadge/codestyle
Browse files Browse the repository at this point in the history
terminalclock: Code style and whitespace changes
  • Loading branch information
bobrippling authored Feb 24, 2025
2 parents 864b6e7 + 80347a0 commit d028559
Show file tree
Hide file tree
Showing 4 changed files with 175 additions and 159 deletions.
14 changes: 7 additions & 7 deletions apps/terminalclock/README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Terminal clock

A clock displayed as a terminal cli.
It can display :
A clock displayed as a terminal CLI.
It can display:

- time
- date
- altitude
- hrm
- heart rate
- motion
- steps


"Power saving" setting control the HR and pressure (altitude) sensors.
If "Off" they will always be on.
If "On" the sensors will be turned on every "Power on interval" minutes for 45 secondes
"Power saving" setting control the HR and pressure (altitude) sensors.
If "Off" they will always be on.
If "On" the sensors will be turned on every "Power on interval" minutes for 45 seconds.
186 changes: 98 additions & 88 deletions apps/terminalclock/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
let font6x8At2Size = 18;
let font6x8FirstTextSize = 4;
let font6x8DefaultTextSize = 2;
if (process.env.HWVERSION == 1){
if (process.env.HWVERSION == 1) {
paddingY = 3;
font6x8At4Size = 48;
font6x8At2Size = 27;
Expand All @@ -32,29 +32,32 @@
this.unlock_precision = 1;
if (this.HRMinConfidence === undefined) this.HRMinConfidence = 50;
if (this.PowerOnInterval === undefined) this.PowerOnInterval = 15;
if (this.powerSave===undefined) this.powerSave = this.powerSaving; // migrate old setting
if (this.powerSave===undefined) this.powerSave = true;
if (this.powerSave === undefined) this.powerSave = this.powerSaving; // migrate old setting
if (this.powerSave === undefined) this.powerSave = true;

["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(k => {
if (this[k]===undefined){
if(k == "L2") this[k] = "Date";
else if(k == "L3") {
["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach((k) => {
if (this[k] === undefined) {
if (k == "L2") this[k] = "Date";
else if (k == "L3") {
this[k] = "HR";
this.showHRM = true;
}else if(k == "L4") this[k] = "Motion";
else if(k == "L5") this[k] = "Steps";
else if(k == "L6") this[k] = ">";
else this[k] = "Empty";
}
else if (this[k]==="HR") this.showHRM = true;
else if (this[k]==="Alt") this.showAltitude = true && process.env.HWVERSION == 2;
} else if (k == "L4") this[k] = "Motion";
else if (k == "L5") this[k] = "Steps";
else if (k == "L6") this[k] = ">";
else this[k] = "Empty";
} else if (this[k] === "HR") this.showHRM = true;
else if (this[k] === "Alt")
this.showAltitude = true && process.env.HWVERSION == 2;
});

// set the services (HRM, pressure sensor, etc....)
if(!this.powerSave){
if (!this.powerSave) {
turnOnServices();
} else{
this.turnOnInterval = setInterval(turnOnServices, this.PowerOnInterval*60000); // every PowerOnInterval min
} else {
this.turnOnInterval = setInterval(
turnOnServices,
this.PowerOnInterval * 60000,
); // every PowerOnInterval min
}
// start the clock unlocked
unlock();
Expand All @@ -67,102 +70,111 @@
drawTime(date, curPos);
curPos++;

["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(line => {
if (this[line]==='Date') drawDate(date, curPos);
else if (this[line]==='HR') drawHRM(curPos);
else if (this[line]==='Motion') drawMotion(curPos);
else if (this[line]==='Alt') drawAltitude(curPos);
else if (this[line]==='Steps') drawStepCount(curPos);
else if (this[line]==='>') drawInput(curPos);
["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach((line) => {
if (this[line] === "Date") drawDate(date, this.isoDate, curPos);
else if (this[line] === "HR") drawHRM(curPos);
else if (this[line] === "Motion") drawMotion(curPos);
else if (this[line] === "Alt") drawAltitude(curPos);
else if (this[line] === "Steps") drawStepCount(curPos);
else if (this[line] === ">") drawInput(curPos);
curPos++;
});
},

remove: function() {
if (this.turnOnInterval){
remove: function () {
if (this.turnOnInterval) {
clearInterval(this.turnOnInterval);
delete this.turnOnInterval;
}
if (this.turnOffServiceTimeout){
clearTimeout(this.turnOffServiceTimeout)
delete this.turnOffServiceTimeout
if (this.turnOffServiceTimeout) {
clearTimeout(this.turnOffServiceTimeout);
delete this.turnOffServiceTimeout;
}
turnOffServices();
if (this.onLock) Bangle.removeListener('lock', this.onLock);
if (this.onHRM) Bangle.removeListener('HRM', this.onHRM);
if (this.onPressure) Bangle.removeListener('pressure', this.onPressure);
}

if (this.onLock) Bangle.removeListener("lock", this.onLock);
if (this.onHRM) Bangle.removeListener("HRM", this.onHRM);
if (this.onPressure) Bangle.removeListener("pressure", this.onPressure);
},
});


/* ----------------------------
/* ----------------------------
Draw related of specific lines
-------------------------------- */

let drawLine = function(line, pos){
if(pos == 1)
let drawLine = function (line, pos) {
if (pos == 1) {
g.setFont("6x8", font6x8FirstTextSize);
else
} else {
g.setFont("6x8", font6x8DefaultTextSize);
}

let yPos = Bangle.appRect.y +
paddingY * (pos - 1) +
font6x8At4Size * Math.min(1, pos-1) +
font6x8At2Size * Math.max(0, pos-2);
let yPos =
Bangle.appRect.y +
paddingY * (pos - 1) +
font6x8At4Size * Math.min(1, pos - 1) +
font6x8At2Size * Math.max(0, pos - 2);
g.drawString(line, 5, yPos, true);
};

let drawTime = function(now, pos){
let drawTime = function (now, pos) {
let h = now.getHours();
let m = now.getMinutes();
let time = ">" + (""+h).substr(-2) + ":" + ("0"+m).substr(-2);
let time = ">" + ("" + h).substr(-2) + ":" + ("0" + m).substr(-2);
drawLine(time, pos);
};

let drawDate = function(now, pos) {
let drawDate = function (now, pos) {
let date;
if (clock.isoDate) {
let year = now.getFullYear();
let month = now.getMonth() + 1; // Months are 0-11
let month = now.getMonth() + 1; // Months are 0-11
let day = now.getDate();
date = ">" + year + "-" + month + "-" + day;
} else {
let dow = locale.dow(now, 1);
date = locale.date(now, 1).substr(0,6) + locale.date(now, 1).substr(-2);
date = locale.date(now, 1).substr(0, 6) + locale.date(now, 1).substr(-2);
date = ">" + dow + " " + date;
}
drawLine(date, pos);
};

let drawInput = function(pos){
let drawInput = function (pos) {
drawLine(">", pos);
};

let drawStepCount = function(pos){
let drawStepCount = function (pos) {
let health = Bangle.getHealthStatus("day");
let steps_formated = ">Steps: " + health.steps;
drawLine(steps_formated, pos);
};

let drawHRM = function(pos){
if(heartRate != 0)
let drawHRM = function (pos) {
if (heartRate != 0) {
drawLine(">HR: " + parseInt(heartRate), pos);
else
} else {
drawLine(
">HR: " + parseInt(Math.round(Bangle.getHealthStatus().bpm||Bangle.getHealthStatus("last").bpm)),
pos);
">HR: " +
parseInt(
Math.round(
Bangle.getHealthStatus().bpm ||
Bangle.getHealthStatus("last").bpm,
),
),
pos,
);
}
};

let drawAltitude = function(pos){
if(altitude > 0)
let drawAltitude = function (pos) {
if (altitude > 0) {
drawLine(">Alt: " + altitude.toFixed(1) + "m", pos);
else
} else {
drawLine(">Alt: unknown", pos);
}
};
let drawMotion = function(pos){
let health = Bangle.getHealthStatus('last');

let drawMotion = function (pos) {
let health = Bangle.getHealthStatus("last");
let steps_formated = ">Motion: " + parseInt(health.movement);
drawLine(steps_formated, pos);
};
Expand All @@ -171,72 +183,70 @@
Services functions (HRM, pressure, etc...)
-------------------------------------------------- */

let turnOnServices = function(){
if(clock.showHRM){
let turnOnServices = function () {
if (clock.showHRM) {
Bangle.setHRMPower(true, "terminalclock");
}
if(clock.showAltitude){
if (clock.showAltitude) {
Bangle.setBarometerPower(true, "terminalclock");
}
if(clock.powerSave){
if(clock.turnOffServiceTimeout) clearTimeout(clock.turnOffServiceTimeout);
if (clock.powerSave) {
if (clock.turnOffServiceTimeout)
clearTimeout(clock.turnOffServiceTimeout);
clock.turnOffServiceTimeout = setTimeout(function () {
turnOffServices();
}, 45000);
}
};

let turnOffServices = function(){
if(clock.showHRM){
let turnOffServices = function () {
if (clock.showHRM) {
Bangle.setHRMPower(false, "terminalclock");
}
if(clock.showAltitude){
if (clock.showAltitude) {
Bangle.setBarometerPower(false, "terminalclock");
}
};

// set the lock and unlock actions
clock.onLock = lock_event => {
clock.onLock = (lock_event) => {
if (lock_event) lock();
else unlock();
};
Bangle.on("lock", clock.onLock);

clock.onHRM = hrmInfo => {
if(hrmInfo.confidence >= clock.HRMinConfidence)
heartRate = hrmInfo.bpm;
clock.onHRM = (hrmInfo) => {
if (hrmInfo.confidence >= clock.HRMinConfidence) heartRate = hrmInfo.bpm;
};
Bangle.on('HRM', clock.onHRM);
Bangle.on("HRM", clock.onHRM);

const MEDIANLENGTH = 20; // technical
let avr = [], median; // technical
clock.onPressure = pressureInfo => {
while (avr.length>MEDIANLENGTH) avr.pop();
let avr = [],
median; // technical
clock.onPressure = (pressureInfo) => {
while (avr.length > MEDIANLENGTH) avr.pop();
avr.unshift(pressureInfo.altitude);
median = avr.slice().sort();
if (median.length>10) {
let mid = median.length>>1;
altitude = E.sum(median.slice(mid-4,mid+5)) / 9;
}
else
altitude = pressureInfo.altitude;
if (median.length > 10) {
let mid = median.length >> 1;
altitude = E.sum(median.slice(mid - 4, mid + 5)) / 9;
} else altitude = pressureInfo.altitude;
};
Bangle.on('pressure', clock.onPressure);

Bangle.on("pressure", clock.onPressure);

/* -------------------------------------------------
Clock related functions but not in the ClockFace module
---------------------------------------------------- */

let unlock = function(){
if(clock.powerSave){
let unlock = function () {
if (clock.powerSave) {
turnOnServices();
}
clock.precision = clock.unlock_precision;
clock.tick();
};

let lock = function(){
let lock = function () {
clock.precision = clock.lock_precision;
clock.tick();
};
Expand Down
23 changes: 9 additions & 14 deletions apps/terminalclock/metadata.json
Original file line number Diff line number Diff line change
@@ -1,25 +1,20 @@
{
{
"id": "terminalclock",
"name": "Terminal Clock",
"shortName":"Terminal Clock",
"description": "A terminal cli like clock displaying multiple sensor data",
"version":"0.11",
"shortName": "Terminal Clock",
"description": "A terminal CLI like clock displaying configurable, multiple sensor data",
"version": "0.11",
"icon": "app.png",
"type": "clock",
"tags": "clock",
"supports": ["BANGLEJS", "BANGLEJS2"],
"allow_emulator": false,
"readme": "README.md",
"storage": [
{"name": "terminalclock.app.js","url": "app.js"},
{"name": "terminalclock.settings.js","url": "settings.js"},
{"name": "terminalclock.img","url": "app-icon.js","evaluate": true}
{ "name": "terminalclock.app.js", "url": "app.js" },
{ "name": "terminalclock.settings.js", "url": "settings.js" },
{ "name": "terminalclock.img", "url": "app-icon.js", "evaluate": true }
],
"data": [
{"name": "terminalclock.json"}
],
"screenshots": [
{"url": "screenshot1.png"},
{"url": "screenshot2.png"}
]
"data": [{ "name": "terminalclock.json" }],
"screenshots": [{ "url": "screenshot1.png" }, { "url": "screenshot2.png" }]
}
Loading

0 comments on commit d028559

Please sign in to comment.