@mytec: iter9.1 ready for test
This commit is contained in:
@@ -85,16 +85,41 @@ export function useKeyboardShortcuts({
|
||||
case 'f': // F: Fit to coverage — dispatch custom event for Map.tsx to handle
|
||||
window.dispatchEvent(new CustomEvent('rfcp:fit-bounds'));
|
||||
return;
|
||||
case 'delete': // Delete key: delete selected sites
|
||||
case 'delete': // Delete key: delete selected site with undo
|
||||
case 'backspace':
|
||||
// Only if a site is selected (not batch)
|
||||
{
|
||||
const selectedId = useSitesStore.getState().selectedSiteId;
|
||||
if (selectedId) {
|
||||
const site = useSitesStore.getState().sites.find(s => s.id === selectedId);
|
||||
if (site) {
|
||||
// Snapshot for undo
|
||||
const snapshot = { ...site };
|
||||
useSitesStore.getState().deleteSite(selectedId);
|
||||
useToastStore.getState().addToast(`"${site.name}" deleted`, 'info');
|
||||
useToastStore.getState().addToast(`"${site.name}" deleted`, 'info', {
|
||||
duration: 10000,
|
||||
action: {
|
||||
label: 'Undo',
|
||||
onClick: async () => {
|
||||
await useSitesStore.getState().addSite({
|
||||
name: snapshot.name,
|
||||
lat: snapshot.lat,
|
||||
lon: snapshot.lon,
|
||||
height: snapshot.height,
|
||||
power: snapshot.power,
|
||||
gain: snapshot.gain,
|
||||
frequency: snapshot.frequency,
|
||||
antennaType: snapshot.antennaType,
|
||||
azimuth: snapshot.azimuth,
|
||||
beamwidth: snapshot.beamwidth,
|
||||
color: snapshot.color,
|
||||
visible: snapshot.visible,
|
||||
notes: snapshot.notes,
|
||||
equipment: snapshot.equipment,
|
||||
});
|
||||
useToastStore.getState().addToast(`"${snapshot.name}" restored`, 'success');
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user