From 7f85b84a158d7aab426395714937f8c522349978 Mon Sep 17 00:00:00 2001 From: Jonas Braus Date: Thu, 28 Nov 2024 19:39:06 +0100 Subject: [PATCH] New Layout - Pro Bewertung --- lib/main.dart | 4 ++ lib/modules/builderToday.dart | 96 +++++++++++++++++++++++++++++++++ lib/modules/ratingCard.dart | 13 +---- lib/pages/pageDashboard.dart | 60 ++++----------------- lib/providers/pageProvider.dart | 1 - lib/providers/viewProvider.dart | 10 ++++ 6 files changed, 123 insertions(+), 61 deletions(-) create mode 100644 lib/modules/builderToday.dart create mode 100644 lib/providers/viewProvider.dart diff --git a/lib/main.dart b/lib/main.dart index ddcfbc1..09e4072 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/providers/pageProvider.dart'; +import 'package:mensaappbackend/providers/viewProvider.dart'; import 'package:provider/provider.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -24,6 +25,9 @@ class MyApp extends StatelessWidget { providers: [ ChangeNotifierProvider( create: (context) => PageProvider(), + ), + ChangeNotifierProvider( + create: (context) => ViewProvider(), ) ], child: MaterialApp( diff --git a/lib/modules/builderToday.dart b/lib/modules/builderToday.dart new file mode 100644 index 0000000..a87f534 --- /dev/null +++ b/lib/modules/builderToday.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; +import 'package:mensaappbackend/modules/ratingCard.dart'; + +class BuilderToday { + static Widget build (var context, var snapshot, var ratingNames) { + var data = snapshot.data; + List cards = []; + + if (data == null) { + return const Center(); + } + + var i = 0; + for (var map in data) { + var ratings = map["ratings"]; + + List children = [ + ]; + for (var key in ratings.keys) { + var rating = ratings[key]; + + if (rating["q1"] != 0) { + Widget card = RatingCard( + rating1: rating["q1"], + rating2: rating["q2"], + text: rating["t1"], + title: ratingNames[key]!["title"]!, + rating1Title: ratingNames[key]!["q1"]!, + rating2Title: ratingNames[key]!["q2"]!, + ); + children.add(card); + children.add(const SizedBox( + width: 10, + )); + } + } + + cards.add(Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.all(15), + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 5, + blurRadius: 7, + offset: const Offset(0, 3)) + ], + borderRadius: BorderRadius.circular(15), + color: Theme.of(context).colorScheme.surface.withOpacity(0.8)), + child: Column( + children: [ + Text("Bewertung $i", style: const TextStyle(fontSize: 20),), + const SizedBox(height: 10,), + Wrap( + runSpacing: 10, + crossAxisAlignment: WrapCrossAlignment.center, + alignment: WrapAlignment.center, + children: children, + ) + ], + ), + ), + const SizedBox( + height: 15, + ), + ], + )); + i++; + } + + return SingleChildScrollView( + child: Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 20, + ), + const Text( + "Tagesaktuell", + style: TextStyle(fontSize: 25), + ), + const SizedBox( + height: 20, + ), + for (var card in cards) card + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/modules/ratingCard.dart b/lib/modules/ratingCard.dart index 07d9004..2319531 100644 --- a/lib/modules/ratingCard.dart +++ b/lib/modules/ratingCard.dart @@ -24,17 +24,11 @@ class RatingCard extends StatelessWidget { return Column( children: [ Container( - padding: EdgeInsets.all(15), + padding: EdgeInsets.all(10), decoration: BoxDecoration( color: Theme.of(context).colorScheme.surface, borderRadius: BorderRadius.circular(15), - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 7, - offset: Offset(0, 3)) - ]), + ), child: Column( children: [ Text(title, style: TextStyle(fontSize: 22),), @@ -49,9 +43,6 @@ class RatingCard extends StatelessWidget { ], ), ), - SizedBox( - height: 20, - ) ], ); } diff --git a/lib/pages/pageDashboard.dart b/lib/pages/pageDashboard.dart index 3510430..042f45e 100644 --- a/lib/pages/pageDashboard.dart +++ b/lib/pages/pageDashboard.dart @@ -1,15 +1,18 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; import 'package:mensaappbackend/providers/pageProvider.dart'; +import 'package:mensaappbackend/providers/viewProvider.dart'; import 'package:provider/provider.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; class PageDashboard extends StatelessWidget { const PageDashboard({super.key}); - Future> requestSupaBase7Days() async { + Future> requestSupabaseToday() async { var supabase = Supabase.instance.client; - var result = await supabase.from("ratings_database").select("ratings"); + var now = DateTime.now(); + var morning = DateTime(now.year, now.month, now.day, 10, 0); + var result = await supabase.from("ratings_database").select("ratings").gte("created_at", morning); return result; } @@ -25,7 +28,7 @@ class PageDashboard extends StatelessWidget { appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.primary, title: Text( - "Dashboard - Bewertungen", + "Dashboard", style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), ), centerTitle: false, @@ -49,53 +52,12 @@ class PageDashboard extends StatelessWidget { ], ), body: FutureBuilder( - future: requestSupaBase7Days(), + future: requestSupabaseToday(), builder: (context, snapshot) { - var data = snapshot.data; - List cards = []; - - if (data == null) { - return Center(); - } - - for (var map in data) { - var ratings = map["ratings"]; - - for (var key in ratings.keys) { - var rating = ratings[key]; - - if (rating["q1"] != 0) { - cards.add(RatingCard( - rating1: rating["q1"], - rating2: rating["q2"], - text: rating["t1"], - title: ratingNames[key]!["title"]!, - rating1Title: ratingNames[key]!["q1"]!, - rating2Title: ratingNames[key]!["q2"]!, - )); - } - } - } - - return SingleChildScrollView( - child: Center( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SizedBox( - height: 20, - ), - Text( - "Letze 7 Tage:", - style: TextStyle(fontSize: 25), - ), - SizedBox( - height: 20, - ), - for (var card in cards) card - ], - ), - ), + return Consumer ( + builder: (context, viewProvider, child) { + return viewProvider.views[viewProvider.selectedView]!(context, snapshot, ratingNames); + }, ); }, ), diff --git a/lib/providers/pageProvider.dart b/lib/providers/pageProvider.dart index 39f6f61..97f1686 100644 --- a/lib/providers/pageProvider.dart +++ b/lib/providers/pageProvider.dart @@ -13,7 +13,6 @@ class PageProvider extends ChangeNotifier { ]; void setSelectedPage(var index) { - print("hallo"); selectedPage = index; notifyListeners(); } diff --git a/lib/providers/viewProvider.dart b/lib/providers/viewProvider.dart new file mode 100644 index 0000000..3bb4829 --- /dev/null +++ b/lib/providers/viewProvider.dart @@ -0,0 +1,10 @@ +import 'package:flutter/cupertino.dart'; +import 'package:mensaappbackend/modules/builderToday.dart'; + +class ViewProvider extends ChangeNotifier { + var selectedView = 0; + + var views = { + 0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames) + }; +} \ No newline at end of file