Ver código fonte

P2-1 (app-kant, deel 1): datumfilter-plumbing tot aan Home

- custom functions filterDatumVan/filterDatumTot: rekenen 'vandaag', 'weekend'
  en 'week' om naar Bob's formaat (yyyy-MM-dd HH:mm:ss, bovengrens 23:59:59);
  alles anders geeft een lege string = geen filter. Lokaal in Dart getest op
  jaargrens en beide DST-weekenden.
- API Call homeTabel: variabelen datum_van/datum_tot (lege default) + query
  parameters. Gemeten: lege waarden = geen filter (1775 items), een gezette
  grens filtert correct.
- HomeUitgaantabelKaartComponent: parameters datumVan/datumTot (optioneel),
  doorgegeven aan de Backend Query.

Nog te doen: de chips op Home zelf (page state + Value Key).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 4 horas atrás
pai
commit
870a7bca51

+ 10 - 6
lib/backend/api_requests/api_calls.dart

@@ -246,6 +246,8 @@ class HomeTabelCall {
   static Future<ApiCallResponse> call({
     int? page = 0,
     String? displayId = 'services_2',
+    String? datumVan = '',
+    String? datumTot = '',
   }) async {
     return ApiManager.instance.makeApiCall(
       callName: 'homeTabel',
@@ -256,6 +258,8 @@ class HomeTabelCall {
       params: {
         'page': page,
         'display_id': displayId,
+        'datum_van': datumVan,
+        'datum_tot': datumTot,
       },
       returnBody: true,
       encodeBodyUtf8: false,
@@ -579,7 +583,7 @@ class EstablishmentInfoCall {
     return ApiManager.instance.makeApiCall(
       callName: 'EstablishmentInfo',
       apiUrl:
-          'https://uitgaanskrant.com/en/flutterdrup/views/flutterflowmobiel_establishment_info.json?display_id=services_1',
+          'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel_establishment_info.json?display_id=services_1',
       callType: ApiCallType.GET,
       headers: {},
       params: {
@@ -778,7 +782,7 @@ class HorecagelegenheidEventsCall {
     return ApiManager.instance.makeApiCall(
       callName: 'HorecagelegenheidEvents',
       apiUrl:
-          'https://uitgaanskrant.com/en/flutterdrup/views/flutterflowmobiel_establishment_events.json?display_id=services_1',
+          'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflowmobiel_establishment_events.json?display_id=services_1',
       callType: ApiCallType.GET,
       headers: {},
       params: {
@@ -927,7 +931,7 @@ class EvenementCall {
     return ApiManager.instance.makeApiCall(
       callName: 'Evenement',
       apiUrl:
-          'https://uitgaanskrant.com/en/flutterdrup/views/flutterflow_events.json?display_id=services_1',
+          'https://uitgaanskrant.com/nl/flutterdrup/views/flutterflow_events.json?display_id=services_1',
       callType: ApiCallType.GET,
       headers: {},
       params: {
@@ -1093,7 +1097,7 @@ class RequestNewPasswordCall {
     return ApiManager.instance.makeApiCall(
       callName: 'requestNewPassword',
       apiUrl:
-          'https://uitgaanskrant.com/en/flutterdrup/user/request_new_password.json',
+          'https://uitgaanskrant.com/nl/flutterdrup/user/request_new_password.json',
       callType: ApiCallType.POST,
       headers: {},
       params: {},
@@ -1123,7 +1127,7 @@ class MijnHorecagelegenhedenCall {
     return ApiManager.instance.makeApiCall(
       callName: 'MijnHorecagelegenheden',
       apiUrl:
-          'https://uitgaanskrant.com/en/flutterdrup/mijn_horecagelegenheden.json',
+          'https://uitgaanskrant.com/nl/flutterdrup/mijn_horecagelegenheden.json',
       callType: ApiCallType.GET,
       headers: {
         'Cookie': '${sessionName}=${sessid}',
@@ -1147,7 +1151,7 @@ class MijnStadsrechtenCall {
   }) async {
     return ApiManager.instance.makeApiCall(
       callName: 'MijnStadsrechten',
-      apiUrl: 'https://uitgaanskrant.com/en/flutterdrup/mijn_stadsrechten.json',
+      apiUrl: 'https://uitgaanskrant.com/nl/flutterdrup/mijn_stadsrechten.json',
       callType: ApiCallType.GET,
       headers: {
         'Cookie': '${sessionName}=${sessid}',

+ 38 - 0
lib/flutter_flow/custom_functions.dart

@@ -277,3 +277,41 @@ List<dynamic>? categorieAlsLijst(dynamic categorie) {
       uit.add(deel.toString().trim());
   return uit;
 }
+
+String? filterDatumVan(String? keuze) {
+  if (keuze == null) {
+    return '';
+  }
+  final nu = DateTime.now();
+  int extra = 0;
+  if (keuze == 'weekend') {
+    if (nu.weekday < 6) {
+      extra = 6 - nu.weekday;
+    }
+  } else if (keuze != 'vandaag' && keuze != 'week') {
+    return '';
+  }
+  final start = DateTime(nu.year, nu.month, nu.day + extra);
+  final maand = start.month.toString().padLeft(2, '0');
+  final dag = start.day.toString().padLeft(2, '0');
+  return '${start.year}-$maand-$dag 00:00:00';
+}
+
+String? filterDatumTot(String? keuze) {
+  if (keuze == null) {
+    return '';
+  }
+  final nu = DateTime.now();
+  int extra = 0;
+  if (keuze == 'weekend' || keuze == 'week') {
+    if (nu.weekday < 7) {
+      extra = 7 - nu.weekday;
+    }
+  } else if (keuze != 'vandaag') {
+    return '';
+  }
+  final eind = DateTime(nu.year, nu.month, nu.day + extra);
+  final maand = eind.month.toString().padLeft(2, '0');
+  final dag = eind.day.toString().padLeft(2, '0');
+  return '${eind.year}-$maand-$dag 23:59:59';
+}

+ 20 - 0
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_model.dart

@@ -114,6 +114,26 @@ class HomeUitgaantabelKaartComponentModel
                 'reference=ShsKEwoJZGlzcGxheWlkEgY1MHUzeWpyBAgDIAFQAFoJZGlzcGxheWlk',
             name: 'String',
             nullable: true,
+          ),
+          'datumVan': debugSerializeParam(
+            widget?.datumVan,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaantabelKaartComponent',
+            searchReference:
+                'reference=ShoKEgoIZGF0dW1WYW4SBmIwc3Y2YXIECAMgAFAAWghkYXR1bVZhbg==',
+            name: 'String',
+            nullable: true,
+          ),
+          'datumTot': debugSerializeParam(
+            widget?.datumTot,
+            ParamType.String,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=HomeUitgaantabelKaartComponent',
+            searchReference:
+                'reference=ShoKEgoIZGF0dW1Ub3QSBnh4dmpia3IECAMgAFAAWghkYXR1bVRvdA==',
+            name: 'String',
+            nullable: true,
           )
         }.withoutNulls.entries,
         generatorVariables: debugGeneratorVariables.entries,

+ 6 - 0
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart

@@ -23,9 +23,13 @@ class HomeUitgaantabelKaartComponentWidget extends StatefulWidget {
   const HomeUitgaantabelKaartComponentWidget({
     super.key,
     required this.displayid,
+    this.datumVan,
+    this.datumTot,
   });
 
   final String? displayid;
+  final String? datumVan;
+  final String? datumTot;
 
   @override
   State<HomeUitgaantabelKaartComponentWidget> createState() =>
@@ -135,6 +139,8 @@ class _HomeUitgaantabelKaartComponentWidgetState
             (nextPageMarker) => HomeTabelCall.call(
               page: nextPageMarker.nextPageNumber,
               displayId: widget!.displayid,
+              datumVan: widget!.datumVan,
+              datumTot: widget!.datumTot,
             ),
           ),
           crossAxisCount: () {