diff --git a/public/modules/ui/burgs-overview.js b/public/modules/ui/burgs-overview.js index 30506c2b..5b061fd4 100644 --- a/public/modules/ui/burgs-overview.js +++ b/public/modules/ui/burgs-overview.js @@ -75,10 +75,10 @@ function overviewBurgs(settings = {stateId: null, cultureId: null}) { // filter by search text filtered = filtered.filter(b => { const name = b.name.toLowerCase(); - const state = (pack.states[b.state].name || "").toLowerCase(); + const state = (pack.states[b.state]?.name || "").toLowerCase(); const prov = pack.cells.province[b.cell]; const province = prov ? pack.provinces[prov]?.name.toLowerCase() : ""; - const culture = (pack.cultures[b.culture].name || "").toLowerCase(); + const culture = (pack.cultures[b.culture]?.name || "").toLowerCase(); return ( name.includes(searchText) || state.includes(searchText) || diff --git a/public/modules/ui/rivers-overview.js b/public/modules/ui/rivers-overview.js index 99732250..c062424f 100644 --- a/public/modules/ui/rivers-overview.js +++ b/public/modules/ui/rivers-overview.js @@ -34,13 +34,16 @@ function overviewRivers() { let lines = ""; const unit = distanceUnitInput.value; + // Precompute a lookup map from river id to river for efficient basin lookup + const riversById = new Map(pack.rivers.map(river => [river.i, river])); + let filteredRivers = pack.rivers; const searchText = byId("riversSearch").value.toLowerCase().trim(); if (searchText) { filteredRivers = filteredRivers.filter(r => { const name = (r.name || "").toLowerCase(); const type = (r.type || "").toLowerCase(); - const basin = pack.rivers.find(river => river.i === r.basin); + const basin = riversById.get(r.basin); const basinName = basin ? (basin.name || "").toLowerCase() : ""; return name.includes(searchText) || type.includes(searchText) || basinName.includes(searchText); }); @@ -50,7 +53,7 @@ function overviewRivers() { const discharge = r.discharge + " m³/s"; const length = rn(r.length * distanceScale) + " " + unit; const width = rn(r.width * distanceScale, 3) + " " + unit; - const basin = pack.rivers.find(river => river.i === r.basin)?.name; + const basin = riversById.get(r.basin)?.name; lines += /* html */ `