diff --git a/apps/clkinfostopw/ChangeLog b/apps/clkinfostopw/ChangeLog index 2626fb51e..20742562f 100644 --- a/apps/clkinfostopw/ChangeLog +++ b/apps/clkinfostopw/ChangeLog @@ -1,2 +1,3 @@ 0.01: New clkinfo! 0.02: Added format option, reduced battery usage +0.03: Hardcode colon-format, show milliseconds for the first minute diff --git a/apps/clkinfostopw/clkinfo.js b/apps/clkinfostopw/clkinfo.js index 84d7dfecc..fbbe80a55 100644 --- a/apps/clkinfostopw/clkinfo.js +++ b/apps/clkinfostopw/clkinfo.js @@ -2,7 +2,8 @@ var durationOnPause = "---"; var redrawInterval; var startTime; - var _a = (require("Storage").readJSON("clkinfostopw.setting.json", true) || {}).format, format = _a === void 0 ? 0 : _a; + var showMillis = true; + var milliTime = 60; var unqueueRedraw = function () { if (redrawInterval) clearInterval(redrawInterval); @@ -11,24 +12,31 @@ var queueRedraw = function () { var _this = this; unqueueRedraw(); - redrawInterval = setInterval(function () { return _this.emit('redraw'); }, 1000); + redrawInterval = setInterval(function () { + if (startTime) { + if (showMillis && Date.now() - startTime > milliTime * 1000) { + showMillis = false; + changeInterval(redrawInterval, 1000); + } + } + else { + unqueueRedraw(); + } + _this.emit('redraw'); + }, 100); }; var pad2 = function (s) { return ('0' + s.toFixed(0)).slice(-2); }; var duration = function (start) { var seconds = (Date.now() - start) / 1000; - if (seconds < 60) + if (seconds < milliTime) return seconds.toFixed(1); var mins = seconds / 60; seconds %= 60; if (mins < 60) - return format === 0 - ? "".concat(pad2(mins), "m").concat(pad2(seconds), "s") - : "".concat(mins.toFixed(0), ":").concat(pad2(seconds)); + return "".concat(mins.toFixed(0), ":").concat(pad2(seconds)); var hours = mins / 60; mins %= 60; - return format === 0 - ? "".concat(hours.toFixed(0), "h").concat(pad2(mins), "m").concat(pad2(seconds), "s") - : "".concat(hours.toFixed(0), ":").concat(pad2(mins), ":").concat(pad2(seconds)); + return "".concat(hours.toFixed(0), ":").concat(pad2(mins), ":").concat(pad2(seconds)); }; var img = function () { return atob("GBiBAAAAAAB+AAB+AAAAAAB+AAH/sAOB8AcA4A4YcAwYMBgYGBgYGBg8GBg8GBgYGBgAGAwAMA4AcAcA4AOBwAH/gAB+AAAAAAAAAA=="); }; return { @@ -56,10 +64,10 @@ if (startTime) { durationOnPause = duration(startTime); startTime = undefined; - unqueueRedraw(); } else { queueRedraw.call(this); + showMillis = true; startTime = Date.now(); } } diff --git a/apps/clkinfostopw/clkinfo.ts b/apps/clkinfostopw/clkinfo.ts index e5361644d..5a2fd7bd0 100644 --- a/apps/clkinfostopw/clkinfo.ts +++ b/apps/clkinfostopw/clkinfo.ts @@ -2,8 +2,8 @@ let durationOnPause = "---"; let redrawInterval: number | undefined; let startTime: number | undefined; - let { format = StopWatchFormat.HMS }: StopWatchSettings - = require("Storage").readJSON("clkinfostopw.setting.json", true) || {}; + let showMillis = true; + const milliTime = 60; const unqueueRedraw = () => { if (redrawInterval) clearInterval(redrawInterval); @@ -12,7 +12,17 @@ const queueRedraw = function(this: ClockInfo.MenuItem) { unqueueRedraw(); - redrawInterval = setInterval(() => this.emit('redraw'), 1000); + redrawInterval = setInterval(() => { + if (startTime) { + if (showMillis && Date.now() - startTime > milliTime * 1000) { + showMillis = false; + changeInterval(redrawInterval, 1000); + } + } else { + unqueueRedraw(); + } + this.emit('redraw') + }, 100); }; const pad2 = (s: number) => ('0' + s.toFixed(0)).slice(-2); @@ -20,23 +30,19 @@ const duration = (start: number) => { let seconds = (Date.now() - start) / 1000; - if (seconds < 60) + if (seconds < milliTime) return seconds.toFixed(1); let mins = seconds / 60; seconds %= 60; if (mins < 60) - return format === StopWatchFormat.HMS - ? `${pad2(mins)}m${pad2(seconds)}s` - : `${mins.toFixed(0)}:${pad2(seconds)}`; + return `${mins.toFixed(0)}:${pad2(seconds)}`; let hours = mins / 60; mins %= 60; - return format === StopWatchFormat.HMS - ? `${hours.toFixed(0)}h${pad2(mins)}m${pad2(seconds)}s` - : `${hours.toFixed(0)}:${pad2(mins)}:${pad2(seconds)}`; + return `${hours.toFixed(0)}:${pad2(mins)}:${pad2(seconds)}`; }; const img = () => atob("GBiBAAAAAAB+AAB+AAAAAAB+AAH/sAOB8AcA4A4YcAwYMBgYGBgYGBg8GBg8GBgYGBgAGAwAMA4AcAcA4AOBwAH/gAB+AAAAAAAAAA=="); @@ -64,10 +70,10 @@ run: function() { // tapped if (startTime) { durationOnPause = duration(startTime); - startTime = undefined; - unqueueRedraw(); + startTime = undefined; // this also unqueues the redraw } else { queueRedraw.call(this); + showMillis = true; startTime = Date.now(); } } diff --git a/apps/clkinfostopw/metadata.json b/apps/clkinfostopw/metadata.json index 654493e64..f33f61dbb 100644 --- a/apps/clkinfostopw/metadata.json +++ b/apps/clkinfostopw/metadata.json @@ -1,7 +1,7 @@ { "id": "clkinfostopw", "name": "Stop Watch Clockinfo", - "version":"0.02", + "version":"0.03", "description": "A simple stopwatch, shown via clockinfo", "icon": "app.png", "type": "clkinfo", @@ -10,7 +10,6 @@ "readme":"README.md", "allow_emulator": true, "storage": [ - {"name":"stopw.clkinfo.js","url":"clkinfo.js"}, - {"name":"stopw.settings.js","url":"settings.js"} + {"name":"stopw.clkinfo.js","url":"clkinfo.js"} ] } diff --git a/apps/clkinfostopw/settings.js b/apps/clkinfostopw/settings.js deleted file mode 100644 index 86bf09cdd..000000000 --- a/apps/clkinfostopw/settings.js +++ /dev/null @@ -1,24 +0,0 @@ -(function (back) { - var _a; - var SETTINGS_FILE = "clkinfostopw.setting.json"; - var storage = require("Storage"); - var settings = storage.readJSON(SETTINGS_FILE, true) || {}; - (_a = settings.format) !== null && _a !== void 0 ? _a : (settings.format = 0); - var save = function () { - storage.writeJSON(SETTINGS_FILE, settings); - }; - E.showMenu({ - "": { "title": "stopwatch" }, - "< Back": back, - "Format": { - value: settings.format, - min: 0, - max: 1, - format: function (v) { return v === 0 ? "12m34s" : "12:34"; }, - onchange: function (v) { - settings.format = v; - save(); - }, - }, - }); -});