@mytec: iter6 ready for test

This commit is contained in:
2026-01-30 12:44:39 +02:00
parent b18e297eee
commit ed30d886be
10 changed files with 435 additions and 21 deletions

View File

@@ -24,6 +24,9 @@ interface SitesState {
togglePlacingMode: () => void;
setPlacingMode: (val: boolean) => void;
// Multi-sector
cloneSiteAsSectors: (siteId: string, sectorCount: 2 | 3) => Promise<void>;
// Batch operations
toggleSiteSelection: (siteId: string) => void;
selectAllSites: () => void;
@@ -106,6 +109,38 @@ export const useSitesStore = create<SitesState>((set, get) => ({
togglePlacingMode: () => set((s) => ({ isPlacingMode: !s.isPlacingMode })),
setPlacingMode: (val: boolean) => set({ isPlacingMode: val }),
// Multi-sector: clone a site into 2 or 3 co-located sector sites
cloneSiteAsSectors: async (siteId: string, sectorCount: 2 | 3) => {
const source = get().sites.find((s) => s.id === siteId);
if (!source) return;
const spacing = 360 / sectorCount;
const addSite = get().addSite;
for (let i = 0; i < sectorCount; i++) {
const azimuth = Math.round(i * spacing) % 360;
const label = sectorCount === 2
? ['Alpha', 'Beta'][i]
: ['Alpha', 'Beta', 'Gamma'][i];
await addSite({
name: `${source.name}-${label}`,
lat: source.lat,
lon: source.lon,
height: source.height,
power: source.power,
gain: source.gain >= 15 ? source.gain : 18, // sector gain default
frequency: source.frequency,
antennaType: 'sector',
azimuth,
beamwidth: sectorCount === 2 ? 90 : 65,
color: '',
visible: true,
notes: `Sector ${i + 1} (${label}) of ${source.name}`,
});
}
},
// Batch operations
toggleSiteSelection: (siteId: string) => {
set((state) => {