Compare commits

..

2 Commits

Author SHA1 Message Date
Marco Lanzara
753e01d612 🚀 Release v1.0.54
- Tipo: patch
- Database backup: database-backups/vigilanzaturni_v1.0.54_20251024_172526.sql.gz
- Data: 2025-10-24 17:25:44
2025-10-24 17:25:44 +00:00
marco370
3b3056f6b8 Improve planning duplication functionality with error handling and validation
Add validation for selected date and error handling for opening the duplicate dialog in the mobile planning view, also improve date display for scheduled routes.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e0b5b11c-5b75-4389-8ea9-5f3cd9332f88
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/e0b5b11c-5b75-4389-8ea9-5f3cd9332f88/JYtd6x2
2025-10-24 17:08:57 +00:00
4 changed files with 39 additions and 17 deletions

View File

@ -273,13 +273,33 @@ export default function PlanningMobile() {
// Funzione per aprire dialog duplicazione sequenza // Funzione per aprire dialog duplicazione sequenza
const handleOpenDuplicateDialog = (route: any) => { const handleOpenDuplicateDialog = (route: any) => {
const nextDay = format(addDays(parseISO(selectedDate), 1), "yyyy-MM-dd"); 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({ setDuplicateDialog({
isOpen: true, isOpen: true,
sourceRoute: route, sourceRoute: route,
targetDate: nextDay, // Default = giorno successivo targetDate: nextDay, // Default = giorno successivo
selectedDuplicateGuardId: route.guardId, // Pre-compilato con guardia attuale 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 // Handler submit dialog duplicazione
@ -879,7 +899,9 @@ export default function PlanningMobile() {
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<span className="text-muted-foreground">Data:</span> <span className="text-muted-foreground">Data:</span>
<span className="font-medium"> <span className="font-medium">
{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"}
</span> </span>
</div> </div>
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
@ -901,7 +923,7 @@ export default function PlanningMobile() {
data-testid="input-target-date" data-testid="input-target-date"
/> />
<p className="text-xs text-muted-foreground"> <p className="text-xs text-muted-foreground">
{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 format(parseISO(duplicateDialog.sourceRoute.scheduledDate), "yyyy-MM-dd") === duplicateDialog.targetDate
? "⚠️ Stessa data: verrà modificata la guardia della sequenza esistente" ? "⚠️ Stessa data: verrà modificata la guardia della sequenza esistente"
: "✓ Data diversa: verrà creata una nuova sequenza con tutte le tappe" : "✓ Data diversa: verrà creata una nuova sequenza con tutte le tappe"

View File

@ -1,7 +1,13 @@
{ {
"version": "1.0.53", "version": "1.0.54",
"lastUpdate": "2025-10-24T16:35:13.318Z", "lastUpdate": "2025-10-24T17:25:43.941Z",
"changelog": [ "changelog": [
{
"version": "1.0.54",
"date": "2025-10-24",
"type": "patch",
"description": "Deployment automatico v1.0.54"
},
{ {
"version": "1.0.53", "version": "1.0.53",
"date": "2025-10-24", "date": "2025-10-24",
@ -295,12 +301,6 @@
"date": "2025-10-17", "date": "2025-10-17",
"type": "patch", "type": "patch",
"description": "Deployment automatico v1.0.5" "description": "Deployment automatico v1.0.5"
},
{
"version": "1.0.4",
"date": "2025-10-17",
"type": "patch",
"description": "Deployment automatico v1.0.4"
} }
] ]
} }