Skip to content

Commit b628148

Browse files
committed
Sync linked simulation sites when library site elevation/position changes
1 parent c08bba3 commit b628148

3 files changed

Lines changed: 26 additions & 6 deletions

File tree

functions/_lib/buildInfo.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export const APP_VERSION = "0.8.0";
2-
export const APP_COMMIT = "07ab27ca";
2+
export const APP_COMMIT = "c08bba35";
33
export const APP_BUILD_LABEL = `v${APP_VERSION}+${APP_COMMIT}`;

src/lib/buildInfo.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export const APP_VERSION = "0.8.0";
2-
export const APP_COMMIT = "07ab27ca";
2+
export const APP_COMMIT = "c08bba35";
33
export const APP_BUILD_LABEL = `v${APP_VERSION}+${APP_COMMIT}`;

src/store/appStore.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,23 @@ const annotateSitesWithLibraryRefs = (sites: Site[], library: SiteLibraryEntry[]
357357
});
358358
};
359359

360+
const syncLibraryLinkedSiteValues = (sites: Site[], library: SiteLibraryEntry[]): Site[] => {
361+
if (!sites.length || !library.length) return sites;
362+
const byId = new Map<string, SiteLibraryEntry>(library.map((entry) => [entry.id, entry]));
363+
return sites.map((site) => {
364+
if (!site.libraryEntryId) return site;
365+
const entry = byId.get(site.libraryEntryId);
366+
if (!entry) return site;
367+
return {
368+
...site,
369+
name: entry.name,
370+
position: entry.position,
371+
groundElevationM: entry.groundElevationM,
372+
antennaHeightM: entry.antennaHeightM,
373+
};
374+
});
375+
};
376+
360377
const hasPrivateLibrarySiteReferences = (
361378
sites: Site[],
362379
siteLibrary: SiteLibraryEntry[],
@@ -778,8 +795,10 @@ export const useAppStore = create<AppState>((set, get) => ({
778795
}),
779796
);
780797
writeStorage(SITE_LIBRARY_KEY, next);
781-
return { siteLibrary: next };
798+
const nextSites = syncLibraryLinkedSiteValues(state.sites, next);
799+
return { siteLibrary: next, sites: nextSites };
782800
});
801+
get().recomputeCoverage();
783802
},
784803
deleteSiteLibraryEntry: (entryId) => {
785804
get().deleteSiteLibraryEntries([entryId]);
@@ -888,17 +907,18 @@ export const useAppStore = create<AppState>((set, get) => ({
888907
Array.isArray(snap.systems) ? snap.systems : [],
889908
Array.isArray(snap.networks) ? snap.networks : [],
890909
);
891-
const selectedSiteId = recovered.sites.some((site) => site.id === snap.selectedSiteId)
910+
const recoveredSites = syncLibraryLinkedSiteValues(recovered.sites, get().siteLibrary);
911+
const selectedSiteId = recoveredSites.some((site) => site.id === snap.selectedSiteId)
892912
? snap.selectedSiteId
893-
: recovered.sites[0].id;
913+
: recoveredSites[0].id;
894914
const selectedLinkId = recovered.links.some((link) => link.id === snap.selectedLinkId)
895915
? snap.selectedLinkId
896916
: recovered.links[0].id;
897917
const selectedNetworkId = recovered.networks.some((network) => network.id === snap.selectedNetworkId)
898918
? snap.selectedNetworkId
899919
: recovered.networks[0].id;
900920
set({
901-
sites: recovered.sites,
921+
sites: recoveredSites,
902922
links: recovered.links,
903923
systems: recovered.systems,
904924
networks: recovered.networks,

0 commit comments

Comments
 (0)