maybe finished teacher rename
This commit is contained in:
@@ -13,6 +13,7 @@ import 'dart:math';
|
||||
import 'package:filcnaplo_kreta_api/models/category.dart';
|
||||
import 'package:filcnaplo_kreta_api/models/grade.dart';
|
||||
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
||||
import 'package:filcnaplo_kreta_api/models/teacher.dart';
|
||||
import 'package:flutter/foundation.dart' show listEquals;
|
||||
|
||||
/// Generate list of grades that achieve the wanted goal.
|
||||
@@ -46,7 +47,8 @@ class GoalPlanner {
|
||||
|
||||
for (int i = g.max; i >= 0; i--) {
|
||||
int newGradeToAdd = g.gradeToAdd - 1;
|
||||
List<int> newPlan = GoalPlannerHelper._addToList<int>(g.plan, g.gradeToAdd, i);
|
||||
List<int> newPlan =
|
||||
GoalPlannerHelper._addToList<int>(g.plan, g.gradeToAdd, i);
|
||||
|
||||
Avg newAvg = GoalPlannerHelper._addToAvg(g.currentAvg, g.gradeToAdd, i);
|
||||
int newN = GoalPlannerHelper.howManyNeeded(
|
||||
@@ -57,7 +59,7 @@ class GoalPlanner {
|
||||
id: '',
|
||||
date: DateTime(0),
|
||||
value: GradeValue(e, '', '', 100),
|
||||
teacher: '',
|
||||
teacher: Teacher.fromString(''),
|
||||
description: '',
|
||||
form: '',
|
||||
groupId: '',
|
||||
@@ -83,7 +85,8 @@ class GoalPlanner {
|
||||
grades,
|
||||
goal,
|
||||
),
|
||||
Avg(GoalPlannerHelper.averageEvals(grades), GoalPlannerHelper.weightSum(grades)),
|
||||
Avg(GoalPlannerHelper.averageEvals(grades),
|
||||
GoalPlannerHelper.weightSum(grades)),
|
||||
[],
|
||||
),
|
||||
);
|
||||
@@ -92,7 +95,9 @@ class GoalPlanner {
|
||||
for (var e in plans) {
|
||||
e.sum = e.plan.fold(0, (int a, b) => a + b);
|
||||
e.avg = e.sum / e.plan.length;
|
||||
e.sigma = sqrt(e.plan.map((i) => pow(i - e.avg, 2)).fold(0, (num a, b) => a + b) / e.plan.length);
|
||||
e.sigma = sqrt(
|
||||
e.plan.map((i) => pow(i - e.avg, 2)).fold(0, (num a, b) => a + b) /
|
||||
e.plan.length);
|
||||
}
|
||||
|
||||
// filter without aggression
|
||||
@@ -141,7 +146,8 @@ class Plan {
|
||||
}
|
||||
|
||||
class GoalPlannerHelper {
|
||||
static Avg _addToAvg(Avg base, int grade, int n) => Avg((base.avg * base.n + grade * n) / (base.n + n), base.n + n);
|
||||
static Avg _addToAvg(Avg base, int grade, int n) =>
|
||||
Avg((base.avg * base.n + grade * n) / (base.n + n), base.n + n);
|
||||
|
||||
static List<T> _addToList<T>(List<T> l, T e, int n) {
|
||||
if (n == 0) return l;
|
||||
@@ -158,15 +164,20 @@ class GoalPlannerHelper {
|
||||
if (avg >= goal) return 0;
|
||||
if (grade * 1.0 == goal) return -1;
|
||||
int candidate = (wsum * (avg - goal) / (goal - grade)).floor();
|
||||
return (candidate * grade + avg * wsum) / (candidate + wsum) < goal ? candidate + 1 : candidate;
|
||||
return (candidate * grade + avg * wsum) / (candidate + wsum) < goal
|
||||
? candidate + 1
|
||||
: candidate;
|
||||
}
|
||||
|
||||
static double averageEvals(List<Grade> grades, {bool finalAvg = false}) {
|
||||
double average =
|
||||
grades.map((e) => e.value.value * e.value.weight / 100.0).fold(0.0, (double a, double b) => a + b) / weightSum(grades, finalAvg: finalAvg);
|
||||
double average = grades
|
||||
.map((e) => e.value.value * e.value.weight / 100.0)
|
||||
.fold(0.0, (double a, double b) => a + b) /
|
||||
weightSum(grades, finalAvg: finalAvg);
|
||||
return average.isNaN ? 0.0 : average;
|
||||
}
|
||||
|
||||
static double weightSum(List<Grade> grades, {bool finalAvg = false}) =>
|
||||
grades.map((e) => finalAvg ? 1 : e.value.weight / 100).fold(0, (a, b) => a + b);
|
||||
static double weightSum(List<Grade> grades, {bool finalAvg = false}) => grades
|
||||
.map((e) => finalAvg ? 1 : e.value.weight / 100)
|
||||
.fold(0, (a, b) => a + b);
|
||||
}
|
||||
|
||||
@@ -99,13 +99,11 @@ class _ModifyTeacherNamesState extends State<ModifyTeacherNames> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
teachers = (Provider.of<GradeProvider>(context, listen: false)
|
||||
.grades
|
||||
.map((e) => e.teacher)
|
||||
.toSet()
|
||||
.toList()
|
||||
..sort((a, b) => a.compareTo(b)))
|
||||
.map((e) => Teacher.fromString(e))
|
||||
.toList();
|
||||
.grades
|
||||
.map((e) => e.teacher)
|
||||
.toSet()
|
||||
.toList()
|
||||
..sort((a, b) => a.name.compareTo(b.name)));
|
||||
print(teachers.map((e) => e.name));
|
||||
user = Provider.of<UserProvider>(context, listen: false);
|
||||
dbProvider = Provider.of<DatabaseProvider>(context, listen: false);
|
||||
|
||||
Reference in New Issue
Block a user