FERS 1.0.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
WaveformInspector.tsx
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-only
2// Copyright (c) 2025-present FERS Contributors (see AUTHORS.md).
3
4import {
5 Box,
6 FormControl,
7 InputLabel,
8 MenuItem,
9 Select,
10 TextField,
11} from '@mui/material';
12import { useScenarioStore, Waveform } from '@/stores/scenarioStore';
13import { NumberField, FileInput } from './InspectorControls';
14
15interface WaveformInspectorProps {
16 item: Waveform;
17}
18
19export function WaveformInspector({ item }: WaveformInspectorProps) {
20 const { updateItem } = useScenarioStore.getState();
21 const handleChange = (path: string, value: unknown) =>
22 updateItem(item.id, path, value);
23
24 return (
25 <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
26 <TextField
27 label="Name"
28 variant="outlined"
29 size="small"
30 fullWidth
31 value={item.name}
32 onChange={(e) => handleChange('name', e.target.value)}
33 />
34 <FormControl fullWidth size="small">
35 <InputLabel>Type</InputLabel>
36 <Select
37 label="Type"
38 value={item.waveformType}
39 onChange={(e) =>
40 handleChange('waveformType', e.target.value)
41 }
42 >
43 <MenuItem value="pulsed_from_file">Pulse File</MenuItem>
44 <MenuItem value="cw">CW</MenuItem>
45 </Select>
46 </FormControl>
47 <NumberField
48 label="Power (W)"
49 value={item.power}
50 onChange={(v) => handleChange('power', v)}
51 />
52 <NumberField
53 label="Carrier Frequency (Hz)"
54 value={item.carrier_frequency}
55 onChange={(v) => handleChange('carrier_frequency', v)}
56 />
57 {item.waveformType === 'pulsed_from_file' && (
58 <FileInput
59 label="Waveform File (.csv, .h5)"
60 value={item.filename}
61 onChange={(v) => handleChange('filename', v)}
62 filters={[
63 { name: 'Waveform', extensions: ['csv', 'h5'] },
64 { name: 'All Files', extensions: ['*'] },
65 ]}
66 />
67 )}
68 </Box>
69 );
70}