changed old subject type to gradesubject

This commit is contained in:
Kima
2023-10-15 12:14:06 +02:00
parent c7c3b421f4
commit 2d5cbe8799
31 changed files with 497 additions and 156 deletions

View File

@@ -35,12 +35,12 @@ class _PersonalityCardState extends State<PersonalityCard> {
late SettingsProvider settings;
late List<int> subjectAvgsList = [];
late Map<Subject, double> subjectAvgs = {};
late Map<GradeSubject, double> subjectAvgs = {};
late double subjectAvg;
late List<Grade> classWorkGrades;
late Map<int, int> mostCommonGrade;
late List<Absence> absences = [];
final Map<Subject, Lesson> _lessonCount = {};
final Map<GradeSubject, Lesson> _lessonCount = {};
late int totalDelays;
late int unexcusedAbsences;
@@ -48,14 +48,15 @@ class _PersonalityCardState extends State<PersonalityCard> {
bool hold = false;
List<Grade> getSubjectGrades(Subject subject, {int days = 0}) => gradeProvider
.grades
.where((e) =>
e.subject == subject &&
e.type == GradeType.midYear &&
(days == 0 ||
e.date.isBefore(DateTime.now().subtract(Duration(days: days)))))
.toList();
List<Grade> getSubjectGrades(GradeSubject subject, {int days = 0}) =>
gradeProvider.grades
.where((e) =>
e.subject == subject &&
e.type == GradeType.midYear &&
(days == 0 ||
e.date
.isBefore(DateTime.now().subtract(Duration(days: days)))))
.toList();
@override
void initState() {
@@ -89,13 +90,13 @@ class _PersonalityCardState extends State<PersonalityCard> {
}
void getGrades() {
List<Subject> subjects = gradeProvider.grades
List<GradeSubject> subjects = gradeProvider.grades
.map((e) => e.subject)
.toSet()
.toList()
..sort((a, b) => a.name.compareTo(b.name));
for (Subject subject in subjects) {
for (GradeSubject subject in subjects) {
List<Grade> subjectGrades = getSubjectGrades(subject);
double avg = AverageHelper.averageEvals(subjectGrades);

View File

@@ -8,10 +8,16 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class AbsenceSubjectTile extends StatelessWidget {
const AbsenceSubjectTile(this.subject, {Key? key, this.percentage = 0.0, this.excused = 0, this.unexcused = 0, this.pending = 0, this.onTap})
const AbsenceSubjectTile(this.subject,
{Key? key,
this.percentage = 0.0,
this.excused = 0,
this.unexcused = 0,
this.pending = 0,
this.onTap})
: super(key: key);
final Subject subject;
final GradeSubject subject;
final void Function()? onTap;
final double percentage;
@@ -31,12 +37,20 @@ class AbsenceSubjectTile extends StatelessWidget {
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)),
visualDensity: VisualDensity.compact,
onTap: onTap,
leading: Icon(SubjectIcon.resolveVariant(subject: subject, context: context), size: 32.0),
leading: Icon(
SubjectIcon.resolveVariant(subject: subject, context: context),
size: 32.0),
title: Text(
subject.renamedTo ?? subject.name.capital(),
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontWeight: FontWeight.w600, fontSize: 15.0, fontStyle: subject.isRenamed && settingsProvider.renamedSubjectsItalics ? FontStyle.italic : null),
style: TextStyle(
fontWeight: FontWeight.w600,
fontSize: 15.0,
fontStyle:
subject.isRenamed && settingsProvider.renamedSubjectsItalics
? FontStyle.italic
: null),
),
subtitle: AbsenceDisplay(excused, unexcused, pending),
trailing: Row(
@@ -47,7 +61,10 @@ class AbsenceSubjectTile extends StatelessWidget {
Stack(
alignment: Alignment.centerRight,
children: [
const Opacity(child: Text("100%", style: TextStyle(fontFamily: "monospace")), opacity: 0),
const Opacity(
child: Text("100%",
style: TextStyle(fontFamily: "monospace")),
opacity: 0),
Text(
percentage.round().toString() + "%",
style: TextStyle(

View File

@@ -16,7 +16,7 @@ class GradeSubjectTile extends StatelessWidget {
this.averageBefore = 0.0})
: super(key: key);
final Subject subject;
final GradeSubject subject;
final void Function()? onTap;
final double average;
final double groupAverage;
@@ -56,7 +56,10 @@ class GradeSubjectTile extends StatelessWidget {
fontWeight: FontWeight.w600,
fontSize: 14.0,
color: textColor,
fontStyle: settingsProvider.renamedSubjectsItalics && subject.isRenamed ? FontStyle.italic : null),
fontStyle:
settingsProvider.renamedSubjectsItalics && subject.isRenamed
? FontStyle.italic
: null),
),
trailing: Row(
mainAxisSize: MainAxisSize.min,

View File

@@ -22,10 +22,10 @@ class AbsenceSubjectView extends StatelessWidget {
const AbsenceSubjectView(this.subject, {Key? key, this.absences = const []})
: super(key: key);
final Subject subject;
final GradeSubject subject;
final List<Absence> absences;
static void show(Subject subject, List<Absence> absences,
static void show(GradeSubject subject, List<Absence> absences,
{required BuildContext context}) {
Navigator.of(context, rootNavigator: true)
.push<Absence>(CupertinoPageRoute(

View File

@@ -33,7 +33,7 @@ import 'absences_page.i18n.dart';
enum AbsenceFilter { absences, delays, misses }
class SubjectAbsence {
Subject subject;
GradeSubject subject;
List<Absence> absences;
double percentage;
@@ -58,7 +58,7 @@ class _AbsencesPageState extends State<AbsencesPage>
late String firstName;
late TabController _tabController;
late List<SubjectAbsence> absences = [];
final Map<Subject, Lesson> _lessonCount = {};
final Map<GradeSubject, Lesson> _lessonCount = {};
@override
void initState() {
@@ -90,7 +90,7 @@ class _AbsencesPageState extends State<AbsencesPage>
}
void buildSubjectAbsences() {
Map<Subject, SubjectAbsence> _absences = {};
Map<GradeSubject, SubjectAbsence> _absences = {};
for (final absence in absenceProvider.absences) {
if (absence.delay != 0) continue;

View File

@@ -16,7 +16,7 @@ import 'grade_calculator.i18n.dart';
class GradeCalculator extends StatefulWidget {
const GradeCalculator(this.subject, {Key? key}) : super(key: key);
final Subject subject;
final GradeSubject subject;
@override
_GradeCalculatorState createState() => _GradeCalculatorState();

View File

@@ -7,7 +7,7 @@ import 'grades_page.i18n.dart';
class FailWarning extends StatelessWidget {
const FailWarning({Key? key, required this.subjectAvgs}) : super(key: key);
final Map<Subject, double> subjectAvgs;
final Map<GradeSubject, double> subjectAvgs;
@override
Widget build(BuildContext context) {

View File

@@ -42,7 +42,7 @@ class GradeSubjectView extends StatefulWidget {
const GradeSubjectView(this.subject, {Key? key, this.groupAverage = 0.0})
: super(key: key);
final Subject subject;
final GradeSubject subject;
final double groupAverage;
void push(BuildContext context, {bool root = false}) {
@@ -77,7 +77,7 @@ class _GradeSubjectViewState extends State<GradeSubjectView> {
String plan = '';
List<Grade> getSubjectGrades(Subject subject) => !gradeCalcMode
List<Grade> getSubjectGrades(GradeSubject subject) => !gradeCalcMode
? gradeProvider.grades.where((e) => e.subject == subject).toList()
: calculatorProvider.grades.where((e) => e.subject == subject).toList();

View File

@@ -48,24 +48,25 @@ class _GradesPageState extends State<GradesPage> {
int avgDropValue = 0;
List<Grade> getSubjectGrades(Subject subject, {int days = 0}) => gradeProvider
.grades
.where((e) =>
e.subject == subject &&
e.type == GradeType.midYear &&
(days == 0 ||
e.date.isBefore(DateTime.now().subtract(Duration(days: days)))))
.toList();
List<Grade> getSubjectGrades(GradeSubject subject, {int days = 0}) =>
gradeProvider.grades
.where((e) =>
e.subject == subject &&
e.type == GradeType.midYear &&
(days == 0 ||
e.date
.isBefore(DateTime.now().subtract(Duration(days: days)))))
.toList();
void generateTiles() {
List<Subject> subjects = gradeProvider.grades
List<GradeSubject> subjects = gradeProvider.grades
.map((e) => e.subject)
.toSet()
.toList()
..sort((a, b) => a.name.compareTo(b.name));
List<Widget> tiles = [];
Map<Subject, double> subjectAvgs = {};
Map<GradeSubject, double> subjectAvgs = {};
tiles.addAll(subjects.map((subject) {
List<Grade> subjectGrades = getSubjectGrades(subject);

View File

@@ -30,7 +30,7 @@ class _AllSumBodyState extends State<AllSumBody> {
int avgDropValue = 0;
bool animation = false;
List<Grade> getSubjectGrades(Subject subject, {int days = 0}) => gradeProvider
List<Grade> getSubjectGrades(GradeSubject subject, {int days = 0}) => gradeProvider
.grades
.where((e) =>
e.subject == subject &&

View File

@@ -50,14 +50,15 @@ class _GradesBodyState extends State<GradesBody> {
int avgDropValue = 0;
bool animation = false;
List<Grade> getSubjectGrades(Subject subject, {int days = 0}) => gradeProvider
.grades
.where((e) =>
e.subject == subject &&
e.type == GradeType.midYear &&
(days == 0 ||
e.date.isBefore(DateTime.now().subtract(Duration(days: days)))))
.toList();
List<Grade> getSubjectGrades(GradeSubject subject, {int days = 0}) =>
gradeProvider.grades
.where((e) =>
e.subject == subject &&
e.type == GradeType.midYear &&
(days == 0 ||
e.date
.isBefore(DateTime.now().subtract(Duration(days: days)))))
.toList();
@override
void initState() {
@@ -74,18 +75,18 @@ class _GradesBodyState extends State<GradesBody> {
}
void generateTiles({required int filter}) {
List<Subject> subjects = gradeProvider.grades
List<GradeSubject> subjects = gradeProvider.grades
.map((e) => e.subject)
.toSet()
.toList()
..sort((a, b) => a.name.compareTo(b.name));
List<Widget> tiles = [];
Map<Subject, double> subjectAvgs = {};
Map<GradeSubject, double> subjectAvgs = {};
var count = 1;
for (Subject subject in subjects) {
for (GradeSubject subject in subjects) {
List<Grade> subjectGrades = getSubjectGrades(subject);
double avg = AverageHelper.averageEvals(subjectGrades);

View File

@@ -28,7 +28,7 @@ List<String> faces = [
];
class SubjectAbsence {
Subject subject;
GradeSubject subject;
List<Absence> absences;
double percentage;
@@ -52,7 +52,7 @@ class _LessonsBodyState extends State<LessonsBody> {
late List<SubjectAbsence> absences = [];
late List<Widget> lessons = [];
late List<Absence> delays = [];
final Map<Subject, Lesson> _lessonCount = {};
final Map<GradeSubject, Lesson> _lessonCount = {};
@override
void initState() {
@@ -85,7 +85,7 @@ class _LessonsBodyState extends State<LessonsBody> {
}
void buildSubjectAbsences() {
Map<Subject, SubjectAbsence> _absences = {};
Map<GradeSubject, SubjectAbsence> _absences = {};
for (final absence in absenceProvider.absences) {
if (absence.delay != 0) continue;