diff --git a/data-fetch/maj-villesplus.js b/data-fetch/maj-villesplus.js index c4ceb07..ac173c8 100644 --- a/data-fetch/maj-villesplus.js +++ b/data-fetch/maj-villesplus.js @@ -22,6 +22,11 @@ const normalizeEpci = (s) => epci.find(({ nom }) => simplify(nom).includes(simpl const data = Object.fromEntries(await Promise.all(classsements.map(fetchAndNormalize))); +data.dateClassement = new Intl.DateTimeFormat('fr-FR', { + year: 'numeric', + month: 'long', +}).format(new Date()); + if (data.metropoles.find((n) => !n)) { console.log('❌ Missing EPCI:'); console.log(data.metropoles.filter(Boolean).join('\n')); diff --git a/src/lib/data/classement-villeplus.json b/src/lib/data/classement-villeplus.json index 47f67e7..ba737fd 100644 --- a/src/lib/data/classement-villeplus.json +++ b/src/lib/data/classement-villeplus.json @@ -7,120 +7,120 @@ "Gironde", "Territoire-de-Belfort", "Essonne", - "Haut-Rhin", "Seine-Saint-Denis", + "Haut-Rhin", "Landes", "Charente-Maritime", - "Vendée", "Morbihan", "Hérault", - "Loire-Atlantique", + "Vendée", "Moselle", - "Var", + "Loire-Atlantique", "Yvelines", - "Tarn-et-Garonne", "Loiret", + "Tarn-et-Garonne", + "Pyrénées-Orientales", "Rhône", + "Nièvre", "Haute-Garonne", - "Pyrénées-Orientales", - "Bouches-du-Rhône", - "Ille-et-Vilaine", - "Lot-et-Garonne", "Ardennes", - "Isère", - "Nièvre", + "Haute-Loire", + "Ille-et-Vilaine", + "Bouches-du-Rhône", + "Var", "Indre-et-Loire", - "Vaucluse", + "Isère", "Haute-Savoie", - "Val-d'Oise", + "Vaucluse", "Vosges", + "Lot-et-Garonne", + "Val-d'Oise", + "Seine-et-Marne", + "Calvados", "Ardèche", "Nord", - "Calvados", - "Seine-et-Marne", - "Haute-Marne", - "Alpes-Maritimes", - "Gard", "Mayenne", - "Haute-Loire", "Côte-d'Or", + "Haute-Marne", + "Gard", + "Oise", + "Alpes-Maritimes", "Saône-et-Loire", + "Vienne", "Jura", + "Deux-Sèvres", "Drôme", - "Finistère", "Yonne", + "Finistère", + "Dordogne", + "Hautes-Pyrénées", "Maine-et-Loire", + "Loir-et-Cher", "Savoie", - "Oise", - "Vienne", - "Deux-Sèvres", - "Hautes-Pyrénées", "Seine-Maritime", "Ain", "Doubs", - "Dordogne", - "Loir-et-Cher", - "Tarn", - "Cher", + "Aube", "Manche", + "Cher", + "Ariège", + "Haute-Saône", "Pas-de-Calais", - "Aude", - "Marne", "Meurthe-et-Moselle", + "Aude", "Guyane", "Charente", - "Allier", - "Aube", - "Haute-Saône", - "Ariège", - "Pyrénées-Atlantiques", - "Loire", "Eure-et-Loir", "Haute-Vienne", - "Eure", "Indre", + "Pyrénées-Atlantiques", + "Allier", + "Marne", + "Loire", "Sarthe", - "Lot", - "Puy-de-Dôme", "Côtes-d'Armor", - "Cantal", "Somme", + "Eure", + "Lot", + "Cantal", + "Tarn", "Corse-du-Sud", + "Puy-de-Dôme", "Gers", "Guadeloupe", "Meuse", - "Aveyron", "Hautes-Alpes", + "Aveyron", "Alpes-de-Haute-Provence", "Mayotte", - "Aisne", - "Martinique", "Corrèze", - "Lozère", + "Martinique", + "Aisne", "Orne", + "Lozère", "Haute-Corse", "Creuse" ], "metropoles": [ "Eurométropole de Strasbourg", "Bordeaux Métropole", - "Toulouse Métropole", "Grenoble-Alpes-Métropole", - "Montpellier Méditerranée Métropole", + "Toulouse Métropole", "Métropole Toulon-Provence-Méditerranée", - "CC du Bassin de Marennes", + "Montpellier Méditerranée Métropole", "Orléans Métropole", + "CC du Bassin de Marennes", "CC de la Plaine Dijonnaise", + "Nantes Métropole", "Métropole du Grand Paris", "Métropole de Lyon", "Tours Métropole Val de Loire", "Brest Métropole", "Métropole Européenne de Lille", - "Nantes Métropole", "Métropole du Grand Nancy", - "Metz Métropole", - "Métropole Rouen Normandie", "Clermont Auvergne Métropole", + "Métropole Rouen Normandie", + "Metz Métropole", "Métropole Nice Côte d'Azur", "Métropole d'Aix-Marseille-Provence", "Saint-Etienne Métropole" @@ -129,333 +129,334 @@ "Strasbourg", "Orléans", "Paris", - "Toulouse", "Grenoble", + "Toulouse", "Rennes", + "Lyon", "Le Havre", + "Bordeaux", "Montpellier", - "Lyon", "Metz", - "Bordeaux", + "Lille", "Rouen", - "Dijon", "Tours", - "Lille", - "Nice", - "Reims", "Villeurbanne", + "Dijon", + "Reims", + "Nice", "Marseille", - "Nantes", - "Angers", - "Aix-en-Provence", "Toulon", - "Brest", + "Angers", + "Nantes", "Clermont-Ferrand", + "Aix-en-Provence", "Le Mans", + "Brest", "Nancy", - "Saint-Étienne", - "Nîmes" + "Nîmes", + "Saint-Étienne" ], "prefectures": [ "La Rochelle", - "Chambéry", - "Versailles", "Créteil", + "Chambéry", + "Agen", "Colmar", + "Versailles", "Charleville-Mézières", + "Nanterre", + "Blois", + "Belfort", "Vannes", "Châteauroux", - "Agen", - "Belfort", - "La Roche-sur-Yon", - "Blois", - "Nanterre", - "Bourg-en-Bresse", - "Périgueux", - "Bourges", - "Mont-de-Marsan", "Évry-Courcouronnes", "Valence", "Troyes", - "Auxerre", + "Mont-de-Marsan", + "Périgueux", + "La Roche-sur-Yon", + "Bourg-en-Bresse", "Mâcon", "Avignon", - "Laval", - "Cergy", + "Bourges", "Épinal", + "Auxerre", + "Châlons-en-Champagne", "Montauban", + "Cergy", "Vesoul", - "Saint-Brieuc", "Chartres", - "Châlons-en-Champagne", - "Chaumont", - "Angoulême", - "Ajaccio", - "Nevers", "Bobigny", - "Beauvais", - "Le Puy-en-Velay", - "Poitiers", + "Laval", "Pau", + "Poitiers", + "Angoulême", + "Le Puy-en-Velay", + "Arras", + "Ajaccio", + "Chaumont", "Aurillac", + "Laon", + "Beauvais", + "Saint-Brieuc", "Albi", "Melun", - "Laon", - "Arras", - "Cahors", - "Évreux", "Gap", - "Rodez", - "Niort", - "Lons-le-Saunier", - "Foix", + "Cahors", + "Nevers", "Quimper", "Cayenne", - "Bastia", + "Rodez", + "Foix", + "Lons-le-Saunier", + "Niort", + "Évreux", "Tarbes", + "Bastia", "Carcassonne", "Bar-le-Duc", - "Mende", "Alençon", "Moulins", + "Mende", "Guéret", "Saint-Lô", - "Tulle", "Digne-les-Bains", - "Auch", + "Tulle", "Privas", - "Basse-Terre", + "Auch", "Fort-de-France", + "Basse-Terre", "Mamoudzou" ], "communes": [ - "Saint-Médard-en-Jalles", "Saint-Denis", - "Haguenau", + "Saint-Médard-en-Jalles", "Colomiers", + "La Rochelle", + "Haguenau", "Mérignac", + "Gennevilliers", "Schiltigheim", "Saint-Martin-d'Hères", - "La Rochelle", - "Villenave-d'Ornon", - "Chelles", - "Les Sables-d'Olonne", "Thionville", - "Gennevilliers", + "Les Sables-d'Olonne", "Pierrefitte-sur-Seine", - "Bayonne", + "Chelles", "Alfortville", - "Montigny-le-Bretonneux", - "Vaulx-en-Velin", "Maisons-Alfort", - "Bron", + "Pontault-Combault", + "Anglet", "Villeneuve-Saint-Georges", - "Villeneuve-d'Ascq", + "Vaulx-en-Velin", + "Bron", + "Créteil", + "Villenave-d'Ornon", + "Vénissieux", "Pantin", - "Chalon-sur-Saône", - "Vincennes", - "Pessac", "Chambéry", + "Montigny-le-Bretonneux", + "Villeneuve-d'Ascq", + "Vincennes", + "Bayonne", + "Meyzieu", + "Montreuil", "Talence", + "Agen", "Ivry-sur-Seine", - "Sète", - "Pontault-Combault", - "Bègles", - "Versailles", - "Créteil", - "Narbonne", - "Montreuil", - "Vénissieux", - "Meyzieu", - "Anglet", "Colmar", + "Meaux", "Six-Fours-les-Plages", + "Pessac", + "Versailles", + "Chalon-sur-Saône", + "Massy", + "Sète", + "Bègles", + "Cherbourg-en-Cotentin", + "Noisy-le-Grand", "Marcq-en-Barœul", + "Narbonne", + "Mulhouse", "Charleville-Mézières", "Échirolles", "Puteaux", - "Saint-Nazaire", - "Massy", - "Vannes", - "Fréjus", - "Vitry-sur-Seine", - "Châteauroux", - "Cherbourg-en-Cotentin", - "Meaux", - "Agen", + "Nanterre", + "Blois", "Belfort", + "Vitry-sur-Seine", "Athis-Mons", - "Cannes", - "Caen", - "Mulhouse", - "Perpignan", - "Trappes", + "Boulogne-sur-Mer", "Antony", + "Vannes", + "Châteauroux", + "Saint-Nazaire", + "Trappes", + "Évry-Courcouronnes", "Villejuif", + "Saint-Germain-en-Laye", "Malakoff", - "La Roche-sur-Yon", - "Blois", - "Nanterre", - "Noisy-le-Grand", - "Boulogne-sur-Mer", "Rillieux-la-Pape", - "Bourg-en-Bresse", - "Saint-Germain-en-Laye", "Marignane", - "Saint-Malo", "Dunkerque", - "Aubervilliers", - "Bourges", - "Valenciennes", - "Évry-Courcouronnes", + "Cannes", + "Douai", "Valence", - "Corbeil-Essonnes", - "Hyères", - "Montrouge", - "Franconville", "Troyes", - "Castres", + "La Roche-sur-Yon", "Arles", + "Valenciennes", + "Issy-les-Moulineaux", + "Fréjus", + "Bourg-en-Bresse", "Saint-Priest", - "Auxerre", + "Perpignan", + "Corbeil-Essonnes", + "Caen", + "Hyères", + "Palaiseau", "Mâcon", - "Issy-les-Moulineaux", + "Montrouge", "Avignon", "Amiens", - "Lorient", - "Laval", - "Savigny-le-Temple", - "Douai", - "Le Blanc-Mesnil", - "Choisy-le-Roi", - "Aix-les-Bains", - "Cachan", "Salon-de-Provence", + "Aubervilliers", + "Bourges", + "Aix-les-Bains", + "Franconville", + "Saint-Malo", + "Épinal", + "Auxerre", "Calais", - "Palaiseau", + "Choisy-le-Roi", + "Châlons-en-Champagne", + "Montauban", + "Cachan", + "Lorient", + "Savigny-le-Temple", + "Martigues", + "Châtenay-Malabry", "Saint-Ouen-sur-Seine", "Cergy", - "Épinal", "Annecy", "Épinay-sur-Seine", - "Thiais", - "Châtenay-Malabry", + "Le Blanc-Mesnil", "Antibes", + "Thiais", "Courbevoie", - "Montauban", - "Besançon", - "Alès", - "Saint-Brieuc", - "Sainte-Geneviève-des-Bois", - "Roubaix", - "Aulnay-sous-Bois", "Sevran", - "Martigues", - "Saint-Raphaël", + "Neuilly-sur-Marne", + "Aulnay-sous-Bois", "Châtillon", - "Caluire-et-Cuire", + "Saint-Herblain", + "Châtellerault", "Chartres", - "Neuilly-sur-Marne", + "Saint-Raphaël", + "Caluire-et-Cuire", "Bagnolet", "Le Chesnay-Rocquencourt", - "Lens", - "Compiègne", - "Châlons-en-Champagne", - "Suresnes", - "Saint-Herblain", + "Bobigny", + "Laval", + "Bondy", + "Les Mureaux", + "Limoges", + "Pau", + "Conflans-Sainte-Honorine", + "Alès", "Plaisir", "Villepinte", + "Suresnes", + "Sainte-Geneviève-des-Bois", + "Poitiers", "Angoulême", - "Les Mureaux", - "Cagnes-sur-Mer", + "Romans-sur-Isère", + "Herblay-sur-Seine", + "L'Haÿ-les-Roses", + "Arras", + "Lens", + "Poissy", + "Roubaix", + "Vienne", "Tourcoing", - "Bondy", - "Nevers", - "Bobigny", + "Neuilly-sur-Seine", + "Béziers", + "Rueil-Malmaison", + "Cagnes-sur-Mer", "Beauvais", - "Poitiers", - "Châtellerault", - "Pau", - "Sarcelles", + "Thonon-les-Bains", + "Mantes-la-Jolie", + "Saint-Brieuc", + "Castres", "La Seyne-sur-Mer", - "Herblay-sur-Seine", - "Romans-sur-Isère", - "Limoges", - "Neuilly-sur-Seine", + "Sarcelles", + "Compiègne", "Albi", - "Montélimar", - "Melun", - "Saint-Chamond", - "L'Haÿ-les-Roses", + "Roanne", "Levallois-Perret", - "Vitrolles", "Meudon", - "Colombes", - "Arras", - "Nogent-sur-Marne", + "Melun", + "Gap", + "Rezé", "Champigny-sur-Marne", - "Rueil-Malmaison", - "Thonon-les-Bains", - "Béziers", - "Fontenay-sous-Bois", - "Boulogne-Billancourt", - "Poissy", - "Asnières-sur-Seine", + "Nevers", + "Besançon", + "Pontoise", + "Vitrolles", "La Courneuve", - "Roanne", + "Colombes", "Bezons", - "Goussainville", - "Pontoise", + "Asnières-sur-Seine", + "Argenteuil", "Garges-lès-Gonesse", + "Goussainville", + "Nogent-sur-Marne", + "Clamart", "Joué-lès-Tours", - "Tremblay-en-France", - "Mantes-la-Jolie", - "Évreux", + "Quimper", "Stains", - "Gap", - "Bagneux", - "Conflans-Sainte-Honorine", - "Argenteuil", - "Vienne", - "Rezé", - "Niort", - "Brive-la-Gaillarde", "Clichy", + "Bagneux", + "Tremblay-en-France", + "Saint-Chamond", + "Sartrouville", + "Fontenay-sous-Bois", + "Rosny-sous-Bois", + "Boulogne-Billancourt", + "Dreux", + "Montélimar", "Creil", - "Clamart", - "Cholet", + "Niort", "Le Cannet", - "Cambrai", - "Drancy", + "Cholet", "Viry-Châtillon", + "Houilles", + "Wattrelos", "Livry-Gargan", - "Dreux", + "Brive-la-Gaillarde", + "Évreux", "Saint-Quentin", - "Rosny-sous-Bois", + "Tarbes", "Romainville", - "Houilles", - "Quimper", - "La Ciotat", "Noisy-le-Sec", - "Tarbes", - "Sartrouville", - "Aubagne", - "Saint-Maur-des-Fossés", - "Wattrelos", "Carcassonne", - "Annemasse", "Saint-Laurent-du-Var", + "Aubagne", + "La Ciotat", + "Cambrai", + "Annemasse", + "Montluçon", + "Saint-Maur-des-Fossés", + "Drancy", "Le Perreux-sur-Marne", "Villefranche-sur-Saône", "Savigny-sur-Orge", "Vigneux-sur-Seine", "Draguignan", + "Grasse", "Gagny", - "Montluçon", "Villemomble", - "Grasse", - "Istres", "Liévin", + "Istres", "Menton" - ] + ], + "dateClassement": "décembre 2023" } \ No newline at end of file diff --git a/src/routes/(front)/(search)/ville/[slug]/+page.server.js b/src/routes/(front)/(search)/ville/[slug]/+page.server.js index a52cea7..7ec06e9 100644 --- a/src/routes/(front)/(search)/ville/[slug]/+page.server.js +++ b/src/routes/(front)/(search)/ville/[slug]/+page.server.js @@ -166,9 +166,8 @@ export async function load({ params }) { if (typeClassement) { infos.classementVillePlus = { typeClassement, - teritoireClasse: city.nom, + territoireClasse: city.nom, position: classementPosition + 1, - total: classementVilleplus[typeClassement].length, }; } else { const posClassementVillePlus = classementVilleplus.metropoles.findIndex( @@ -177,13 +176,38 @@ export async function load({ params }) { if (posClassementVillePlus > -1) { infos.classementVillePlus = { typeClassement: 'metropoles', - teritoireClasse: localisation.epci.nom, + territoireClasse: localisation.epci.nom, position: posClassementVillePlus + 1, - total: classementVilleplus.metropoles.length, }; } } + if (infos.classementVillePlus) { + const leTerritoire = { + departements: 'le département', + metropoles: 'la métropole', + 'grandes-villes': 'la ville', + prefectures: 'la préfecture', + communes: 'la commune', + }; + + const nomClassement = { + departements: 'départements', + metropoles: 'métropoles', + 'grandes-villes': 'grandes villes', + prefectures: 'préfectures', + communes: 'villes moyennes', + }; + + infos.classementVillePlus = { + ...infos.classementVillePlus, + leTerritoire: leTerritoire[infos.classementVillePlus.typeClassement], + nomClassement: nomClassement[infos.classementVillePlus.typeClassement], + total: classementVilleplus[infos.classementVillePlus.typeClassement].length, + dateClassement: classementVilleplus.dateClassement, + }; + } + if (barometreFubPerCity[localisation.codeInsee]) { const labelsFub = { G: 'très défavorable', diff --git a/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte b/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte index 60adc46..607d11d 100644 --- a/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte +++ b/src/routes/(front)/(search)/ville/[slug]/ExplanationsText.svelte @@ -257,14 +257,15 @@ alt="logo villes.plus" /> - Par ailleurs {infos.classementVillePlus.teritoireClasse} se classe {infos + Par ailleurs {infos.classementVillePlus.territoireClasse} se classe {infos .classementVillePlus.position}{infos.classementVillePlus.position === 1 ? 'ère' : 'ème'}/{infos.classementVillePlus.total} au classement des {infos.classementVillePlus.typeClassement} cyclables du site villes.plus. Ce classement mesure la part de pistes cyclables sécurisées pour relier les différentes - mairies de la métropole. + >classement de {infos.classementVillePlus.dateClassement} des {infos.classementVillePlus + .nomClassement} cyclables du site villes.plus. Ce classement mesure la part de pistes cyclables sécurisées pour se déplacer dans {infos + .classementVillePlus.leTerritoire}.

{/if} {/if}