Bloqueo de días, override del admin y edición del nombre de ronda
- Admin puede bloquear/desbloquear días (rounds.blocked) desde la vista de ocupación; los trabajadores no pueden elegirlos (🔒). - El admin puede asignar cualquier día aunque supere el límite por día/cargo o esté bloqueado (override explícito en requests/set). - Editar el nombre de la ronda con edición inline en el calendario (PUT /api/admin/rounds/:id/name). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-2
@@ -9,6 +9,7 @@
|
||||
|
||||
let state = null; // respuesta del servidor
|
||||
let todayIso = ''; // hoy según el servidor (zona de España)
|
||||
let blockedSet = new Set(); // días bloqueados por el admin (no elegibles)
|
||||
let myStatus = new Map(); // fecha → 'approved' | 'rejected' | 'pending' (guardado)
|
||||
let savedPending = new Set();// pendientes ya guardadas en el servidor
|
||||
let pending = new Set(); // pendientes en edición (con cambios sin guardar)
|
||||
@@ -82,6 +83,7 @@
|
||||
const others = state.counts[date]?.[role] || 0;
|
||||
const limit = state.limits[role];
|
||||
const full = limit ? others >= limit : false;
|
||||
const blocked = blockedSet.has(date);
|
||||
const past = date <= todayIso;
|
||||
const open = state.round.status === 'open';
|
||||
|
||||
@@ -104,6 +106,7 @@
|
||||
} else {
|
||||
// Día libre para este trabajador.
|
||||
if (past) { cls += ' past'; disabled = true; }
|
||||
else if (blocked) { cls += ' blocked'; disabled = true; }
|
||||
else if (full) { cls += ' full'; disabled = true; }
|
||||
else clickable = !disabled;
|
||||
}
|
||||
@@ -202,8 +205,8 @@
|
||||
toast('✓ Petición guardada');
|
||||
} catch (ex) {
|
||||
toast(ex.message, true);
|
||||
// Si el servidor rechazó por días completos, recargamos para ver la realidad.
|
||||
if (/complet/i.test(ex.message)) load();
|
||||
// Si el servidor rechazó por días completos o bloqueados, recargamos para ver la realidad.
|
||||
if (/complet|bloquead/i.test(ex.message)) load();
|
||||
} finally {
|
||||
btn.disabled = false;
|
||||
}
|
||||
@@ -219,6 +222,7 @@
|
||||
return;
|
||||
}
|
||||
todayIso = state.today || new Date().toISOString().slice(0, 10);
|
||||
blockedSet = new Set(state.blocked || []);
|
||||
$('round-title').innerHTML =
|
||||
`${state.round.name} <em>${state.round.year}</em>`;
|
||||
$('round-sub').textContent = state.me
|
||||
|
||||
Reference in New Issue
Block a user