diff --git a/admin_ui/src/components/ScheduleMaker.jsx b/admin_ui/src/components/ScheduleMaker.jsx index 19f3efe..9cb89a1 100644 --- a/admin_ui/src/components/ScheduleMaker.jsx +++ b/admin_ui/src/components/ScheduleMaker.jsx @@ -10,6 +10,7 @@ export default function ScheduleMaker({ token, user }) { const [busLines, setBusLines] = useState([]) const [buses, setBuses] = useState([]) const [drivers, setDrivers] = useState([]) + const [selectedDriverFilter, setSelectedDriverFilter] = useState('') const [message, setMessage] = useState(null) const [isAdmin] = useState(Boolean(user?.userCode)) const [deleteConfirm, setDeleteConfirm] = useState(null) @@ -137,9 +138,12 @@ export default function ScheduleMaker({ token, user }) { return date.toLocaleTimeString('nl-NL', { hour: '2-digit', minute: '2-digit' }) } - // Group schedules by date and time + // Group schedules by date and time (apply driver filter if selected) const timeSlots = generateTimeSlots() - const schedulesBySlot = groupSchedulesByTimeSlot(schedules, timeSlots) + const filteredSchedules = selectedDriverFilter + ? schedules.filter(s => String(s.driverId) === String(selectedDriverFilter)) + : schedules + const schedulesBySlot = groupSchedulesByTimeSlot(filteredSchedules, timeSlots) return (
@@ -148,7 +152,19 @@ export default function ScheduleMaker({ token, user }) {

Diensten Inplannen

Maak diensten aan met automatische eindtijd, vertrektijden per halte en herhaald rooster.

- +
+ + +
{isAdmin && ( diff --git a/transit_api/index.js b/transit_api/index.js index 6c0aa4b..44677fa 100644 --- a/transit_api/index.js +++ b/transit_api/index.js @@ -1051,18 +1051,21 @@ app.get('/admin/drivers', authMiddleware, adminMiddleware, async (req, res) => { } const result = await db.query(` - SELECT id, name, email, phone + SELECT id, firstname, lastname, email, phone, job, joined, status FROM workers.employees WHERE status = 'active' - ORDER BY name ASC + ORDER BY firstname, lastname ASC `); res.json({ drivers: result.rows.map(row => ({ id: row.id, - name: row.name, + name: (String(row.firstname || '') + ' ' + String(row.lastname || '')).trim(), email: row.email, phone: row.phone, + job: row.job, + joined: row.joined, + status: row.status, })), }); } catch (err) { @@ -1099,7 +1102,7 @@ app.get('/admin/schedules', authMiddleware, adminMiddleware, async (req, res) => bl.estimated_duration_minutes, b.name as bus_name, b.license_plate, - e.name as driver_name + TRIM(COALESCE(e.firstname, '') || ' ' || COALESCE(e.lastname, '')) as driver_name FROM transit.schedules s LEFT JOIN transit.bus_lines bl ON s.bus_line_id = bl.id LEFT JOIN fleet.bus b ON s.bus_id = b.id