mirror of https://github.com/espruino/BangleApps
handle AM/PM time in target menu, add yesterday/today/tomorrow to improve readability
parent
97040fdd12
commit
9eb19d7010
|
@ -112,6 +112,13 @@ function formatDateTime(date, dateFormat, time24, showSeconds) {
|
||||||
return formattedDateTime;
|
return formattedDateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatHourToAMPM(h){
|
||||||
|
var ampm = (h >= 12 ? 'PM' : 'AM');
|
||||||
|
var h_ampm = h % 12;
|
||||||
|
h_ampm = (h_ampm == 0 ? 12 : h_ampm);
|
||||||
|
return `${h_ampm} ${ampm}`
|
||||||
|
}
|
||||||
|
|
||||||
function howManyDaysInMonth(month, year) {
|
function howManyDaysInMonth(month, year) {
|
||||||
return new Date(year, month, 0).getDate();
|
return new Date(year, month, 0).getDate();
|
||||||
}
|
}
|
||||||
|
@ -125,44 +132,6 @@ function handleExceedingDay() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTarget(set) {
|
|
||||||
if (set) {
|
|
||||||
target = new Date(
|
|
||||||
data.target.Y,
|
|
||||||
data.target.M - 1,
|
|
||||||
data.target.D,
|
|
||||||
data.target.h,
|
|
||||||
data.target.m,
|
|
||||||
data.target.s
|
|
||||||
);
|
|
||||||
data.target.isSet = true;
|
|
||||||
} else {
|
|
||||||
target = new Date();
|
|
||||||
Object.assign(
|
|
||||||
data,
|
|
||||||
{
|
|
||||||
target: {
|
|
||||||
isSet: false,
|
|
||||||
Y: now.getFullYear(),
|
|
||||||
M: now.getMonth() + 1, // Month is zero-based, so add 1
|
|
||||||
D: now.getDate(),
|
|
||||||
h: now.getHours(),
|
|
||||||
m: now.getMinutes(),
|
|
||||||
s: now.getSeconds()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
writeData();
|
|
||||||
}
|
|
||||||
|
|
||||||
var target;
|
|
||||||
setTarget(data.target.isSet);
|
|
||||||
|
|
||||||
var drawTimeout;
|
|
||||||
var queueMillis = 1000;
|
|
||||||
|
|
||||||
var menu = {
|
var menu = {
|
||||||
"": {
|
"": {
|
||||||
"title": "Set target",
|
"title": "Set target",
|
||||||
|
@ -202,7 +171,7 @@ var menu = {
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
data.target.h = v;
|
data.target.h = v;
|
||||||
},
|
},
|
||||||
format: function (v) { return pad2(v); }
|
format: function (v) {return(settings.time24 ? pad2(v) : formatHourToAMPM(v))}
|
||||||
},
|
},
|
||||||
'Minutes': {
|
'Minutes': {
|
||||||
value: data.target.m,
|
value: data.target.m,
|
||||||
|
@ -240,6 +209,51 @@ var menu = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function setTarget(set) {
|
||||||
|
if (set) {
|
||||||
|
target = new Date(
|
||||||
|
data.target.Y,
|
||||||
|
data.target.M - 1,
|
||||||
|
data.target.D,
|
||||||
|
data.target.h,
|
||||||
|
data.target.m,
|
||||||
|
data.target.s
|
||||||
|
);
|
||||||
|
data.target.isSet = true;
|
||||||
|
} else {
|
||||||
|
target = new Date();
|
||||||
|
Object.assign(
|
||||||
|
data,
|
||||||
|
{
|
||||||
|
target: {
|
||||||
|
isSet: false,
|
||||||
|
Y: now.getFullYear(),
|
||||||
|
M: now.getMonth() + 1, // Month is zero-based, so add 1
|
||||||
|
D: now.getDate(),
|
||||||
|
h: now.getHours(),
|
||||||
|
m: now.getMinutes(),
|
||||||
|
s: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
menu.Day.value = data.target.D;
|
||||||
|
menu.Month.value = data.target.M;
|
||||||
|
menu.Year.value = data.target.Y;
|
||||||
|
menu.Hours.value = data.target.h;
|
||||||
|
menu.Minutes.value = data.target.m;
|
||||||
|
menu.Seconds.value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
writeData();
|
||||||
|
}
|
||||||
|
|
||||||
|
var target;
|
||||||
|
setTarget(data.target.isSet);
|
||||||
|
|
||||||
|
var drawTimeout;
|
||||||
|
var queueMillis = 1000;
|
||||||
|
|
||||||
|
|
||||||
function queueDraw() {
|
function queueDraw() {
|
||||||
if (drawTimeout) clearTimeout(drawTimeout);
|
if (drawTimeout) clearTimeout(drawTimeout);
|
||||||
var delay = queueMillis - (Date.now() % queueMillis);
|
var delay = queueMillis - (Date.now() % queueMillis);
|
||||||
|
@ -359,10 +373,19 @@ function diffToTarget() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function draw() {
|
function draw() {
|
||||||
var nowFormatted = formatDateTime(new Date(), settings.dateFormat, settings.time24, temp_displaySeconds);
|
var now = new Date();
|
||||||
|
var nowFormatted = formatDateTime(now, settings.dateFormat, settings.time24, temp_displaySeconds);
|
||||||
var targetFormatted = formatDateTime(target, settings.dateFormat, settings.time24, true);
|
var targetFormatted = formatDateTime(target, settings.dateFormat, settings.time24, true);
|
||||||
var diff = diffToTarget();
|
var diff = diffToTarget();
|
||||||
|
|
||||||
|
const nowY = now.getFullYear();
|
||||||
|
const nowM = now.getMonth();
|
||||||
|
const nowD = now.getDate();
|
||||||
|
|
||||||
|
const targetY = target.getFullYear();
|
||||||
|
const targetM = target.getMonth();
|
||||||
|
const targetD = target.getDate();
|
||||||
|
|
||||||
var diffYMD;
|
var diffYMD;
|
||||||
if (settings.displayMonthsYears)
|
if (settings.displayMonthsYears)
|
||||||
diffYMD = `${diff.sign}${diff.Y}Y ${diff.M}M ${diff.D}D`;
|
diffYMD = `${diff.sign}${diff.Y}Y ${diff.M}M ${diff.D}D`;
|
||||||
|
@ -391,9 +414,23 @@ function draw() {
|
||||||
g.drawString(">", 4, y + 3);
|
g.drawString(">", 4, y + 3);
|
||||||
|
|
||||||
if (data.target.isSet) {
|
if (data.target.isSet) {
|
||||||
// draw target date
|
|
||||||
g.setFont("Vector", SMALL_FONT_SIZE).setFontAlign(-1, -1).setColor(g.theme.dark ? COLOUR_ORANGE : COLOUR_RED);
|
g.setFont("Vector", SMALL_FONT_SIZE).setFontAlign(-1, -1).setColor(g.theme.dark ? COLOUR_ORANGE : COLOUR_RED);
|
||||||
|
|
||||||
|
if (nowY == targetY && nowM == targetM && nowD == targetD) {
|
||||||
|
// today
|
||||||
|
g.drawString("TODAY", 4 + 16 + 6, y);
|
||||||
|
} else if (nowY == targetY && nowM == targetM && nowD - targetD == 1) {
|
||||||
|
// yesterday
|
||||||
|
g.drawString("YESTERDAY", 4 + 16 + 6, y);
|
||||||
|
} else if (nowY == targetY && nowM == targetM && targetD - nowD == 1) {
|
||||||
|
// tomorrow
|
||||||
|
g.drawString("TOMORROW", 4 + 16 + 6, y);
|
||||||
|
} else {
|
||||||
|
// general case
|
||||||
|
// draw target date
|
||||||
g.drawString(targetFormatted.date, 4 + 16 + 6, y);
|
g.drawString(targetFormatted.date, 4 + 16 + 6, y);
|
||||||
|
}
|
||||||
|
|
||||||
y += SMALL_FONT_SIZE;
|
y += SMALL_FONT_SIZE;
|
||||||
|
|
||||||
// draw target time
|
// draw target time
|
||||||
|
|
Loading…
Reference in New Issue