95 lines
No EOL
4 KiB
JavaScript
95 lines
No EOL
4 KiB
JavaScript
function updateTimeAndStatus() {
|
|
const now = new Date();
|
|
const timeString = now.toLocaleTimeString('de-DE', {
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
hour12: false
|
|
});
|
|
|
|
// Update time display
|
|
const timeDisplay = document.getElementById('current-time');
|
|
if (timeDisplay) {
|
|
timeDisplay.textContent = timeString;
|
|
}
|
|
|
|
fetch('/api/check-open-status')
|
|
.then(response => response.json())
|
|
.then(status => {
|
|
const statusBar = document.getElementById('status-bar');
|
|
const statusText = document.getElementById('status-text');
|
|
const deliveryText = document.querySelector('.delivery-text');
|
|
|
|
if (statusBar && statusText) {
|
|
statusBar.className = status.isOpen
|
|
? 'bg-status-green transition-colors duration-300'
|
|
: 'bg-status-red transition-colors duration-300';
|
|
|
|
const textOpen = statusText.dataset.textOpen;
|
|
const textClosed = statusText.dataset.textClosed;
|
|
statusText.textContent = status.isOpen ? textOpen : textClosed;
|
|
}
|
|
|
|
// Debug information
|
|
const debugInfo = document.getElementById('debug-info');
|
|
if (debugInfo && !status.isOpen) {
|
|
const nextOpen = document.getElementById('next-open');
|
|
const currentDay = document.getElementById('current-day');
|
|
|
|
if (currentDay) {
|
|
currentDay.textContent = now.toLocaleDateString('de-DE', { weekday: 'long' });
|
|
}
|
|
|
|
if (nextOpen) {
|
|
const hoursRows = document.querySelectorAll('.hours-row');
|
|
let nextOpenTime = null;
|
|
let foundToday = false;
|
|
|
|
// First check today's remaining times
|
|
hoursRows.forEach(row => {
|
|
if (row.dataset.day === status.currentDay) {
|
|
const openTime = row.dataset.open;
|
|
if (openTime > timeString) {
|
|
nextOpenTime = `Today at ${openTime}`;
|
|
foundToday = true;
|
|
}
|
|
}
|
|
});
|
|
|
|
// If no times found today, find next day's opening
|
|
if (!foundToday) {
|
|
hoursRows.forEach(row => {
|
|
const dayIndex = parseInt(row.dataset.dayIndex || 0);
|
|
const currentDayIndex = now.getDay();
|
|
|
|
if (dayIndex > currentDayIndex || (dayIndex === 0 && currentDayIndex !== 0)) {
|
|
const openTime = row.dataset.open;
|
|
const dayName = row.dataset.dayName;
|
|
if (!nextOpenTime) {
|
|
nextOpenTime = `${dayName} at ${openTime}`;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
nextOpen.textContent = nextOpenTime || 'Check opening hours';
|
|
}
|
|
}
|
|
|
|
// Update other elements
|
|
if (deliveryText) {
|
|
deliveryText.className = status.isOpen
|
|
? 'delivery-text text-status-green'
|
|
: 'delivery-text text-status-red';
|
|
}
|
|
|
|
document.querySelectorAll('.hours-row').forEach(row => {
|
|
const isCurrentDay = row.dataset.day === status.currentDay;
|
|
row.classList.toggle('border-2', isCurrentDay && status.isOpen);
|
|
row.classList.toggle('border-status-green', isCurrentDay && status.isOpen);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Update immediately and then every minute
|
|
updateTimeAndStatus();
|
|
setInterval(updateTimeAndStatus, 60000); |