@mytec: iter10.6 ready for testing
This commit is contained in:
@@ -40,6 +40,11 @@ interface SitesState {
|
||||
batchSetHeight: (height: number) => Promise<void>;
|
||||
batchAdjustAzimuth: (delta: number) => Promise<void>;
|
||||
batchSetAzimuth: (azimuth: number) => Promise<void>;
|
||||
batchAdjustPower: (delta: number) => Promise<void>;
|
||||
batchSetPower: (power: number) => Promise<void>;
|
||||
batchAdjustTilt: (delta: number) => Promise<void>;
|
||||
batchSetTilt: (tilt: number) => Promise<void>;
|
||||
batchSetFrequency: (frequency: number) => Promise<void>;
|
||||
}
|
||||
|
||||
export const useSitesStore = create<SitesState>((set, get) => ({
|
||||
@@ -336,4 +341,148 @@ export const useSitesStore = create<SitesState>((set, get) => ({
|
||||
set({ sites: updatedSites });
|
||||
useCoverageStore.getState().clearCoverage();
|
||||
},
|
||||
|
||||
batchAdjustPower: async (delta: number) => {
|
||||
const { sites, selectedSiteIds } = get();
|
||||
const selectedSet = new Set(selectedSiteIds);
|
||||
const now = new Date();
|
||||
|
||||
const updatedSites = sites.map((site) => {
|
||||
if (!selectedSet.has(site.id)) return site;
|
||||
return {
|
||||
...site,
|
||||
power: Math.max(10, Math.min(50, site.power + delta)),
|
||||
updatedAt: now,
|
||||
};
|
||||
});
|
||||
|
||||
const toUpdate = updatedSites.filter((s) => selectedSet.has(s.id));
|
||||
for (const site of toUpdate) {
|
||||
await db.sites.put({
|
||||
id: site.id,
|
||||
data: JSON.stringify(site),
|
||||
createdAt: site.createdAt.getTime(),
|
||||
updatedAt: now.getTime(),
|
||||
});
|
||||
}
|
||||
|
||||
set({ sites: updatedSites });
|
||||
useCoverageStore.getState().clearCoverage();
|
||||
},
|
||||
|
||||
batchSetPower: async (power: number) => {
|
||||
const { sites, selectedSiteIds } = get();
|
||||
const selectedSet = new Set(selectedSiteIds);
|
||||
const clamped = Math.max(10, Math.min(50, power));
|
||||
const now = new Date();
|
||||
|
||||
const updatedSites = sites.map((site) => {
|
||||
if (!selectedSet.has(site.id)) return site;
|
||||
return {
|
||||
...site,
|
||||
power: clamped,
|
||||
updatedAt: now,
|
||||
};
|
||||
});
|
||||
|
||||
const toUpdate = updatedSites.filter((s) => selectedSet.has(s.id));
|
||||
for (const site of toUpdate) {
|
||||
await db.sites.put({
|
||||
id: site.id,
|
||||
data: JSON.stringify(site),
|
||||
createdAt: site.createdAt.getTime(),
|
||||
updatedAt: now.getTime(),
|
||||
});
|
||||
}
|
||||
|
||||
set({ sites: updatedSites });
|
||||
useCoverageStore.getState().clearCoverage();
|
||||
},
|
||||
|
||||
batchAdjustTilt: async (delta: number) => {
|
||||
const { sites, selectedSiteIds } = get();
|
||||
const selectedSet = new Set(selectedSiteIds);
|
||||
const now = new Date();
|
||||
|
||||
const updatedSites = sites.map((site) => {
|
||||
if (!selectedSet.has(site.id)) return site;
|
||||
const current = site.tilt ?? 0;
|
||||
return {
|
||||
...site,
|
||||
tilt: Math.max(-90, Math.min(90, current + delta)),
|
||||
updatedAt: now,
|
||||
};
|
||||
});
|
||||
|
||||
const toUpdate = updatedSites.filter((s) => selectedSet.has(s.id));
|
||||
for (const site of toUpdate) {
|
||||
await db.sites.put({
|
||||
id: site.id,
|
||||
data: JSON.stringify(site),
|
||||
createdAt: site.createdAt.getTime(),
|
||||
updatedAt: now.getTime(),
|
||||
});
|
||||
}
|
||||
|
||||
set({ sites: updatedSites });
|
||||
useCoverageStore.getState().clearCoverage();
|
||||
},
|
||||
|
||||
batchSetTilt: async (tilt: number) => {
|
||||
const { sites, selectedSiteIds } = get();
|
||||
const selectedSet = new Set(selectedSiteIds);
|
||||
const clamped = Math.max(-90, Math.min(90, tilt));
|
||||
const now = new Date();
|
||||
|
||||
const updatedSites = sites.map((site) => {
|
||||
if (!selectedSet.has(site.id)) return site;
|
||||
return {
|
||||
...site,
|
||||
tilt: clamped,
|
||||
updatedAt: now,
|
||||
};
|
||||
});
|
||||
|
||||
const toUpdate = updatedSites.filter((s) => selectedSet.has(s.id));
|
||||
for (const site of toUpdate) {
|
||||
await db.sites.put({
|
||||
id: site.id,
|
||||
data: JSON.stringify(site),
|
||||
createdAt: site.createdAt.getTime(),
|
||||
updatedAt: now.getTime(),
|
||||
});
|
||||
}
|
||||
|
||||
set({ sites: updatedSites });
|
||||
useCoverageStore.getState().clearCoverage();
|
||||
},
|
||||
|
||||
batchSetFrequency: async (frequency: number) => {
|
||||
const { sites, selectedSiteIds } = get();
|
||||
const selectedSet = new Set(selectedSiteIds);
|
||||
const clamped = Math.max(100, Math.min(6000, frequency));
|
||||
const now = new Date();
|
||||
|
||||
const updatedSites = sites.map((site) => {
|
||||
if (!selectedSet.has(site.id)) return site;
|
||||
return {
|
||||
...site,
|
||||
frequency: clamped,
|
||||
updatedAt: now,
|
||||
};
|
||||
});
|
||||
|
||||
const toUpdate = updatedSites.filter((s) => selectedSet.has(s.id));
|
||||
for (const site of toUpdate) {
|
||||
await db.sites.put({
|
||||
id: site.id,
|
||||
data: JSON.stringify(site),
|
||||
createdAt: site.createdAt.getTime(),
|
||||
updatedAt: now.getTime(),
|
||||
});
|
||||
}
|
||||
|
||||
set({ sites: updatedSites });
|
||||
useCoverageStore.getState().clearCoverage();
|
||||
},
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user