diff --git a/.replit b/.replit index 6b5c189..d5c2e6d 100644 --- a/.replit +++ b/.replit @@ -19,6 +19,10 @@ externalPort = 80 localPort = 33035 externalPort = 3001 +[[ports]] +localPort = 38905 +externalPort = 6000 + [[ports]] localPort = 41295 externalPort = 5173 diff --git a/client/src/pages/planning-mobile.tsx b/client/src/pages/planning-mobile.tsx index 6f5da0a..ca8daa3 100644 --- a/client/src/pages/planning-mobile.tsx +++ b/client/src/pages/planning-mobile.tsx @@ -273,13 +273,33 @@ export default function PlanningMobile() { // Funzione per aprire dialog duplicazione sequenza const handleOpenDuplicateDialog = (route: any) => { - const nextDay = format(addDays(parseISO(selectedDate), 1), "yyyy-MM-dd"); - setDuplicateDialog({ - isOpen: true, - sourceRoute: route, - targetDate: nextDay, // Default = giorno successivo - selectedDuplicateGuardId: route.guardId, // Pre-compilato con guardia attuale - }); + try { + // Validazione data selezionata + const parsedDate = parseISO(selectedDate); + if (!isValid(parsedDate)) { + toast({ + title: "Errore data", + description: "La data selezionata non è valida", + variant: "destructive", + }); + return; + } + + const nextDay = format(addDays(parsedDate, 1), "yyyy-MM-dd"); + setDuplicateDialog({ + isOpen: true, + sourceRoute: route, + targetDate: nextDay, // Default = giorno successivo + selectedDuplicateGuardId: route.guardId || "", // Pre-compilato con guardia attuale + }); + } catch (error) { + toast({ + title: "Errore", + description: "Impossibile aprire il dialog di duplicazione", + variant: "destructive", + }); + console.error("Error opening duplicate dialog:", error); + } }; // Handler submit dialog duplicazione @@ -879,7 +899,9 @@ export default function PlanningMobile() {
Data: - {format(parseISO(duplicateDialog.sourceRoute.scheduledDate), "dd/MM/yyyy", { locale: it })} + {duplicateDialog.sourceRoute.scheduledDate && isValid(parseISO(duplicateDialog.sourceRoute.scheduledDate)) + ? format(parseISO(duplicateDialog.sourceRoute.scheduledDate), "dd/MM/yyyy", { locale: it }) + : "Data non valida"}
@@ -901,7 +923,7 @@ export default function PlanningMobile() { data-testid="input-target-date" />

- {duplicateDialog.sourceRoute && duplicateDialog.targetDate && + {duplicateDialog.sourceRoute && duplicateDialog.targetDate && duplicateDialog.sourceRoute.scheduledDate && isValid(parseISO(duplicateDialog.sourceRoute.scheduledDate)) && format(parseISO(duplicateDialog.sourceRoute.scheduledDate), "yyyy-MM-dd") === duplicateDialog.targetDate ? "⚠️ Stessa data: verrà modificata la guardia della sequenza esistente" : "✓ Data diversa: verrà creata una nuova sequenza con tutte le tappe"