diff --git a/frontend/src/features/maintenance/mobile/MaintenanceMobileScreen.tsx b/frontend/src/features/maintenance/mobile/MaintenanceMobileScreen.tsx index 1186481..edc5e39 100644 --- a/frontend/src/features/maintenance/mobile/MaintenanceMobileScreen.tsx +++ b/frontend/src/features/maintenance/mobile/MaintenanceMobileScreen.tsx @@ -2,12 +2,13 @@ * @ai-summary Mobile maintenance screen with tabs for records and schedules */ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { useQueryClient } from '@tanstack/react-query'; -import { Box, Tabs, Tab } from '@mui/material'; +import { Box, Tabs, Tab, FormControl, InputLabel, Select, MenuItem } from '@mui/material'; import { GlassCard } from '../../../shared-minimal/components/mobile/GlassCard'; import { Button } from '../../../shared-minimal/components/Button'; import { useMaintenanceRecords } from '../hooks/useMaintenanceRecords'; +import { useVehicles } from '../../vehicles/hooks/useVehicles'; import { MaintenanceRecordForm } from '../components/MaintenanceRecordForm'; import { MaintenanceRecordsList } from '../components/MaintenanceRecordsList'; import { MaintenanceRecordEditDialog } from '../components/MaintenanceRecordEditDialog'; @@ -18,7 +19,17 @@ import type { MaintenanceRecordResponse, UpdateMaintenanceRecordRequest, Mainten export const MaintenanceMobileScreen: React.FC = () => { const queryClient = useQueryClient(); - const { records, schedules, isRecordsLoading, isSchedulesLoading, recordsError, schedulesError, updateRecord, deleteRecord, updateSchedule, deleteSchedule } = useMaintenanceRecords(); + const { data: vehicles, isLoading: isLoadingVehicles } = useVehicles(); + const [selectedVehicleId, setSelectedVehicleId] = useState(''); + + // Auto-select first vehicle when vehicles load + useEffect(() => { + if (vehicles && vehicles.length > 0 && !selectedVehicleId) { + setSelectedVehicleId(vehicles[0].id); + } + }, [vehicles, selectedVehicleId]); + + const { records, schedules, isRecordsLoading, isSchedulesLoading, recordsError, schedulesError, updateRecord, deleteRecord, updateSchedule, deleteSchedule } = useMaintenanceRecords(selectedVehicleId || undefined); const [activeTab, setActiveTab] = useState<'records' | 'schedules'>('records'); const [showForm, setShowForm] = useState(false); @@ -52,7 +63,7 @@ export const MaintenanceMobileScreen: React.FC = () => { const handleDelete = async (recordId: string) => { try { await deleteRecord(recordId); - queryClient.refetchQueries({ queryKey: ['maintenanceRecords', 'all'] }); + queryClient.refetchQueries({ queryKey: ['maintenanceRecords'] }); } catch (error) { console.error('Failed to delete maintenance record:', error); } @@ -99,6 +110,31 @@ export const MaintenanceMobileScreen: React.FC = () => {

Maintenance

+ {/* Vehicle Selector */} + + + Vehicle + + + + {/* Tabs */} { - const { records, schedules, isRecordsLoading, isSchedulesLoading, recordsError, schedulesError, updateRecord, deleteRecord, updateSchedule, deleteSchedule } = useMaintenanceRecords(); + const { data: vehicles, isLoading: isLoadingVehicles } = useVehicles(); + const [selectedVehicleId, setSelectedVehicleId] = useState(''); const queryClient = useQueryClient(); const [activeTab, setActiveTab] = useState<'records' | 'schedules'>('records'); + + // Auto-select first vehicle when vehicles load + useEffect(() => { + if (vehicles && vehicles.length > 0 && !selectedVehicleId) { + setSelectedVehicleId(vehicles[0].id); + } + }, [vehicles, selectedVehicleId]); + + const { records, schedules, isRecordsLoading, isSchedulesLoading, recordsError, schedulesError, updateRecord, deleteRecord, updateSchedule, deleteSchedule } = useMaintenanceRecords(selectedVehicleId || undefined); const [editingRecord, setEditingRecord] = useState(null); const [editDialogOpen, setEditDialogOpen] = useState(false); const [editingSchedule, setEditingSchedule] = useState(null); @@ -52,7 +63,7 @@ export const MaintenancePage: React.FC = () => { try { await deleteRecord(recordId); // Refetch queries after delete - queryClient.refetchQueries({ queryKey: ['maintenanceRecords', 'all'] }); + queryClient.refetchQueries({ queryKey: ['maintenanceRecords'] }); } catch (error) { console.error('Failed to delete maintenance record:', error); } @@ -130,6 +141,31 @@ export const MaintenancePage: React.FC = () => { return ( + {/* Vehicle Selector */} + + + Vehicle + + + +