Files
mensaappdashboard/lib/modules/builderTodayAverage.dart
T

138 lines
4.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mensaappbackend/modules/ratingCard.dart';
class BuilderTodayAverage {
static Widget build(var context, var snapshot, var ratingNames) {
var data = snapshot.data;
if (data == null) {
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}
};
// sum up
for (var map in data) {
var ratings = map["ratings"];
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;
}
}
// 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;
}
print(avgs);
return SingleChildScrollView(
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(
height: 20,
),
const Text(
"Heute - Durchschnitt",
style: TextStyle(fontSize: 25),
),
const SizedBox(height: 20,),
Wrap(
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: "",
),
)
],
)
],
),
),
);
}
}