138 lines
4.4 KiB
Dart
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: "",
|
|
),
|
|
)
|
|
],
|
|
)
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|