diff --git a/lib/modules/builderAverage.dart b/lib/modules/builderAverage.dart new file mode 100644 index 0000000..28ecec0 --- /dev/null +++ b/lib/modules/builderAverage.dart @@ -0,0 +1,166 @@ +import 'package:flutter/material.dart'; +import 'package:mensaappbackend/modules/ratingCard.dart'; +import 'package:mensaappbackend/providers/timeProvider.dart'; +import 'package:provider/provider.dart'; + +class BuilderAverage { + static Widget build(var context, var snapshot, var ratingNames) { + var data = snapshot.data; + //print(data); + + Map dic = { + "page1":{}, + "page2": { + "q1" : 0, + "q2" : 0, + "counter" : 0 + }, + "page3": { + "q1" : 0, + "q2" : 0, + "counter" : 0 + } + }; + + for (Map bewertung in data){ + for (var page in bewertung["ratings"].keys) { + var tmp_dic = bewertung["ratings"][page]; + switch (page){ + case "page1": + var curKey = tmp_dic["food"].split(":")[1]; + if (!dic["page1"]!.containsKey(curKey)){ + dic["page1"]![curKey] = { + "q1" : 0, + "q2" : 0, + "counter" : 0 + }; + } + dic["page1"]![curKey]["q1"] += tmp_dic["q1"]; + dic["page1"]![curKey]["q2"] += tmp_dic["q2"]; + dic["page1"]![curKey]["counter"] += tmp_dic["q1"] == 0 ? 0 : 1 ; + break; + + case "page2": + dic["page2"]!["q1"] += tmp_dic["q1"]; + dic["page2"]!["q2"] += tmp_dic["q2"]; + dic["page2"]!["counter"] += tmp_dic["q1"] == 0 ? 0 : 1 ; + break; + + case "page3": + dic["page3"]!["q1"] += tmp_dic["q1"]; + dic["page3"]!["q2"] += tmp_dic["q2"]; + dic["page3"]!["counter"] += tmp_dic["q1"] == 0 ? 0 : 1 ; + break; + } + } + } + + print(dic); + + + + + 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"]! + + (key == "page1" ? "${rating["food"]}" : ""), + 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.stretch, + children: [ + Container( + padding: const EdgeInsets.all(15), + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.8), + spreadRadius: 0, + blurRadius: 0, + offset: const Offset(0, 0)) + ], + 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( + runAlignment: WrapAlignment.center, + crossAxisAlignment: WrapCrossAlignment.center, + runSpacing: 10, + children: children, + ) + ], + ), + ), + const SizedBox( + height: 15, + ), + ], + )); + i++; + } + + return Center( + child: IntrinsicWidth( + stepWidth: 2, + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 20, + ), + Consumer( + builder: (context, timeProvider, child) { + // Dynamischer Text basierend auf TimeProvider + String text = timeProvider.timeList[timeProvider.selectedTime]!; + return Text( + text + " - Durchschnitt", + style: const TextStyle(fontSize: 25), + ); + }, + ), + const SizedBox( + height: 20, + ), + for (var card in cards) card, + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/pageDashboard.dart b/lib/pages/pageDashboard.dart index dbd6164..6f50894 100644 --- a/lib/pages/pageDashboard.dart +++ b/lib/pages/pageDashboard.dart @@ -31,10 +31,6 @@ class PageDashboard extends StatelessWidget { @override Widget build(BuildContext context) { - var viewDatabaseFunctions = { - 0: requestSupabaseTimeSpan, - 1: requestSupabaseTimeSpan, //replace with avg function - }; return Scaffold( appBar: AppBar( @@ -112,7 +108,7 @@ class PageDashboard extends StatelessWidget { ), body: FutureBuilder( - future: viewDatabaseFunctions[Provider.of(context, listen: false).selectedView]!( + future: requestSupabaseTimeSpan( Provider.of(context).selectedTime ), builder: (context, snapshot) { diff --git a/lib/providers/viewProvider.dart b/lib/providers/viewProvider.dart index dc138cc..189f0e2 100644 --- a/lib/providers/viewProvider.dart +++ b/lib/providers/viewProvider.dart @@ -1,11 +1,14 @@ import 'package:flutter/cupertino.dart'; import 'package:mensaappbackend/modules/builderNormal.dart'; +import 'package:mensaappbackend/modules/builderAverage.dart'; + class ViewProvider extends ChangeNotifier { var selectedView = 0; var views = { - 0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames) + 0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames), + 1: (context, snapshot, ratingNames) => BuilderAverage.build(context, snapshot, ratingNames) }; void setSelectedView(var index) {