diff --git a/scripts/core/dataProcessor.ts b/scripts/core/dataProcessor.ts index dfb796ba70..e7fd94dd5d 100644 --- a/scripts/core/dataProcessor.ts +++ b/scripts/core/dataProcessor.ts @@ -99,6 +99,7 @@ export class DataProcessor { .withCities(citiesGroupedBySubdivisionCode) .withCountry(countriesKeyByCode) .withRegions(regions) + .withParent(subdivisionsKeyByCode) ) subdivisionsKeyByCode = subdivisions.keyBy((subdivision: Subdivision) => subdivision.code) subdivisionsGroupedByCountryCode = subdivisions.groupBy( diff --git a/scripts/models/broadcastArea.ts b/scripts/models/broadcastArea.ts index 47b8a96c78..bda69be252 100644 --- a/scripts/models/broadcastArea.ts +++ b/scripts/models/broadcastArea.ts @@ -31,6 +31,10 @@ export class BroadcastArea { const city: City = citiesKeyByCode.get(code) if (!city) return citiesIncluded.add(city) + if (city.subdivision) subdivisionsIncluded.add(city.subdivision) + if (city.subdivision && city.subdivision.parent) + subdivisionsIncluded.add(city.subdivision.parent) + if (city.country) countriesIncluded.add(city.country) regionsIncluded = regionsIncluded.concat(city.getRegions()) break } @@ -38,6 +42,7 @@ export class BroadcastArea { const subdivision: Subdivision = subdivisionsKeyByCode.get(code) if (!subdivision) return subdivisionsIncluded.add(subdivision) + if (subdivision.country) countriesIncluded.add(subdivision.country) regionsIncluded = regionsIncluded.concat(subdivision.getRegions()) break } diff --git a/scripts/models/subdivision.ts b/scripts/models/subdivision.ts index 92cfdc9d61..b70bd4ac5b 100644 --- a/scripts/models/subdivision.ts +++ b/scripts/models/subdivision.ts @@ -8,6 +8,7 @@ export class Subdivision { countryCode: string country?: Country parentCode?: string + parent?: Subdivision regions?: Collection cities?: Collection @@ -40,6 +41,14 @@ export class Subdivision { return this } + withParent(subdivisionsKeyByCode: Dictionary): this { + if (!this.parentCode) return this + + this.parent = subdivisionsKeyByCode.get(this.parentCode) + + return this + } + getRegions(): Collection { if (!this.regions) return new Collection()