diff --git a/client/src/pages/Alerts.jsx b/client/src/pages/Alerts.jsx index b2001d0..9ea0105 100644 --- a/client/src/pages/Alerts.jsx +++ b/client/src/pages/Alerts.jsx @@ -462,10 +462,32 @@ const CreateAlertRuleModal = ({ onClose, onSave }) => { device_ids: [], drone_types: [], min_rssi: '', - max_rssi: '', - frequency_ranges: [] + max_rssi: '' }); const [saving, setSaving] = useState(false); + const [devices, setDevices] = useState([]); + const [droneTypes, setDroneTypes] = useState([]); + const [loadingData, setLoadingData] = useState(true); + + useEffect(() => { + fetchDevicesAndDroneTypes(); + }, []); + + const fetchDevicesAndDroneTypes = async () => { + try { + const [devicesResponse, droneTypesResponse] = await Promise.all([ + api.get('/devices'), + api.get('/drone-types') + ]); + + setDevices(devicesResponse.data.data || []); + setDroneTypes(droneTypesResponse.data.data || []); + } catch (error) { + console.error('Error fetching devices and drone types:', error); + } finally { + setLoadingData(false); + } + }; const handleSubmit = async (e) => { e.preventDefault(); @@ -479,7 +501,6 @@ const CreateAlertRuleModal = ({ onClose, onSave }) => { if (!payload.max_rssi) delete payload.max_rssi; if (!payload.device_ids || payload.device_ids.length === 0) payload.device_ids = null; if (!payload.drone_types || payload.drone_types.length === 0) payload.drone_types = null; - if (!payload.frequency_ranges || payload.frequency_ranges.length === 0) payload.frequency_ranges = null; await api.post('/alerts/rules', payload); onSave(); @@ -516,6 +537,15 @@ const CreateAlertRuleModal = ({ onClose, onSave }) => { })); }; + const handleDeviceChange = (deviceId, checked) => { + setFormData(prev => ({ + ...prev, + device_ids: checked + ? [...prev.device_ids, deviceId] + : prev.device_ids.filter(id => id !== deviceId) + })); + }; + return (