Optimize UI render loops with reduce in ui_helpers.js
Co-authored-by: TauNeutrino <1600410+TauNeutrino@users.noreply.github.com>
This commit is contained in:
@@ -483,6 +483,7 @@ export async function refreshFlaggedItems() {
|
|||||||
if (updated) {
|
if (updated) {
|
||||||
saveMenuCache();
|
saveMenuCache();
|
||||||
updateLastUpdatedTime(new Date().toISOString());
|
updateLastUpdatedTime(new Date().toISOString());
|
||||||
|
localStorage.setItem('kantine_flagged_items_last_checked', new Date().toISOString());
|
||||||
updateAlarmBell();
|
updateAlarmBell();
|
||||||
renderVisibleWeeks();
|
renderVisibleWeeks();
|
||||||
}
|
}
|
||||||
@@ -595,7 +596,7 @@ export async function pollFlaggedItems() {
|
|||||||
await new Promise(r => setTimeout(r, 200));
|
await new Promise(r => setTimeout(r, 200));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
localStorage.setItem('kantine_last_checked', new Date().toISOString());
|
localStorage.setItem('kantine_flagged_items_last_checked', new Date().toISOString());
|
||||||
updateAlarmBell();
|
updateAlarmBell();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ export function createDayCard(day) {
|
|||||||
header.className = 'card-header';
|
header.className = 'card-header';
|
||||||
const dateStr = cardDate.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit' });
|
const dateStr = cardDate.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit' });
|
||||||
|
|
||||||
const badgesHtml = menuBadges.map(code => `<span class="menu-code-badge">${code}</span>`).join('');
|
const badgesHtml = menuBadges.reduce((acc, code) => acc + `<span class="menu-code-badge">${code}</span>`, '');
|
||||||
|
|
||||||
let headerClass = '';
|
let headerClass = '';
|
||||||
const hasAnyOrder = day.items && day.items.some(item => {
|
const hasAnyOrder = day.items && day.items.some(item => {
|
||||||
@@ -358,10 +358,7 @@ export function createDayCard(day) {
|
|||||||
|
|
||||||
let tagsHtml = '';
|
let tagsHtml = '';
|
||||||
if (matchedTags.length > 0) {
|
if (matchedTags.length > 0) {
|
||||||
let badges = '';
|
const badges = matchedTags.reduce((acc, t) => acc + `<span class="tag-badge-small"><span class="material-icons-round" style="font-size:10px;margin-right:2px">star</span>${escapeHtml(t)}</span>`, '');
|
||||||
for (const t of matchedTags) {
|
|
||||||
badges += `<span class="tag-badge-small"><span class="material-icons-round" style="font-size:10px;margin-right:2px">star</span>${escapeHtml(t)}</span>`;
|
|
||||||
}
|
|
||||||
tagsHtml = `<div class="matched-tags">${badges}</div>`;
|
tagsHtml = `<div class="matched-tags">${badges}</div>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -732,15 +729,21 @@ export function updateAlarmBell() {
|
|||||||
if (anyAvailable) break;
|
if (anyAvailable) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
let lastUpdatedStr = localStorage.getItem('kantine_last_checked');
|
const lastCheckedStr = localStorage.getItem('kantine_last_checked');
|
||||||
|
const flaggedLastCheckedStr = localStorage.getItem('kantine_flagged_items_last_checked');
|
||||||
|
|
||||||
|
let latestTime = 0;
|
||||||
|
if (lastCheckedStr) latestTime = Math.max(latestTime, new Date(lastCheckedStr).getTime());
|
||||||
|
if (flaggedLastCheckedStr) latestTime = Math.max(latestTime, new Date(flaggedLastCheckedStr).getTime());
|
||||||
|
|
||||||
let timeStr = 'gerade eben';
|
let timeStr = 'gerade eben';
|
||||||
if (!lastUpdatedStr) {
|
if (latestTime === 0) {
|
||||||
lastUpdatedStr = new Date().toISOString();
|
const now = new Date().toISOString();
|
||||||
localStorage.setItem('kantine_last_checked', lastUpdatedStr);
|
localStorage.setItem('kantine_last_checked', now);
|
||||||
|
latestTime = new Date(now).getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
const lastUpdated = new Date(lastUpdatedStr);
|
timeStr = getRelativeTime(new Date(latestTime));
|
||||||
timeStr = getRelativeTime(lastUpdated);
|
|
||||||
|
|
||||||
bellBtn.title = `Zuletzt geprüft: ${timeStr}`;
|
bellBtn.title = `Zuletzt geprüft: ${timeStr}`;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user