initial commit
This commit is contained in:
130
app/index.js
Normal file
130
app/index.js
Normal file
@@ -0,0 +1,130 @@
|
||||
import document from "document";
|
||||
import clock from "clock";
|
||||
import { preferences } from "user-settings";
|
||||
import { HeartRateSensor } from "heart-rate";
|
||||
import { vibration } from "haptics";
|
||||
import { today } from "user-activity";
|
||||
import { display } from "display";
|
||||
import * as messaging from "messaging";
|
||||
import * as fs from "fs";
|
||||
import * as digits from "../common/digits";
|
||||
|
||||
let hrm = new HeartRateSensor;
|
||||
let hrTimer;
|
||||
|
||||
let touchArea = document.getElementById('touchArea');
|
||||
|
||||
let settings = {
|
||||
colors: ['#843E86', '#00b0a0', 'white'],
|
||||
dateReverse: false // US date
|
||||
};
|
||||
|
||||
var storedSettings;
|
||||
var fileSuccess = true;
|
||||
console.log('reading settings');
|
||||
try {
|
||||
storedSettings = fs.readFileSync("settings.txt", "cbor");
|
||||
}
|
||||
catch(err) {
|
||||
fileSuccess = false;
|
||||
console.log('settings not found');
|
||||
}
|
||||
if (fileSuccess) {
|
||||
settings = storedSettings;
|
||||
}
|
||||
|
||||
function updateClock() {
|
||||
let currDate = new Date();
|
||||
let hours = currDate.getHours();
|
||||
let displayHours = hours;
|
||||
let day = currDate.getDate();
|
||||
let month = currDate.getMonth()+1;
|
||||
|
||||
if (preferences.clockDisplay === '12h') {
|
||||
displayHours = displayHours % 12;
|
||||
displayHours = displayHours ? displayHours : 12;
|
||||
}
|
||||
|
||||
let minutes = currDate.getMinutes();
|
||||
|
||||
let newDigits = [
|
||||
Math.floor(displayHours/10),
|
||||
displayHours%10,
|
||||
Math.floor(minutes/10),
|
||||
minutes%10
|
||||
];
|
||||
newDigits = [1, 2, 5, 7];
|
||||
let dateString;
|
||||
if (settings.dateReverse) {
|
||||
dateString = month+"/"+day;
|
||||
} else {
|
||||
dateString = day+"/"+month;
|
||||
}
|
||||
digits.setSmallDigits('date', dateString, true);
|
||||
digits.setDigits([newDigits[0], newDigits[1], newDigits[2], newDigits[3]], settings.colors);
|
||||
}
|
||||
|
||||
hrm.onreading = () => {
|
||||
if (display.on) {
|
||||
let heartRate = (hrm.heartRate || null);
|
||||
digits.setSmallDigits('hr', heartRate, false);
|
||||
}
|
||||
clearTimeout(hrTimer);
|
||||
hrTimer = setTimeout(() => {
|
||||
digits.setSmallDigits('hr', null, false);
|
||||
}, 5000);
|
||||
hrm.stop();
|
||||
}
|
||||
|
||||
function updateSteps() {
|
||||
if (display.on) {
|
||||
let steps = (today.adjusted.steps || null);
|
||||
digits.setSmallDigits('steps', steps, true);
|
||||
}
|
||||
}
|
||||
|
||||
function updateHealthDisplay() {
|
||||
hrm.start();
|
||||
updateSteps();
|
||||
}
|
||||
|
||||
clock.granularity = "minutes";
|
||||
clock.ontick = () => updateClock();
|
||||
|
||||
setInterval(() => {
|
||||
updateHealthDisplay();
|
||||
}, 2000);
|
||||
|
||||
updateHealthDisplay();
|
||||
|
||||
messaging.peerSocket.onmessage = e => {
|
||||
console.log("Message received -> "+e.data.key+": "+e.data.newValue);
|
||||
display.poke();
|
||||
vibration.start("bump");
|
||||
switch (e.data.key) {
|
||||
case 'hrcolor':
|
||||
settings.colors[0] = e.data.newValue;
|
||||
break;
|
||||
case 'mincolor':
|
||||
settings.colors[1] = e.data.newValue;
|
||||
break;
|
||||
case 'date':
|
||||
settings.dateReverse = e.data.newValue;
|
||||
break;
|
||||
};
|
||||
updateClock();
|
||||
|
||||
fs.writeFileSync("settings.txt", settings, "cbor");
|
||||
}
|
||||
|
||||
messaging.peerSocket.onopen = () => {
|
||||
console.log("Clockface opened socket");
|
||||
};
|
||||
|
||||
messaging.peerSocket.close = () => {
|
||||
console.log("Clockface closed socket");
|
||||
};
|
||||
|
||||
messaging.peerSocket.onerror = (err) => {
|
||||
console.log("Clockface socket error: " + err.code + " - " + err.message);
|
||||
}
|
||||
Reference in New Issue
Block a user