diff --git a/js/main.ts b/js/main.ts index 645f046..7321850 100644 --- a/js/main.ts +++ b/js/main.ts @@ -43,7 +43,7 @@ function getCurrentPosition(): Promise { const [lon1, lat1, lon2, lat2] = sainteAdeleBBox; const adresse = document.getElementById("adresse"); -if (adresse == null) +if (adresse === null) throw "Element not found: adresse"; const autocomplete = new GeocoderAutocomplete( adresse, @@ -72,6 +72,8 @@ window.addEventListener("load", async () => { }); function categorieTexte(info) { + if (info === null) + return "inconnu"; const { zone, milieu, description } = info; const [categorie, souscategorie] = milieu.split("."); const cat = zonage.categorie_milieu[categorie]; @@ -85,6 +87,8 @@ function categorieTexte(info) { } function milieuTexte(info) { + if (info === null) + return "inconnu"; const { zone, milieu, description } = info; const mil = zonage.milieu[milieu]; if (mil !== undefined) { @@ -96,12 +100,16 @@ function milieuTexte(info) { } function collecteTexte(info) { + if (info === null) + return "inconnue"; const { couleur, jour } = info; return `${jour} (calendrier PDF)`; } function conseilTexte(info) { - return `${info.conseiller}`; + if (info === null) + return "inconnu"; + return `conseillier: ${info.conseiller}`; } const geoformat = new GeoJSON(); @@ -111,12 +119,12 @@ const zonelayer = new VectorLayer({ // stfu tsc }); function updateInfo(info) { const infoDiv = document.getElementById("info"); - if (infoDiv == null) + if (infoDiv === null) throw "Element not found: info"; const { zone, district, collecte } = info; infoDiv.innerHTML = ` - - + + @@ -134,7 +142,7 @@ function updateInfo(info) { function infoError(txt: string) { const infoDiv = document.getElementById("info"); - if (infoDiv == null) + if (infoDiv === null) throw "Element not found: info"; infoDiv.innerHTML = `

${txt}

`; } @@ -182,7 +190,7 @@ async function geolocateMe() { } const locate = document.getElementById("locate"); -if (locate == null) +if (locate === null) throw "Element not found: locate"; locate.addEventListener("click", geolocateMe); diff --git a/zonalda/__init__.py b/zonalda/__init__.py index 011c699..63ebdb5 100644 --- a/zonalda/__init__.py +++ b/zonalda/__init__.py @@ -9,6 +9,7 @@ from pathlib import Path import geopandas # type: ignore +from pandas import Series from shapely import Point # type: ignore VERSION = "0.0.1" @@ -29,7 +30,9 @@ def __init__(self): self.zonage = geopandas.read_file(THISDIR / "zonage.geojson") self.collectes = geopandas.read_file(THISDIR / "collectes.geojson") - def __call__(self, latitude: float, longitude: float): + def __call__( + self, latitude: float, longitude: float + ) -> tuple[Series | None, Series | None, Series | None,]: """Chercher les informations citoyennes pour un emplacement.""" p = Point(longitude, latitude) if not self.ville.geometry.contains(p): @@ -40,19 +43,19 @@ def __call__(self, latitude: float, longitude: float): districts = self.districts.loc[self.districts.contains(p)] if len(districts) > 1: LOGGER.warning("Plusieurs districts trouvé pour %s: %s", p, districts) - if districts: + if len(districts): district = districts.iloc[0] zones = self.zonage.loc[self.zonage.contains(p)] if len(zones) > 1: LOGGER.warning("Plusieurs zones trouvé pour %s: %s", p, zones) - if zones: + if len(zones): zone = zones.iloc[0] collectes = self.collectes.loc[self.collectes.contains(p)] if len(collectes) > 1: LOGGER.warning( "Plusieurs zones de collectes trouvé pour %s: %s", p, collectes ) - if collectes: + if len(collectes): collecte = collectes.iloc[0] return district, zone, collecte diff --git a/zonalda/api.py b/zonalda/api.py index d43fa8d..498c14c 100644 --- a/zonalda/api.py +++ b/zonalda/api.py @@ -54,10 +54,10 @@ def from_wgs84(self, latitude: float, longitude: float) -> "Emplacement": district, zone, collecte = zonalda(latitude, longitude) return self( district=District(numero=district["id"], conseiller=district["Conseiller"]) - if district + if district is not None else None, collecte=Collecte(jour=collecte["jour"], couleur=collecte["couleur"]) - if collecte + if collecte is not None else None, zone=Zone( zone=zone["ZONE"], @@ -66,7 +66,7 @@ def from_wgs84(self, latitude: float, longitude: float) -> "Emplacement": # FIXME: thoroughly unnecessary JSON parsing geometry=json.loads(shapely.to_geojson(zone["geometry"])), ) - if zone + if zone is not None else None, )
District${district.numero}: ${conseilTexte(district)}
Zone${zone.zone}
District${district.numero} (${conseilTexte(district)})
Zone${zone.zone ?? "inconnue"}
Catégorie${categorieTexte(zone)}
Milieu${milieuTexte(zone)}
Collecte${collecteTexte(collecte)}