fix avg calc
This commit is contained in:
@@ -24,7 +24,7 @@ class BuilderToday {
|
|||||||
rating1: rating["q1"],
|
rating1: rating["q1"],
|
||||||
rating2: rating["q2"],
|
rating2: rating["q2"],
|
||||||
text: rating["t1"],
|
text: rating["t1"],
|
||||||
title: ratingNames[key]!["title"]!,
|
title: ratingNames[key]!["title"]! + (key == "page1" ? ": ${rating["food"]}" : ""),
|
||||||
rating1Title: ratingNames[key]!["q1"]!,
|
rating1Title: ratingNames[key]!["q1"]!,
|
||||||
rating2Title: ratingNames[key]!["q2"]!,
|
rating2Title: ratingNames[key]!["q2"]!,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,6 +2,30 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:mensaappbackend/modules/ratingCard.dart';
|
import 'package:mensaappbackend/modules/ratingCard.dart';
|
||||||
|
|
||||||
class BuilderTodayAverage {
|
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) {
|
static Widget build(var context, var snapshot, var ratingNames) {
|
||||||
var data = snapshot.data;
|
var data = snapshot.data;
|
||||||
|
|
||||||
@@ -9,42 +33,43 @@ class BuilderTodayAverage {
|
|||||||
return const Center();
|
return const Center();
|
||||||
}
|
}
|
||||||
|
|
||||||
var avgs = {
|
var avgP1F1 = [0.0, 0.0, 0];
|
||||||
"page1": {"q1": 0.0, "q2": 0.0, "qc": 0.0},
|
var avgP1F2 = [0.0, 0.0, 0];
|
||||||
"page2": {"q1": 0.0, "q2": 0.0, "qc": 0.0},
|
var avgP1F3 = [0.0, 0.0, 0];
|
||||||
"page3": {"q1": 0.0, "q2": 0.0, "qc": 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) {
|
for (var map in data) {
|
||||||
var ratings = map["ratings"];
|
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) {
|
foodMap[food]?[0] += page1["q1"];
|
||||||
var page = ratings[key];
|
foodMap[food]?[1] += page1["q2"];
|
||||||
|
foodMap[food]?[2] += page1["q1"] == 0 ? 0 : 1;
|
||||||
var q1 = avgs[key]!["q1"]! + page["q1"];
|
avgP2[0] += page2["q1"];
|
||||||
var q2 = avgs[key]!["q2"]! + page["q2"];
|
avgP2[1] += page2["q2"];
|
||||||
avgs[key]?["q1"] = q1.toDouble();
|
avgP2[2] += page2["q1"] == 0 ? 0 : 1;
|
||||||
avgs[key]?["q2"] = q2.toDouble();
|
avgP3[0] += page3["q1"];
|
||||||
|
avgP3[1] += page3["q2"];
|
||||||
var qc = avgs[key]!["qc"]!;
|
avgP3[2] += page3["q1"] == 0 ? 0 : 1;
|
||||||
qc += (page["q1"] == 0 ? 0 : 1);
|
|
||||||
avgs[key]?["qc"] = qc;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// average calc
|
for (var i in [1, 2, 3]) {
|
||||||
for (var key in avgs.keys) {
|
foodMap[i]?[0] = (foodMap[i]![0] / foodMap[i]![2] == 0 ? 1 : foodMap[i]![2]).toInt();
|
||||||
var page = avgs[key];
|
foodMap[i]?[1] = (foodMap[i]![1] / foodMap[i]![2] == 0 ? 1 : foodMap[i]![2]).toInt();
|
||||||
|
|
||||||
var q1 = page!["q1"]! / page["qc"]!;
|
|
||||||
var q2 = page["q2"]! / page["qc"]!;
|
|
||||||
|
|
||||||
avgs[key]?["q1"] = q1;
|
|
||||||
avgs[key]?["q2"] = q2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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(
|
return SingleChildScrollView(
|
||||||
child: Center(
|
child: Center(
|
||||||
@@ -58,75 +83,20 @@ class BuilderTodayAverage {
|
|||||||
"Heute - Durchschnitt",
|
"Heute - Durchschnitt",
|
||||||
style: TextStyle(fontSize: 25),
|
style: TextStyle(fontSize: 25),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20,),
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
Wrap(
|
Wrap(
|
||||||
|
runSpacing: 10,
|
||||||
|
spacing: 10,
|
||||||
crossAxisAlignment: WrapCrossAlignment.center,
|
crossAxisAlignment: WrapCrossAlignment.center,
|
||||||
alignment: WrapAlignment.center,
|
alignment: WrapAlignment.center,
|
||||||
spacing: 10,
|
|
||||||
runSpacing: 10,
|
|
||||||
children: [
|
children: [
|
||||||
Container(
|
_getRatingWidget(avgP1F1[0], avgP1F1[1], "page1", 1, ratingNames),
|
||||||
decoration: BoxDecoration(
|
_getRatingWidget(avgP1F2[0], avgP1F2[1], "page1", 2, ratingNames),
|
||||||
boxShadow: [
|
_getRatingWidget(avgP1F3[0], avgP1F3[1], "page1", 3, ratingNames),
|
||||||
BoxShadow(
|
_getRatingWidget(avgP2[0], avgP2[1], "page2", -1, ratingNames),
|
||||||
color: Colors.grey.withOpacity(0.5),
|
_getRatingWidget(avgP3[0], avgP3[1], "page3", -1, ratingNames)
|
||||||
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: "",
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:mensaappbackend/modules/builderToday.dart';
|
|||||||
import 'package:mensaappbackend/modules/builderTodayAverage.dart';
|
import 'package:mensaappbackend/modules/builderTodayAverage.dart';
|
||||||
|
|
||||||
class ViewProvider extends ChangeNotifier {
|
class ViewProvider extends ChangeNotifier {
|
||||||
var selectedView = 0;
|
var selectedView = 1;
|
||||||
|
|
||||||
var views = {
|
var views = {
|
||||||
0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames),
|
0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames),
|
||||||
|
|||||||
Reference in New Issue
Block a user