Compare commits
4 Commits
467e48e1da
...
v1.4.21
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5caaf7dcad | ||
|
|
122c1078cf | ||
|
|
ff48befb8a | ||
|
|
9391dfd8d7 |
@@ -1,3 +1,9 @@
|
|||||||
|
## v1.4.21
|
||||||
|
- ✨ **UX**: Der Glow-Effekt des „Nächste Woche"-Buttons bleibt nun aktiv, solange Menüdaten vorhanden aber noch keine Bestellungen getätigt wurden. Verschwindet automatisch nach der ersten Bestellung.
|
||||||
|
|
||||||
|
## v1.4.20
|
||||||
|
- 🐛 **Bugfix**: Der Badge-Counter im „Nächste Woche"-Tab wird jetzt sofort nach einer Bestellung oder Stornierung aktualisiert.
|
||||||
|
|
||||||
## v1.4.19
|
## v1.4.19
|
||||||
- 🎨 **Feature**: Eigenes Favicon für die Installer-Seite hinzugefügt (Dreieck + Gabel & Messer). Wird beim Drag & Drop in die Lesezeichenleiste als Icon übernommen.
|
- 🎨 **Feature**: Eigenes Favicon für die Installer-Seite hinzugefügt (Dreieck + Gabel & Messer). Wird beim Drag & Drop in die Lesezeichenleiste als Icon übernommen.
|
||||||
|
|
||||||
|
|||||||
2
dist/bookmarklet-payload.js
vendored
2
dist/bookmarklet-payload.js
vendored
File diff suppressed because one or more lines are too long
2
dist/bookmarklet.txt
vendored
2
dist/bookmarklet.txt
vendored
File diff suppressed because one or more lines are too long
20
dist/install.html
vendored
20
dist/install.html
vendored
File diff suppressed because one or more lines are too long
24
dist/kantine-standalone.html
vendored
24
dist/kantine-standalone.html
vendored
@@ -2021,7 +2021,7 @@ body {
|
|||||||
<div class="brand">
|
<div class="brand">
|
||||||
<span class="material-icons-round logo-icon">restaurant_menu</span>
|
<span class="material-icons-round logo-icon">restaurant_menu</span>
|
||||||
<div class="header-left">
|
<div class="header-left">
|
||||||
<h1>Kantinen Übersicht <small class="version-tag" style="font-size: 0.6em; opacity: 0.7; font-weight: 400; cursor: pointer;" title="Klick für Versionsmenü">v1.4.19</small></h1>
|
<h1>Kantinen Übersicht <small class="version-tag" style="font-size: 0.6em; opacity: 0.7; font-weight: 400; cursor: pointer;" title="Klick für Versionsmenü">v1.4.21</small></h1>
|
||||||
<div id="last-updated-subtitle" class="subtitle"></div>
|
<div id="last-updated-subtitle" class="subtitle"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-group" style="margin-left: 1rem;">
|
<div class="nav-group" style="margin-left: 1rem;">
|
||||||
@@ -2163,7 +2163,7 @@ body {
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div style="margin-bottom: 1rem;">
|
<div style="margin-bottom: 1rem;">
|
||||||
<strong>Aktuell:</strong> <span id="version-current">v1.4.19</span>
|
<strong>Aktuell:</strong> <span id="version-current">v1.4.21</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="dev-toggle">
|
<div class="dev-toggle">
|
||||||
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;">
|
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;">
|
||||||
@@ -2531,6 +2531,7 @@ body {
|
|||||||
}
|
}
|
||||||
console.log(`Fetched ${results.length} orders, mapped active ones.`);
|
console.log(`Fetched ${results.length} orders, mapped active ones.`);
|
||||||
renderVisibleWeeks();
|
renderVisibleWeeks();
|
||||||
|
updateNextWeekBadge();
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching orders:', error);
|
console.error('Error fetching orders:', error);
|
||||||
@@ -3596,12 +3597,17 @@ body {
|
|||||||
badge.classList.add('has-highlights');
|
badge.classList.add('has-highlights');
|
||||||
}
|
}
|
||||||
|
|
||||||
// FR-092: Highlight Next Week Button when new data arrives
|
// FR-092: Glow Next Week button while data exists but no orders placed
|
||||||
const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`;
|
if (daysWithOrders === 0) {
|
||||||
if (!localStorage.getItem(storageKey)) {
|
|
||||||
localStorage.setItem(storageKey, 'true');
|
|
||||||
btnNextWeek.classList.add('new-week-available');
|
btnNextWeek.classList.add('new-week-available');
|
||||||
showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info');
|
// One-time toast notification when new data first arrives
|
||||||
|
const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`;
|
||||||
|
if (!localStorage.getItem(storageKey)) {
|
||||||
|
localStorage.setItem(storageKey, 'true');
|
||||||
|
showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
btnNextWeek.classList.remove('new-week-available');
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (badge) {
|
} else if (badge) {
|
||||||
@@ -4010,7 +4016,7 @@ body {
|
|||||||
|
|
||||||
// Periodic update check (runs on init + every hour)
|
// Periodic update check (runs on init + every hour)
|
||||||
async function checkForUpdates() {
|
async function checkForUpdates() {
|
||||||
const currentVersion = 'v1.4.19';
|
const currentVersion = 'v1.4.21';
|
||||||
const devMode = localStorage.getItem('kantine_dev_mode') === 'true';
|
const devMode = localStorage.getItem('kantine_dev_mode') === 'true';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -4051,7 +4057,7 @@ body {
|
|||||||
const modal = document.getElementById('version-modal');
|
const modal = document.getElementById('version-modal');
|
||||||
const container = document.getElementById('version-list-container');
|
const container = document.getElementById('version-list-container');
|
||||||
const devToggle = document.getElementById('dev-mode-toggle');
|
const devToggle = document.getElementById('dev-mode-toggle');
|
||||||
const currentVersion = 'v1.4.19';
|
const currentVersion = 'v1.4.21';
|
||||||
|
|
||||||
if (!modal) return;
|
if (!modal) return;
|
||||||
modal.classList.remove('hidden');
|
modal.classList.remove('hidden');
|
||||||
|
|||||||
16
kantine.js
16
kantine.js
@@ -581,6 +581,7 @@
|
|||||||
}
|
}
|
||||||
console.log(`Fetched ${results.length} orders, mapped active ones.`);
|
console.log(`Fetched ${results.length} orders, mapped active ones.`);
|
||||||
renderVisibleWeeks();
|
renderVisibleWeeks();
|
||||||
|
updateNextWeekBadge();
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching orders:', error);
|
console.error('Error fetching orders:', error);
|
||||||
@@ -1646,12 +1647,17 @@
|
|||||||
badge.classList.add('has-highlights');
|
badge.classList.add('has-highlights');
|
||||||
}
|
}
|
||||||
|
|
||||||
// FR-092: Highlight Next Week Button when new data arrives
|
// FR-092: Glow Next Week button while data exists but no orders placed
|
||||||
const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`;
|
if (daysWithOrders === 0) {
|
||||||
if (!localStorage.getItem(storageKey)) {
|
|
||||||
localStorage.setItem(storageKey, 'true');
|
|
||||||
btnNextWeek.classList.add('new-week-available');
|
btnNextWeek.classList.add('new-week-available');
|
||||||
showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info');
|
// One-time toast notification when new data first arrives
|
||||||
|
const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`;
|
||||||
|
if (!localStorage.getItem(storageKey)) {
|
||||||
|
localStorage.setItem(storageKey, 'true');
|
||||||
|
showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
btnNextWeek.classList.remove('new-week-available');
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (badge) {
|
} else if (badge) {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
v1.4.19
|
v1.4.21
|
||||||
|
|||||||
Reference in New Issue
Block a user