1
0
Fork 0

fixes #1271 & some code rework

+ moved settings-helper method def to load settings method
+ settingsfile as const
+ isBangle1 via HWVERSION==1
master
Danny 2022-01-12 23:57:44 +01:00
parent 910c3c0b5b
commit 223f6b6b81
5 changed files with 33 additions and 20 deletions

View File

@ -4279,7 +4279,7 @@
{
"id": "antonclk",
"name": "Anton Clock",
"version": "0.05",
"version": "0.06",
"description": "A clock using the bold Anton font, optionally showing seconds and date in ISO-8601 format.",
"readme":"README.md",
"icon": "app.png",

View File

@ -4,4 +4,7 @@
0.04: Clock can optionally show seconds, date optionally in ISO-8601 format, weekdays and uppercase configurable, too.
0.05: Clock can optionally show ISO-8601 calendar weeknumber (default: Off)
when weekday name "Off": week #:<num>
when weekday name "On": weekday name is cut at 6th position and .#<week num> is added
when weekday name "On": weekday name is cut at 6th position and .#<week num> is added
0.06: fixes #1271 - wrong settings name
when weekday name and calendar weeknumber are on then display is <weekday short> #<calweek>
week is buffered until date or timezone changes

View File

@ -40,9 +40,9 @@ The main menu contains several settings covering Anton clock in general.
* **Show Weekday** - Weekday is shown in the time presentation without seconds.
Weekday name depends on the current locale.
If seconds are shown, the weekday is never shown as there is not enough space on the watch face.
* **Show Weeknumber** - Week-number (ISO-8601) is shown. (default: Off)
If "Show Weekday" is "Off" the week-number is displayed as "week #:<num>".
If "Show Weekday" is "On" the weekday name is cut at 6th position and suffixed with ".#<week num>".
* **Show CalWeek** - Week-number (ISO-8601) is shown. (default: Off)
If "Show Weekday" is "Off" displays the week-number as "week #<num>".
If "Show Weekday" is "On" displays "weekday name short" with " #<num>" .
If seconds are shown, the week number is never shown as there is not enough space on the watch face.
* **Vector font** - Use the built-in vector font for dates and weekday.
This can improve readability.

View File

@ -1,6 +1,6 @@
// Clock with large digits using the "Anton" bold font
var SETTINGSFILE = "antonclk.json";
const SETTINGSFILE = "antonclk.json";
Graphics.prototype.setFontAnton = function(scale) {
// Actual height 69 (68 - 0)
@ -28,7 +28,7 @@ var drawTimeout;
var queueMillis = 1000;
var secondsScreen = true;
var isBangle1 = (g.getWidth() == 240);
var isBangle1 = (process.env.HWVERSION == 1);
//For development purposes
/*
@ -50,13 +50,11 @@ require('Storage').writeJSON(SETTINGSFILE, {
require('Storage').erase(SETTINGSFILE);
*/
// Helper method for loading the settings
function def(value, def) {
return (value !== undefined ? value : def);
}
// Load settings
function loadSettings() {
// Helper function default setting
function def (value, def) {return value !== undefined ? value : def;}
var settings = require('Storage').readJSON(SETTINGSFILE, true) || {};
secondsMode = def(settings.secondsMode, "Never");
secondsColoured = def(settings.secondsColoured, true);
@ -104,7 +102,14 @@ function isoStr(date) {
return date.getFullYear() + "-" + ("0" + (date.getMonth() + 1)).substr(-2) + "-" + ("0" + date.getDate()).substr(-2);
}
var calWeekBuffer = [false,false,false]; //buffer tz, date, week no (once calculated until other tz or date is requested)
function ISO8601calWeek(date) { //copied from: https://gist.github.com/IamSilviu/5899269#gistcomment-3035480
console.log(date);
dateNoTime = date; dateNoTime.setHours(0,0,0,0);
console.log(dateNoTime);
if (calWeekBuffer[0] === date.getTimezoneOffset() && calWeekBuffer[1] === dateNoTime) return calWeekBuffer[2];
calWeekBuffer[0] = date.getTimezoneOffset();
calWeekBuffer[1] = dateNoTime;
var tdt = new Date(date.valueOf());
var dayn = (date.getDay() + 6) % 7;
tdt.setDate(tdt.getDate() - dayn + 3);
@ -113,7 +118,8 @@ function ISO8601calWeek(date) { //copied from: https://gist.github.com/IamSilviu
if (tdt.getDay() !== 4) {
tdt.setMonth(0, 1 + ((4 - tdt.getDay()) + 7) % 7);
}
return 1 + Math.ceil((firstThursday - tdt) / 604800000);
calWeekBuffer[2] = 1 + Math.ceil((firstThursday - tdt) / 604800000);
return calWeekBuffer[2];
}
function doColor() {
@ -186,13 +192,17 @@ function draw() {
else
g.setFont("6x8", 2);
g.drawString(dateStr, x, y);
if (weekDay || calWeek) {
var dowwumStr = require("locale").dow(date);
if (calWeek || weekDay) {
var dowcwStr = "";
if (calWeek)
dowwumStr = (weekDay ? dowwumStr.substr(0,Math.min(dowwumStr.length,6)) + (dowwumStr.length>=6 ? "." : "") : "week ") + "#" + ISO8601calWeek(date); //TODO: locale for "week"
dowcwStr = " #" + ("0" + ISO8601calWeek(date)).substring(-2);
if (weekDay)
dowcwStr = require("locale").dow(date, calWeek ? 1 : 0) + dowcwStr; //weekDay e.g. Monday or weekDayShort #<calWeek> e.g. Mon #01
else //week #01
dowcwStr = /*LANG*/"week" + dowcwStr;
if (upperCase)
dowwumStr = dowwumStr.toUpperCase();
g.drawString(dowwumStr, x, y + (vectorFont ? 26 : 16));
dowcwStr = dowcwStr.toUpperCase();
g.drawString(dowcwStr, x, y + (vectorFont ? 26 : 16));
}
}

View File

@ -48,10 +48,10 @@
}
},
"Show Weeknumber": {
value: (settings.weekNum !== undefined ? settings.weekNum : true),
value: (settings.calWeek !== undefined ? settings.calWeek : false),
format: v => v ? "On" : "Off",
onchange: v => {
settings.weekNum = v;
settings.calWeek = v;
writeSettings();
}
},