From d2fd80aa0e58f7ad0f6f04562ece57a28f5a9bff Mon Sep 17 00:00:00 2001 From: Jonas Braus Date: Fri, 29 Nov 2024 01:02:05 +0100 Subject: [PATCH] fix avg calc --- lib/modules/builderToday.dart | 2 +- lib/modules/builderTodayAverage.dart | 154 +++++++++++---------------- lib/providers/viewProvider.dart | 2 +- 3 files changed, 64 insertions(+), 94 deletions(-) diff --git a/lib/modules/builderToday.dart b/lib/modules/builderToday.dart index 0183d2c..54b967e 100644 --- a/lib/modules/builderToday.dart +++ b/lib/modules/builderToday.dart @@ -24,7 +24,7 @@ class BuilderToday { rating1: rating["q1"], rating2: rating["q2"], text: rating["t1"], - title: ratingNames[key]!["title"]!, + title: ratingNames[key]!["title"]! + (key == "page1" ? ": ${rating["food"]}" : ""), rating1Title: ratingNames[key]!["q1"]!, rating2Title: ratingNames[key]!["q2"]!, ); diff --git a/lib/modules/builderTodayAverage.dart b/lib/modules/builderTodayAverage.dart index b2d1bab..0247cfd 100644 --- a/lib/modules/builderTodayAverage.dart +++ b/lib/modules/builderTodayAverage.dart @@ -2,6 +2,30 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; class BuilderTodayAverage { + static Widget _getRatingWidget (var q1, var q2, var page, var essen, var ratingNames) { + Widget card = Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 5, + blurRadius: 7, + offset: const Offset(0, 3)) + ] + ), + child: RatingCard( + rating1: q1, + rating2: q2, + title: ratingNames[page]["title"] + (essen == -1 ? "" : ": $essen"), + rating1Title: ratingNames[page]["q1"], + rating2Title: ratingNames[page]["q2"], + text: "", + ), + ); + + return card; + } + static Widget build(var context, var snapshot, var ratingNames) { var data = snapshot.data; @@ -9,42 +33,43 @@ class BuilderTodayAverage { return const Center(); } - var avgs = { - "page1": {"q1": 0.0, "q2": 0.0, "qc": 0.0}, - "page2": {"q1": 0.0, "q2": 0.0, "qc": 0.0}, - "page3": {"q1": 0.0, "q2": 0.0, "qc": 0.0} + var avgP1F1 = [0.0, 0.0, 0]; + var avgP1F2 = [0.0, 0.0, 0]; + var avgP1F3 = [0.0, 0.0, 0]; + var avgP2 = [0.0, 0.0, 0]; + var avgP3 = [0.0, 0.0, 0]; + + var foodMap = { + 1: avgP1F1, + 2: avgP1F2, + 3: avgP1F3 }; - // sum up for (var map in data) { var ratings = map["ratings"]; + var food = ratings["page1"]["food"]; + var page1 = ratings["page1"], page2 = ratings["page2"], page3 = ratings["page3"]; - for (var key in ratings.keys) { - var page = ratings[key]; - - var q1 = avgs[key]!["q1"]! + page["q1"]; - var q2 = avgs[key]!["q2"]! + page["q2"]; - avgs[key]?["q1"] = q1.toDouble(); - avgs[key]?["q2"] = q2.toDouble(); - - var qc = avgs[key]!["qc"]!; - qc += (page["q1"] == 0 ? 0 : 1); - avgs[key]?["qc"] = qc; - } + foodMap[food]?[0] += page1["q1"]; + foodMap[food]?[1] += page1["q2"]; + foodMap[food]?[2] += page1["q1"] == 0 ? 0 : 1; + avgP2[0] += page2["q1"]; + avgP2[1] += page2["q2"]; + avgP2[2] += page2["q1"] == 0 ? 0 : 1; + avgP3[0] += page3["q1"]; + avgP3[1] += page3["q2"]; + avgP3[2] += page3["q1"] == 0 ? 0 : 1; } - // average calc - for (var key in avgs.keys) { - var page = avgs[key]; - - var q1 = page!["q1"]! / page["qc"]!; - var q2 = page["q2"]! / page["qc"]!; - - avgs[key]?["q1"] = q1; - avgs[key]?["q2"] = q2; + for (var i in [1, 2, 3]) { + foodMap[i]?[0] = (foodMap[i]![0] / foodMap[i]![2] == 0 ? 1 : foodMap[i]![2]).toInt(); + foodMap[i]?[1] = (foodMap[i]![1] / foodMap[i]![2] == 0 ? 1 : foodMap[i]![2]).toInt(); } - print(avgs); + avgP2[0] = (avgP2[0] / avgP2[2]).toInt(); + avgP2[1] = (avgP2[1] / avgP2[2]).toInt(); + avgP3[0] = (avgP3[0] / avgP3[2]).toInt(); + avgP3[1] = (avgP3[1] / avgP3[2]).toInt(); return SingleChildScrollView( child: Center( @@ -58,75 +83,20 @@ class BuilderTodayAverage { "Heute - Durchschnitt", style: TextStyle(fontSize: 25), ), - const SizedBox(height: 20,), + const SizedBox( + height: 20, + ), Wrap( + runSpacing: 10, + spacing: 10, crossAxisAlignment: WrapCrossAlignment.center, alignment: WrapAlignment.center, - spacing: 10, - runSpacing: 10, children: [ - Container( - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 7, - offset: const Offset(0, 3)) - ], - borderRadius: BorderRadius.circular(15), - ), - child: RatingCard( - title: ratingNames["page1"]["title"], - rating1Title: ratingNames["page1"]["q1"], - rating1: avgs["page1"]!["q1"]!.toInt(), - rating2Title: ratingNames["page1"]["q2"], - rating2: avgs["page1"]!["q2"]!.toInt(), - text: "", - ), - ), - const SizedBox(height: 10,), - Container( - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 7, - offset: const Offset(0, 3)) - ], - borderRadius: BorderRadius.circular(15), - ), - child: RatingCard( - title: ratingNames["page2"]["title"], - rating1Title: ratingNames["page2"]["q1"], - rating1: avgs["page2"]!["q1"]!.toInt(), - rating2Title: ratingNames["page2"]["q2"], - rating2: avgs["page2"]!["q2"]!.toInt(), - text: "", - ), - ), - const SizedBox(height: 10,), - Container( - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 7, - offset: const Offset(0, 3)) - ], - borderRadius: BorderRadius.circular(15), - ), - child: RatingCard( - title: ratingNames["page3"]["title"], - rating1Title: ratingNames["page3"]["q1"], - rating1: avgs["page3"]!["q1"]!.toInt(), - rating2Title: ratingNames["page3"]["q2"], - rating2: avgs["page3"]!["q2"]!.toInt(), - text: "", - ), - ) + _getRatingWidget(avgP1F1[0], avgP1F1[1], "page1", 1, ratingNames), + _getRatingWidget(avgP1F2[0], avgP1F2[1], "page1", 2, ratingNames), + _getRatingWidget(avgP1F3[0], avgP1F3[1], "page1", 3, ratingNames), + _getRatingWidget(avgP2[0], avgP2[1], "page2", -1, ratingNames), + _getRatingWidget(avgP3[0], avgP3[1], "page3", -1, ratingNames) ], ) ], diff --git a/lib/providers/viewProvider.dart b/lib/providers/viewProvider.dart index 78e2f25..f4f0a0e 100644 --- a/lib/providers/viewProvider.dart +++ b/lib/providers/viewProvider.dart @@ -3,7 +3,7 @@ import 'package:mensaappbackend/modules/builderToday.dart'; import 'package:mensaappbackend/modules/builderTodayAverage.dart'; class ViewProvider extends ChangeNotifier { - var selectedView = 0; + var selectedView = 1; var views = { 0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames),