diff --git a/Website/src/app/management/vehicles/client.tsx b/Website/src/app/management/vehicles/client.tsx index 4dec47a6..e59d74fd 100644 --- a/Website/src/app/management/vehicles/client.tsx +++ b/Website/src/app/management/vehicles/client.tsx @@ -20,7 +20,8 @@ const fetcher = async ([url, track_id]: [url: string, track_id: number]) => { } const res_1 = await res; const res_2: VehicleList = await res_1.json(); - res_2.push({uid: NaN, name: '[Neues Fahrzeug hinzufügen]', typeId: 0, trackerIds: []}); + // Add a placeholder vehicle + res_2.unshift({uid: NaN, name: '[Neues Fahrzeug hinzufügen]', typeId: 0, trackerIds: []}); return res_2; }; @@ -95,9 +96,32 @@ export default function VehicleManagement({trackID, vehicleTypes}: { } - const deleteVehicle: FormEventHandler = (e) => { + const deleteVehicle: FormEventHandler = async (e) => { e.preventDefault(); - setError('gelöscht!'); + const vehicle = vehicleList && getVehicleByUid(vehicleList, Number.parseInt(selVehicle, 10)); + + const confirmation = confirm(`Möchten Sie das Fahrzeug ${vehicle?.name} wirklich entfernen?`) + + if (confirmation) { + try { + const result = await fetch(`/webapi/vehicles/delete/${selVehicle}`, { + method: 'DELETE' + }) + if (result.ok) { + setSuccess(true); + setError(undefined) + // invalidate cached result for key ['/webapi/vehicles/list/', trackID] + mutate(); + } else { + if (result.status == 401) + setError('Authorisierungsfehler: Sind Sie angemeldet?') + if (result.status >= 500 && result.status < 600) + setError(`Serverfehler ${result.status} ${result.statusText}`) + } + } catch (e) { + setError(`Connection Error: ${e}`) + } + } } // select different vehicle function @@ -193,7 +217,7 @@ export default function VehicleManagement({trackID, vehicleTypes}: { {vehicleTypes.map((type) => )} - {vehicTrackers.map((uid, idx, list) => (<> + {vehicTrackers.map((uid, idx, ) => (<>