From fda40de155c0564a76ea30626b097025b5577758 Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Tue, 1 Jul 2025 19:57:51 +0700 Subject: [PATCH] Update Schedule and Maintenace Overview Card Liner-Gradient --- .../ScheduledMaintenanceTab.tsx | 153 ++++++++++-------- 1 file changed, 87 insertions(+), 66 deletions(-) diff --git a/application/src/components/schedule-incident/ScheduledMaintenanceTab.tsx b/application/src/components/schedule-incident/ScheduledMaintenanceTab.tsx index da82c1a..06b6004 100644 --- a/application/src/components/schedule-incident/ScheduledMaintenanceTab.tsx +++ b/application/src/components/schedule-incident/ScheduledMaintenanceTab.tsx @@ -1,16 +1,13 @@ - import React, { useEffect } from 'react'; import { useLanguage } from '@/contexts/LanguageContext'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs'; import { MaintenanceTable, MaintenanceStatusChecker } from './maintenance'; -import { EmptyMaintenanceState } from './maintenance/EmptyMaintenanceState'; -import { OverviewCard } from './common/OverviewCard'; +import { LoadingState } from '@/components/services/LoadingState'; import { Calendar, Clock, CheckCircle } from 'lucide-react'; import { useMaintenanceData } from './hooks/useMaintenanceData'; -import { Skeleton } from '@/components/ui/skeleton'; import { useToast } from '@/hooks/use-toast'; -import { LoadingState } from '@/components/services/LoadingState'; +import { useTheme } from '@/contexts/ThemeContext'; interface ScheduledMaintenanceTabProps { refreshTrigger?: number; @@ -18,25 +15,24 @@ interface ScheduledMaintenanceTabProps { export const ScheduledMaintenanceTab = ({ refreshTrigger = 0 }: ScheduledMaintenanceTabProps) => { const { t } = useLanguage(); + const { theme } = useTheme(); const { toast } = useToast(); const [manualRefresh, setManualRefresh] = React.useState(0); - - // Combine the external refresh trigger with our internal one + const combinedRefreshTrigger = refreshTrigger + manualRefresh; - - const { - loading, - filter, - setFilter, - maintenanceData, - overviewStats, + + const { + loading, + filter, + setFilter, + maintenanceData, + overviewStats, fetchMaintenanceData, isEmpty, error, - initialized + initialized, } = useMaintenanceData({ refreshTrigger: combinedRefreshTrigger }); - // Display toast when error occurs useEffect(() => { if (error) { toast({ @@ -47,66 +43,91 @@ export const ScheduledMaintenanceTab = ({ refreshTrigger = 0 }: ScheduledMainten } }, [error, toast, t]); - // Force fetch data on initial load useEffect(() => { - console.log("ScheduledMaintenanceTab is mounted, fetching data"); fetchMaintenanceData(true); }, [fetchMaintenanceData]); - // Handle maintenance updates const handleMaintenanceUpdated = () => { - console.log("Maintenance updated, refreshing data"); - setManualRefresh(prev => prev + 1); + setManualRefresh((prev) => prev + 1); }; - // Handle tab changes const handleTabChange = (value: string) => { setFilter(value); }; - // Show full-page loading state during initial load if (loading && !initialized) { return ; } + const gradientCard = ( + title: string, + value: string | number, + icon: JSX.Element, + gradient: string + ) => ( + +
+
+
+ + {title} + + + {value} +
+ {icon} +
+
+ + ); + return ( <> - {/* Status checker for automatic updates */} - {/* Overview Cards */} -
- } - isLoading={loading} - color="blue" - /> - } - isLoading={loading} - color="amber" - /> - } - isLoading={loading} - color="green" - /> - } - isLoading={loading} - color="purple" - /> +
+ {gradientCard( + t('upcomingMaintenance'), + loading ? '...' : overviewStats.upcoming, + , + 'rgba(59,130,246,0.6)' + )} + {gradientCard( + t('ongoingMaintenance'), + loading ? '...' : overviewStats.ongoing, + , + 'rgba(251,191,36,0.6)' + )} + {gradientCard( + t('completedMaintenance'), + loading ? '...' : overviewStats.completed, + , + 'rgba(34,197,94,0.6)' + )} + {gradientCard( + t('totalScheduledHours'), + loading ? '...' : `${overviewStats.totalDuration}h`, + , + 'rgba(139,92,246,0.6)' + )}
@@ -117,10 +138,10 @@ export const ScheduledMaintenanceTab = ({ refreshTrigger = 0 }: ScheduledMainten - @@ -129,24 +150,24 @@ export const ScheduledMaintenanceTab = ({ refreshTrigger = 0 }: ScheduledMainten {t('completedMaintenance')} - - + - - - + - - - +