diff --git a/application/src/components/schedule-incident/maintenance/CreateMaintenanceDialog.tsx b/application/src/components/schedule-incident/maintenance/CreateMaintenanceDialog.tsx new file mode 100644 index 0000000..2ddc398 --- /dev/null +++ b/application/src/components/schedule-incident/maintenance/CreateMaintenanceDialog.tsx @@ -0,0 +1,94 @@ + +import React from 'react'; +import { useLanguage } from '@/contexts/LanguageContext'; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter +} from '@/components/ui/dialog'; +import { Form } from '@/components/ui/form'; +import { Button } from '@/components/ui/button'; +import { useMaintenanceForm } from './hooks/useMaintenanceForm'; +import { + MaintenanceBasicFields, + MaintenanceTimeFields, + MaintenanceAffectedFields, + MaintenanceConfigFields, + MaintenanceNotificationSettingsField +} from './form'; + +interface CreateMaintenanceDialogProps { + open: boolean; + onOpenChange: (open: boolean) => void; + onMaintenanceCreated: () => void; +} + +export const CreateMaintenanceDialog = ({ + open, + onOpenChange, + onMaintenanceCreated +}: CreateMaintenanceDialogProps) => { + const { t } = useLanguage(); + + const handleSuccess = () => { + console.log("CreateMaintenanceDialog: maintenance created successfully"); + onMaintenanceCreated(); + }; + + const handleClose = () => { + console.log("CreateMaintenanceDialog: closing dialog"); + onOpenChange(false); + }; + + const { form, onSubmit } = useMaintenanceForm(handleSuccess, handleClose); + + // Log the form state for debugging + React.useEffect(() => { + const subscription = form.watch((value) => { + console.log("Form values changed:", value); + }); + return () => subscription.unsubscribe(); + }, [form]); + + return ( + + ); +}; diff --git a/application/src/components/schedule-incident/maintenance/EmptyMaintenanceState.tsx b/application/src/components/schedule-incident/maintenance/EmptyMaintenanceState.tsx new file mode 100644 index 0000000..60ce11d --- /dev/null +++ b/application/src/components/schedule-incident/maintenance/EmptyMaintenanceState.tsx @@ -0,0 +1,18 @@ + +import React from 'react'; +import { useLanguage } from '@/contexts/LanguageContext'; +import { CalendarClock } from 'lucide-react'; + +export const EmptyMaintenanceState = () => { + const { t } = useLanguage(); + + return ( +
+ {t('noMaintenanceWindows')} +
+{maintenance.title}
+Reference ID: {maintenance.id}
+Generated on {format(new Date(), 'PPP')}
+{formatDateTime(maintenance.start_time)}
+{formatDateTime(maintenance.end_time)}
+{calculateDuration(maintenance.start_time, maintenance.end_time)}
+{maintenance.field}
+{maintenance.created_by || t('notSpecified')}
+{maintenance.notification_channel_name || t('notSpecified')}
+{formatDateTime(maintenance.created)}
+{formatDateTime(maintenance.updated)}
++ {maintenance.notify_subscribers === 'yes' + ? t('subscribersWillBeNotified') + : t('noNotifications')} +
+This document is confidential and intended for internal use only.
+{t('separateServicesWithComma')}
+