Skip to content

Commit 20867f3

Browse files
committed
added time so it still functions as a watch
1 parent 273da35 commit 20867f3

File tree

4 files changed

+45
-17
lines changed

4 files changed

+45
-17
lines changed

app/index.js

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@
44
import document from "document";
55
import * as messaging from "messaging";
66
import * as fs from "fs";
7+
import clock from "clock";
8+
clock.granularity = "minutes";
9+
import { preferences } from "user-settings";
710
import { vibration } from "haptics";
811
import { style } from "./style.js"
912

1013
//grab screen elements
14+
const time = document.getElementById("time");
1115
const progressArc = document.getElementById("progressArc");
1216
const countdown = document.getElementById("countdown");
1317
const sprintCounter = document.getElementById("sprintCounter");
@@ -31,12 +35,22 @@ let formattedSeconds = 0;
3135
let counting = false;
3236
let countdownSeconds = flowInSeconds;
3337

34-
//used to toggle between flow sessions and breaks
35-
let flow = true;
38+
39+
let flow = true; //used to toggle between flow sessions and breaks
3640
let sessionTime = flowInSeconds;
3741
let currentSprint = 1;
3842

39-
readFile();
43+
//setup clock
44+
clock.ontick = (evt) => {
45+
let hours = evt.date.getHours();
46+
let minutes = evt.date.getMinutes();
47+
hours = hours > 12 && preferences.clockDisplay === "12h" ? hours - 12 : hours;
48+
hours = hours < 10 ? "0" + hours : hours;
49+
minutes = minutes < 10 ? "0" + minutes : minutes;
50+
time.text = `${hours}:${minutes}`;
51+
}
52+
53+
setupWithUserSettings();
4054
style();
4155
//clock.tick does not run in background so use setInterval instead
4256
setInterval(() => progress(), 1000)
@@ -47,22 +61,33 @@ playPauseButton.onactivate = (evt) => {
4761
messaging.peerSocket.onmessage = (evt)=>{
4862
//persist
4963
writeToFile(evt);
50-
readFile();
64+
setupWithUserSettings();
5165
}
5266

67+
68+
69+
5370
function writeToFile(evt){
5471
fs.writeFileSync("flowSettings.txt", evt.data, "cbor");
5572
}
5673

57-
function readFile(){
74+
function setupWithUserSettings(){
75+
try {
76+
fs.readFileSync("flowSettings.txt", "cbor")
77+
}
78+
catch(err){
79+
writeToFile({data : {flowTime: 0, shortBreakTime: 0, longBreakTime: 0}});
80+
}
5881
let settings = fs.readFileSync("flowSettings.txt", "cbor");
59-
flowInSeconds = parseInt(settings.flowTime)*60;
60-
shortBreakInSeconds = parseInt(settings.shortBreakTime)*60;
61-
longBreakInSeconds = parseInt(settings.longBreakTime)*60;
62-
countdownSeconds = flowInSeconds;
63-
sessionTime = flowInSeconds;
82+
83+
//setup consts based on user settings
84+
flowInSeconds = settings.flowTime == 0 ? flowInSeconds : parseInt(settings.flowTime)*60;
85+
shortBreakInSeconds = settings.shortBreakTime == 0? shortBreakInSeconds : parseInt(settings.shortBreakTime)*60;
86+
longBreakInSeconds = settings.longBreakTime == 0 ? longBreakInSeconds : parseInt(settings.longBreakTime)*60;
87+
setupSession(flowInSeconds, flowText);
6488
}
6589

90+
6691
function secondsToAngle(seconds){
6792
//degree per second * elapsedseconds
6893
return (360/sessionTime) * seconds;
@@ -73,10 +98,6 @@ function progress(){
7398
if( !isSprintOver(countdownSeconds) ) {
7499
countdownSeconds--;
75100
//calculate and update angle
76-
const sweepAnimation = progressArc.getElementById("sweepAnimation");
77-
sweepAnimation.final = secondsToAngle(sessionTime - countdownSeconds);
78-
sweepAnimation.easing = "ease-in";
79-
sweepAnimation.dur = "1";
80101
progressArc.sweepAngle = secondsToAngle(sessionTime - countdownSeconds);
81102
}
82103
}
@@ -122,7 +143,6 @@ function setupSession(nextSessionSeconds, text){
122143
sessionText.text = text;
123144
//set the correct seconds for progress
124145
sessionTime = countdownSeconds = nextSessionSeconds;
125-
126146
}
127147

128148
function play(){

app/style.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const playPauseIconPressed = playPauseButton.getElementById("combo-button-icon-p
1515
const oldBackground = background.value;
1616

1717
export function style(){
18-
background.value = 0;
18+
1919

2020
//check if they changed the background every 100 ms
2121
setInterval(()=>{

resources/index.gui

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@
3434
</use>
3535
</use>
3636

37+
<text id="time" class="baseColor" x="265" y="25">12:00</text>
38+
3739
<arc id="backgroundArc" class="backgroundArcColor" x="30" y="30" height="240" width="240" arc-width="20" start-angle="0" sweep-angle="360"/>
3840
<arc id="progressArc" class="accentColor" x="30" y="30" height="240" width="240" arc-width="20" start-angle="0" sweep-angle="0"/>
3941

4042
<text id="sessionText" class="baseColor" x="150" y="100">Flow</text>
41-
<text id="countdown" class="accentColor" x="150" y="160">00:25:00</text>
43+
<text id="countdown" class="accentColor" x="150" y="160">00:00:00</text>
4244
<text id="sprintCounter" class="baseColor" x="150" y="210">1 of 4</text>
4345

4446
<use id="playPauseButton" class="accentColor" href="#combo-button-lower-right">

resources/styles.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,9 @@
3333
text-anchor: "middle";
3434
}
3535

36+
#time{
37+
font-family: "System-Regular";
38+
font-size: "25";
39+
text-anchor: "middle";
40+
}
41+

0 commit comments

Comments
 (0)