function renderRooms(rooms) { const grid = document.getElementById('rooms-grid'); grid.innerHTML = ''; const isManualSort = document.getElementById('sort-select').value === 'manual' && currentFilterStatus === 'all' && !isSelectMode; rooms.forEach(room => { const progress = getRoomProgress(room); let statusBadgeColor = 'bg-slate-700 text-slate-300'; let ampelBorder = 'border-t-4 border-t-red-500 border-slate-700 shadow-red-500/5'; if (room.status === 'In Arbeit') { statusBadgeColor = 'bg-amber-500/20 text-amber-400 border border-amber-500/30'; ampelBorder = 'border-t-4 border-t-amber-500 border-slate-700 shadow-amber-500/5'; } else if (room.status === 'Fertig') { statusBadgeColor = 'bg-emerald-500/20 text-emerald-400 border border-emerald-500/30'; ampelBorder = 'border-2 border-emerald-500 shadow-emerald-500/20 shadow-lg'; } if (room.is_pinned) { ampelBorder += ' ring-1 ring-amber-400'; } const card = document.createElement('div'); card.dataset.id = room.id; const canDrag = isManualSort; card.draggable = canDrag; card.className = `bg-slate-800 ${ampelBorder} rounded-xl p-5 transition cursor-pointer flex flex-col justify-between shadow-lg relative group`; card.onclick = (e) => { if (e.target.closest('.pin-btn') || e.target.closest('.select-checkbox-container')) return; if (isSelectMode) { toggleRoomSelection(room.id, e); } else { openModal(room); } }; if (canDrag) { card.addEventListener('dragstart', handleDragStart); card.addEventListener('dragover', handleDragOver); card.addEventListener('drop', handleDrop); card.addEventListener('dragend', handleDragEnd); } const isChecked = selectedRoomIds.has(room.id); card.innerHTML = `
Keine Aufgaben eingetragen. Fügen Sie oben eine neue Aufgabe hinzu.
'; return; } const adminUser = isAdmin(); tasks.forEach(task => { const isUnassigned = !task.assigned_to; let assigneeOptions = ``; allProfiles.forEach(p => { if (p.alias) { const selected = (task.assigned_to === p.id) ? 'selected' : ''; assigneeOptions += ``; } }); const rewardAmount = parseFloat(task.reward_amount || 0); let statusBadgeHTML = ''; if (rewardAmount > 0) { if (task.is_completed && !task.is_approved) { statusBadgeHTML = `💰 ${rewardAmount.toFixed(2)} € (Prüfung)`; } else if (task.is_paid) { statusBadgeHTML = `✅ Ausbezahlt`; } else if (task.is_approved) { statusBadgeHTML = `💰 ${rewardAmount.toFixed(2)} € (Bestätigt)`; } else { statusBadgeHTML = `💰 ${rewardAmount.toFixed(2)} € Vergütung`; } } const taskItem = document.createElement('div'); taskItem.className = "flex flex-col sm:flex-row items-start sm:items-center justify-between bg-slate-900 border border-slate-700 p-3 rounded-lg gap-2"; taskItem.innerHTML = `