From 4035e50190c1a21e570fd0634046644b1c037f89 Mon Sep 17 00:00:00 2001 From: Thomas Fransolet Date: Wed, 10 Jul 2024 14:53:55 +0200 Subject: [PATCH] Prevent wrong data for agenda + add translations for month filter --- lib/Models/agenda.dart | 16 ++++++++++------ lib/Screens/Agenda/agenda_view.dart | 2 +- lib/Screens/Agenda/month_filter.dart | 20 +++++++++++++------- pubspec.yaml | 2 +- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/lib/Models/agenda.dart b/lib/Models/agenda.dart index c95fa98..0c2439e 100644 --- a/lib/Models/agenda.dart +++ b/lib/Models/agenda.dart @@ -10,7 +10,11 @@ class Agenda { List events = []; for (var eventData in jsonList) { - events.add(EventAgenda.fromJson(eventData)); + try { + events.add(EventAgenda.fromJson(eventData)); + } catch(e) { + print("Erreur lors du parsing du json : ${e.toString()}"); + } } return Agenda(events: events); @@ -52,12 +56,12 @@ class EventAgenda { return EventAgenda( name: json['name'], description: json['description'], - type: json['type'], - dateAdded: DateTime.parse(json['date_added']), - dateFrom: DateTime.parse(json['date_from']), - dateTo: DateTime.parse(json['date_to']), + type: json['type'] is !bool ? json['type'] : null, + dateAdded: json['date_added'] != null && json['date_added'].isNotEmpty ? DateTime.parse(json['date_added']) : null, + dateFrom: json['date_from'] != null && json['date_from'].isNotEmpty ? DateTime.parse(json['date_from']) : null, + dateTo: json['date_to'] != null && json['date_to'].isNotEmpty ? DateTime.parse(json['date_to']) : null, dateHour: json['date_hour'], - address: EventAddress.fromJson(json['address']), + address: json['address'] is !bool ? EventAddress.fromJson(json['address']) : null, website: json['website'], phone: json['phone'], idVideoYoutube: json['id_video_youtube'], diff --git a/lib/Screens/Agenda/agenda_view.dart b/lib/Screens/Agenda/agenda_view.dart index 035b943..9bc329f 100644 --- a/lib/Screens/Agenda/agenda_view.dart +++ b/lib/Screens/Agenda/agenda_view.dart @@ -60,7 +60,7 @@ class _AgendaView extends State { var jsonString = await response.transform(utf8.decoder).join(); agenda = Agenda.fromJson(jsonString); - agenda.events = agenda.events.where((a) => a.dateFrom!.isAfter(DateTime.now())).toList(); + agenda.events = agenda.events.where((a) => a.dateFrom != null && a.dateFrom!.isAfter(DateTime.now())).toList(); agenda.events.sort((a, b) => a.dateFrom!.compareTo(b.dateFrom!)); filteredAgenda.value = agenda.events; diff --git a/lib/Screens/Agenda/month_filter.dart b/lib/Screens/Agenda/month_filter.dart index dc05e50..f46e257 100644 --- a/lib/Screens/Agenda/month_filter.dart +++ b/lib/Screens/Agenda/month_filter.dart @@ -20,10 +20,16 @@ class _MonthFilterState extends State { String? _selectedMonth; Map> monthNames = { - 'fr': ['', - 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre' - ], - // Ajoutez d'autres langues au besoin + 'fr': ['', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'], + 'en': ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + 'de': ['', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], + 'nl': ['', 'Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'], + 'it': ['', 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'], + 'es': ['', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], + 'pl': ['', 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'], + 'cn': ['', '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], + 'uk': ['', 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'], + 'ar': ['', 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], }; @override @@ -48,7 +54,7 @@ class _MonthFilterState extends State { // Vérifier si nbrEvents est supérieur à 0 if (nbrEvents > 0) { - String monthName = _getTranslatedMonthName(monthYear); + String monthName = _getTranslatedMonthName(tabletAppContext, monthYear); RegExp regExp = RegExp(r'\d{4}'); String annee = regExp.stringMatch(monthYear)!; @@ -78,11 +84,11 @@ class _MonthFilterState extends State { ); } - String _getTranslatedMonthName(String monthYear) { + String _getTranslatedMonthName(TabletAppContext tabletAppContext, String monthYear) { // Récupérez le numéro du mois à partir de la chaîne "monthYear" int monthIndex = int.parse(monthYear.split('-')[0]); // Récupérez le nom du mois traduit dans la langue sélectionnée - String translatedMonthName = monthNames["fr"]![monthIndex]; + String translatedMonthName = monthNames[tabletAppContext.language!.toLowerCase()]![monthIndex]; return translatedMonthName; } diff --git a/pubspec.yaml b/pubspec.yaml index 31c99a9..8c45a70 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.1.0+20 +version: 2.1.1+21 environment: sdk: ">=3.1.0 <4.0.0"