Add a summary of guard availability to the planning view
Update the `GeneralPlanningResponse` interface to include a `summary` object containing `totalGuardsNeeded`, `totalGuardsAssigned`, and `totalGuardsMissing`. Render this summary in the UI. Replit-Commit-Author: Agent Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/e5565357-90e1-419f-b9a8-6ee8394636df/uZXH8P1
This commit is contained in:
parent
c07441cd72
commit
63ce62ee24
@ -56,6 +56,11 @@ interface GeneralPlanningResponse {
|
|||||||
weekEnd: string;
|
weekEnd: string;
|
||||||
location: string;
|
location: string;
|
||||||
days: DayData[];
|
days: DayData[];
|
||||||
|
summary: {
|
||||||
|
totalGuardsNeeded: number;
|
||||||
|
totalGuardsAssigned: number;
|
||||||
|
totalGuardsMissing: number;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function GeneralPlanning() {
|
export default function GeneralPlanning() {
|
||||||
@ -184,6 +189,36 @@ export default function GeneralPlanning() {
|
|||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
|
{/* Summary Guardie Settimana */}
|
||||||
|
{!isLoading && planningData?.summary && (
|
||||||
|
<Card>
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle className="flex items-center gap-2">
|
||||||
|
<Users className="h-5 w-5" />
|
||||||
|
Riepilogo Guardie Settimana
|
||||||
|
</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent>
|
||||||
|
<div className="grid grid-cols-3 gap-4">
|
||||||
|
<div className="text-center p-4 bg-primary/10 rounded-lg border border-primary/20">
|
||||||
|
<p className="text-sm text-muted-foreground mb-2">Guardie Necessarie</p>
|
||||||
|
<p className="text-4xl font-bold text-primary">{planningData.summary.totalGuardsNeeded}</p>
|
||||||
|
</div>
|
||||||
|
<div className="text-center p-4 bg-green-500/10 rounded-lg border border-green-500/20">
|
||||||
|
<p className="text-sm text-muted-foreground mb-2">Guardie Pianificate</p>
|
||||||
|
<p className="text-4xl font-bold text-green-600 dark:text-green-500">{planningData.summary.totalGuardsAssigned}</p>
|
||||||
|
</div>
|
||||||
|
<div className={`text-center p-4 rounded-lg border ${planningData.summary.totalGuardsMissing > 0 ? 'bg-destructive/10 border-destructive/20' : 'bg-green-500/10 border-green-500/20'}`}>
|
||||||
|
<p className="text-sm text-muted-foreground mb-2">Guardie Mancanti</p>
|
||||||
|
<p className={`text-4xl font-bold ${planningData.summary.totalGuardsMissing > 0 ? 'text-destructive' : 'text-green-600 dark:text-green-500'}`}>
|
||||||
|
{planningData.summary.totalGuardsMissing}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* Tabella Planning */}
|
{/* Tabella Planning */}
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user