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) {
|
||||
saveMenuCache();
|
||||
updateLastUpdatedTime(new Date().toISOString());
|
||||
localStorage.setItem('kantine_flagged_items_last_checked', new Date().toISOString());
|
||||
updateAlarmBell();
|
||||
renderVisibleWeeks();
|
||||
}
|
||||
@@ -595,7 +596,7 @@ export async function pollFlaggedItems() {
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -242,7 +242,7 @@ export function createDayCard(day) {
|
||||
header.className = 'card-header';
|
||||
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 = '';
|
||||
const hasAnyOrder = day.items && day.items.some(item => {
|
||||
@@ -358,10 +358,7 @@ export function createDayCard(day) {
|
||||
|
||||
let tagsHtml = '';
|
||||
if (matchedTags.length > 0) {
|
||||
let badges = '';
|
||||
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>`;
|
||||
}
|
||||
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>`, '');
|
||||
tagsHtml = `<div class="matched-tags">${badges}</div>`;
|
||||
}
|
||||
|
||||
@@ -732,15 +729,21 @@ export function updateAlarmBell() {
|
||||
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';
|
||||
if (!lastUpdatedStr) {
|
||||
lastUpdatedStr = new Date().toISOString();
|
||||
localStorage.setItem('kantine_last_checked', lastUpdatedStr);
|
||||
if (latestTime === 0) {
|
||||
const now = new Date().toISOString();
|
||||
localStorage.setItem('kantine_last_checked', now);
|
||||
latestTime = new Date(now).getTime();
|
||||
}
|
||||
|
||||
const lastUpdated = new Date(lastUpdatedStr);
|
||||
timeStr = getRelativeTime(lastUpdated);
|
||||
timeStr = getRelativeTime(new Date(latestTime));
|
||||
|
||||
bellBtn.title = `Zuletzt geprüft: ${timeStr}`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user