[alarm] show alarm groups if setting is ON, fix 0.44 selectedAlarm bug

master
lauzonhomeschool 2023-11-14 21:28:59 -05:00
parent 0e4fa182eb
commit 1aa407963e
2 changed files with 41 additions and 25 deletions

View File

@ -45,6 +45,7 @@
0.40: Use substring of message when it's longer than fits the designated menu entry. 0.40: Use substring of message when it's longer than fits the designated menu entry.
0.41: Fix a menu bug affecting alarms with empty messages. 0.41: Fix a menu bug affecting alarms with empty messages.
0.42: Fix date not getting saved in event edit menu when tapping Confirm 0.42: Fix date not getting saved in event edit menu when tapping Confirm
0.43: New settings: Show confirm, Show Overflow, Show Type. 0.43: New settings: Show confirm, Show Overflow, Show Group.
0.44: Add "delete timer after expiration" setting to events. 0.44: Add "delete timer after expiration" setting to events.
0.45: Fix new alarm when selectedAlarm is undefined 0.45: Fix new alarm when selectedAlarm is undefined
0.46: Show alarm groups if the Show Group setting is ON.

View File

@ -73,39 +73,54 @@ function formatAlarmProperty(msg) {
} }
} }
function showMainMenu() { function showMainMenu(group) {
const menu = { const menu = {
"": { "title": /*LANG*/"Alarms & Timers" }, "": { "title": group ? group : /*LANG*/"Alarms & Timers" },
"< Back": () => load(), "< Back": () => !group ? load() : showMainMenu(),
/*LANG*/"New...": () => showNewMenu() /*LANG*/"New...": () => showNewMenu(group)
}; };
const getGroups = settings.showGroup && !group;
const groups = getGroups ? {} : undefined;
var showAlarm;
alarms.forEach((e, index) => { alarms.forEach((e, index) => {
menu[trimLabel(getLabel(e),40)] = { showAlarm = !settings.showGroup || (getGroups && !e.group) || (settings.showGroup && !getGroups && e.group === group);
value: e.on ? (e.timer ? iconTimerOn : iconAlarmOn) : (e.timer ? iconTimerOff : iconAlarmOff), if(showAlarm) {
onchange: () => setTimeout(e.timer ? showEditTimerMenu : showEditAlarmMenu, 10, e, index) menu[trimLabel(getLabel(e),40)] = {
}; value: e.on ? (e.timer ? iconTimerOn : iconAlarmOn) : (e.timer ? iconTimerOff : iconAlarmOff),
onchange: () => setTimeout(e.timer ? showEditTimerMenu : showEditAlarmMenu, 10, e, index, undefined, group)
};
} else if (getGroups) {
groups[e.group] = undefined;
}
}); });
menu[/*LANG*/"Advanced"] = () => showAdvancedMenu(); if (!group) {
Object.keys(groups).sort().forEach(g => menu[g] = () => showMainMenu(g));
menu[/*LANG*/"Advanced"] = () => showAdvancedMenu();
}
E.showMenu(menu); E.showMenu(menu);
} }
function showNewMenu() { function showNewMenu(group) {
E.showMenu({ const newMenu = {
"": { "title": /*LANG*/"New..." }, "": { "title": /*LANG*/"New..." },
"< Back": () => showMainMenu(), "< Back": () => showMainMenu(group),
/*LANG*/"Alarm": () => showEditAlarmMenu(undefined, undefined), /*LANG*/"Alarm": () => showEditAlarmMenu(undefined, undefined, false, null, group),
/*LANG*/"Timer": () => showEditTimerMenu(undefined, undefined), /*LANG*/"Timer": () => showEditTimerMenu(undefined, undefined),
/*LANG*/"Event": () => showEditAlarmMenu(undefined, undefined, true) /*LANG*/"Event": () => showEditAlarmMenu(undefined, undefined, true, null, group)
}); };
if (group) delete newMenu[/*LANG*/"Timer"];
E.showMenu(newMenu);
} }
function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) { function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate, group) {
var isNew = alarmIndex === undefined; var isNew = alarmIndex === undefined;
var alarm = require("sched").newDefaultAlarm(); var alarm = require("sched").newDefaultAlarm();
if (isNew && group) alarm.group = group;
if (withDate || (selectedAlarm && selectedAlarm.date)) { if (withDate || (selectedAlarm && selectedAlarm.date)) {
alarm.del = require("sched").getSettings().defaultDeleteExpiredTimers; alarm.del = require("sched").getSettings().defaultDeleteExpiredTimers;
} }
@ -127,7 +142,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
"< Back": () => { "< Back": () => {
prepareAlarmForSave(alarm, alarmIndex, time, date); prepareAlarmForSave(alarm, alarmIndex, time, date);
saveAndReload(); saveAndReload();
showMainMenu(); showMainMenu(group);
}, },
/*LANG*/"Hour": { /*LANG*/"Hour": {
value: time.h, value: time.h,
@ -171,7 +186,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
keyboard.input({text:alarm.msg}).then(result => { keyboard.input({text:alarm.msg}).then(result => {
alarm.msg = result; alarm.msg = result;
prepareAlarmForSave(alarm, alarmIndex, time, date, true); prepareAlarmForSave(alarm, alarmIndex, time, date, true);
setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate); setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate, scroll, group);
}); });
}, 100); }, 100);
} }
@ -184,7 +199,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
keyboard.input({text:alarm.group}).then(result => { keyboard.input({text:alarm.group}).then(result => {
alarm.group = result; alarm.group = result;
prepareAlarmForSave(alarm, alarmIndex, time, date, true); prepareAlarmForSave(alarm, alarmIndex, time, date, true);
setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate); setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate, scroll, group);
}); });
}, 100); }, 100);
} }
@ -202,7 +217,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
alarm.rp = repeat; alarm.rp = repeat;
alarm.dow = dow; alarm.dow = dow;
prepareAlarmForSave(alarm, alarmIndex, time, date, true); prepareAlarmForSave(alarm, alarmIndex, time, date, true);
setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate); setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate, scroll, group);
}) })
}, },
/*LANG*/"Vibrate": require("buzz_menu").pattern(alarm.vibrate, v => alarm.vibrate = v), /*LANG*/"Vibrate": require("buzz_menu").pattern(alarm.vibrate, v => alarm.vibrate = v),
@ -218,11 +233,11 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
value: alarm.hidden || false, value: alarm.hidden || false,
onchange: v => alarm.hidden = v onchange: v => alarm.hidden = v
}, },
/*LANG*/"Cancel": () => showMainMenu(), /*LANG*/"Cancel": () => showMainMenu(group),
/*LANG*/"Confirm": () => { /*LANG*/"Confirm": () => {
prepareAlarmForSave(alarm, alarmIndex, time, date); prepareAlarmForSave(alarm, alarmIndex, time, date);
saveAndReload(); saveAndReload();
showMainMenu(); showMainMenu(group);
} }
}; };
@ -244,10 +259,10 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
if (confirm) { if (confirm) {
alarms.splice(alarmIndex, 1); alarms.splice(alarmIndex, 1);
saveAndReload(); saveAndReload();
showMainMenu(); showMainMenu(group);
} else { } else {
alarm.t = require("time_utils").encodeTime(time); alarm.t = require("time_utils").encodeTime(time);
setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate); setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate, scroll, group);
} }
}); });
}; };