import wixData from 'wix-data'; import { session } from 'wix-storage'; $w.onReady(function () { // Dropdown vorbereiten setupWeekDropdown(); // Wenn Dropdown geändert wird: $w('#wochenDropdown').onChange(() => { const selectedWeek = $w('#wochenDropdown').value; const dates = getDatesFromWeek(selectedWeek); loadWeeklyOverview(dates.start, dates.end); }); }); function setupWeekDropdown() { let options = []; const currentWeek = getWeekNumber(new Date()); for (let i = 1; i <= 52; i++) { options.push({ label: `Woche ${i}`, value: i.toString() }); } $w('#wochenDropdown').options = options; $w('#wochenDropdown').value = currentWeek.toString(); // Beim Laden direkt aktuelle Woche zeigen const dates = getDatesFromWeek(currentWeek); loadWeeklyOverview(dates.start, dates.end); } function getWeekNumber(d) { d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate())); const dayNum = d.getUTCDay() || 7; d.setUTCDate(d.getUTCDate() + 4 - dayNum); const yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1)); return Math.ceil((((d - yearStart) / 86400000) + 1)/7); } function getDatesFromWeek(week) { const year = new Date().getFullYear(); const simple = new Date(year, 0, 1 + (week - 1) * 7); const dayOfWeek = simple.getDay(); const start = new Date(simple); if (dayOfWeek <= 4) start.setDate(simple.getDate() - simple.getDay() + 1); else start.setDate(simple.getDate() + 8 - simple.getDay()); const end = new Date(start); end.setDate(start.getDate() + 6); start.setHours(0,0,0,0); end.setHours(23,59,59,999); return { start, end }; } function loadWeeklyOverview(startDate, endDate) { wixData.query("Planung") // Deine Sammlung .between("Datum", startDate, endDate) .find() .then((results) => { const weeklyData = {}; results.items.forEach((item) => { const name = item.Name; if (!weeklyData[name]) { weeklyData[name] = { stunden: 0, snackVormittag: 0, mittagessen: 0, snackNachmittag: 0, abendessen: 0, uebernachtung: 0 }; } if (item.Stunden) weeklyData[name].stunden += item.Stunden; if (item.SnackVormittag === "Yes") weeklyData[name].snackVormittag++; if (item.Mittagessen === "Yes") weeklyData[name].mittagessen++; if (item.SnackNachmittag === "Yes") weeklyData[name].snackNachmittag++; if (item.Abendessen === "Yes") weeklyData[name].abendessen++; if (item.Uebernachtung === "Yes") weeklyData[name].uebernachtung++; }); displayTable(weeklyData); }); } function displayTable(data) { let html = "
"; html += "
Name
Stunden
Snack VM
Mittagessen
Snack NM
Abendessen
Übernachtung
"; let totalStunden = 0; Object.keys(data).sort().forEach(name => { const d = data[name]; totalStunden += d.stunden; html += `
${name}
${d.stunden.toFixed(2)}
${d.snackVormittag}
${d.mittagessen}
${d.snackNachmittag}
${d.abendessen}
${d.uebernachtung}
`; }); html += `
Total
${totalStunden.toFixed(2)}
`; html += "
"; $w("#htmlContainer1").html = html; }