stopw: only show milliseconds for the first second

pull/2697/head
Rob Pilling 2023-04-19 08:37:41 +01:00
parent 9cb21ceb0f
commit 1893345d37
2 changed files with 34 additions and 7 deletions

View File

@ -2,6 +2,7 @@
var durationOnPause = "---"; var durationOnPause = "---";
var redrawInterval; var redrawInterval;
var startTime; var startTime;
var over1s = false;
var _a = (require("Storage").readJSON("clkinfostopw.setting.json", true) || {}).format, format = _a === void 0 ? 0 : _a; var _a = (require("Storage").readJSON("clkinfostopw.setting.json", true) || {}).format, format = _a === void 0 ? 0 : _a;
var unqueueRedraw = function () { var unqueueRedraw = function () {
if (redrawInterval) if (redrawInterval)
@ -11,13 +12,26 @@
var queueRedraw = function () { var queueRedraw = function () {
var _this = this; var _this = this;
unqueueRedraw(); unqueueRedraw();
redrawInterval = setInterval(function () { return _this.emit('redraw'); }, 1000); redrawInterval = setInterval(function () {
if (startTime) {
if (!over1s && Date.now() - startTime > 1000) {
over1s = true;
changeInterval(redrawInterval, 1000);
}
}
else {
unqueueRedraw();
}
_this.emit('redraw');
}, 100);
}; };
var pad2 = function (s) { return ('0' + s.toFixed(0)).slice(-2); }; var pad2 = function (s) { return ('0' + s.toFixed(0)).slice(-2); };
var duration = function (start) { var duration = function (start) {
var seconds = (Date.now() - start) / 1000; var seconds = (Date.now() - start) / 1000;
if (seconds < 60) if (seconds <= 1)
return seconds.toFixed(1); return seconds.toFixed(1);
if (seconds < 60)
return seconds.toFixed(0);
var mins = seconds / 60; var mins = seconds / 60;
seconds %= 60; seconds %= 60;
if (mins < 60) if (mins < 60)
@ -56,10 +70,10 @@
if (startTime) { if (startTime) {
durationOnPause = duration(startTime); durationOnPause = duration(startTime);
startTime = undefined; startTime = undefined;
unqueueRedraw();
} }
else { else {
queueRedraw.call(this); queueRedraw.call(this);
over1s = false;
startTime = Date.now(); startTime = Date.now();
} }
} }

View File

@ -2,6 +2,7 @@
let durationOnPause = "---"; let durationOnPause = "---";
let redrawInterval: number | undefined; let redrawInterval: number | undefined;
let startTime: number | undefined; let startTime: number | undefined;
let over1s = false;
let { format = StopWatchFormat.HMS }: StopWatchSettings let { format = StopWatchFormat.HMS }: StopWatchSettings
= require("Storage").readJSON("clkinfostopw.setting.json", true) || {}; = require("Storage").readJSON("clkinfostopw.setting.json", true) || {};
@ -12,7 +13,17 @@
const queueRedraw = function(this: ClockInfo.MenuItem) { const queueRedraw = function(this: ClockInfo.MenuItem) {
unqueueRedraw(); unqueueRedraw();
redrawInterval = setInterval(() => this.emit('redraw'), 1000); redrawInterval = setInterval(() => {
if (startTime) {
if (!over1s && Date.now() - startTime > 1000) {
over1s = true;
changeInterval(redrawInterval, 1000);
}
} else {
unqueueRedraw();
}
this.emit('redraw')
}, 100);
}; };
const pad2 = (s: number) => ('0' + s.toFixed(0)).slice(-2); const pad2 = (s: number) => ('0' + s.toFixed(0)).slice(-2);
@ -20,8 +31,10 @@
const duration = (start: number) => { const duration = (start: number) => {
let seconds = (Date.now() - start) / 1000; let seconds = (Date.now() - start) / 1000;
if (seconds < 60) if (seconds <= 1)
return seconds.toFixed(1); return seconds.toFixed(1);
if (seconds < 60)
return seconds.toFixed(0);
let mins = seconds / 60; let mins = seconds / 60;
seconds %= 60; seconds %= 60;
@ -64,10 +77,10 @@
run: function() { // tapped run: function() { // tapped
if (startTime) { if (startTime) {
durationOnPause = duration(startTime); durationOnPause = duration(startTime);
startTime = undefined; startTime = undefined; // this also unqueues the redraw
unqueueRedraw();
} else { } else {
queueRedraw.call(this); queueRedraw.call(this);
over1s = false;
startTime = Date.now(); startTime = Date.now();
} }
} }