Show read-only server reading hours in settings

This commit is contained in:
Codex committed 2026-10-14 22:42:54 +02:00
1 parent de8e7ed988
commit ddd9c62c40
9 files changed
+89 -7

No files matched your search

+11 -1
View File
@@ -3,6 +3,7 @@
// Two navigation levels; scraper tabs stay within their section, not another menu.
const SETTINGS_SECTIONS = [
{ id: 'user/reading', group: 'User', title: 'Reading', hint: 'Reader modes, page spacing and zoom.' },
{ id: 'user/reading-hours', group: 'User', title: 'Reading hours', hint: 'When this server allows chapter reading.' },
{ id: 'user/reading-time', group: 'User', title: 'Reading time & privacy', hint: 'Your clock, Reading Story and personal data.' },
{ id: 'user/notifications', group: 'User', title: 'Notifications', hint: 'Chapter alerts and your optional webhook.' },
{ id: 'user/account', group: 'User', title: 'Account', hint: 'Your account and password.' },
@@ -15,6 +16,15 @@ const SETTINGS_SECTIONS = [
{ id: 'admin/health', group: 'Admin', title: 'Service health', hint: 'Service status, incidents and recovery.', href: 'health.html' },
];
const SCRAPER_TABS = ['activity', 'queue', 'updates', 'sources'];
const READING_DAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
function readingDayText(schedule, index) {
const previous = (index + 6) % 7;
const carried = schedule.days[previous].filter(([start, end]) => end < start)
.map(([, end]) => `00:00–${end} (from ${READING_DAYS[previous]})`);
const starting = schedule.days[index].map(([start, end]) => `${start}–${end}${end < start ? ' (next day)' : ''}`);
return [...carried, ...starting].join(' · ') || 'Closed all day';
}
function settingsRoute(hash, admin) {
const parts = String(hash || '').replace(/^#/, '').split('/');
@@ -59,4 +69,4 @@ function settingsShell(me, active = 'user/reading') {
return { content, titleRow, select };
}
if (typeof module !== 'undefined') module.exports = { SETTINGS_SECTIONS, SCRAPER_TABS, settingsRoute };
if (typeof module !== 'undefined') module.exports = { SETTINGS_SECTIONS, SCRAPER_TABS, settingsRoute, readingDayText };