1
0
forked from firka/firka

Tantárgyak feldolgozása

This commit is contained in:
2025-09-29 21:44:15 +02:00
committed by Armand
parent 947e1d12cf
commit 569147ae8a

View File

@@ -1,5 +1,4 @@
import 'package:firka/helpers/api/client/kreta_client.dart';
import 'package:firka/helpers/api/model/all_lessons.dart';
import 'package:firka/helpers/api/model/generic.dart';
import 'package:firka/helpers/extensions.dart';
import 'package:firka/helpers/ui/firka_card.dart';
@@ -34,15 +33,13 @@ class HomeGradesScreen extends StatefulWidget {
}
String activeSubjectUid = "";
String teacherName = "";
String subjectName = "";
class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
ApiResponse<List<Grade>>? grades;
ApiResponse<List<AllLessons>>? lessons;
ApiResponse<List<Lesson>>? week;
ApiResponse<List<ClassGroup>>? classGroups;
List<ApiResponse<List<SubjectAverage>>>? subjectAvgs;
ApiResponse<List<SubjectAverage>>? lessons;
@override
void didUpdateWidget(HomeGradesScreen oldWidget) {
@@ -52,28 +49,23 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
widget.updateNotifier.addListener(updateListener);
}
void updateListener() async {
var now = timeNow();
var start = now.subtract(Duration(days: now.weekday - 1));
var end = start.add(Duration(days: 6));
grades = await widget.data.client.getGrades(forceCache: false);
lessons = await widget.data.client.getLessons(forceCache: false);
week = await widget.data.client.getTimeTable(start, end, forceCache: false);
classGroups = await widget.data.client.getClassGroups(forceCache: false);
void updateListener() async {
var now = timeNow();
var start = now.subtract(Duration(days: now.weekday - 1));
var end = start.add(Duration(days: 6));
final l = List<ApiResponse<List<SubjectAverage>>>.empty(growable: true);
for (var group in classGroups!.response!) {
l.add(
await widget.data.client.getSubjectAverage(group, forceCache: false));
await Future.delayed(Duration(milliseconds: 100));
}
subjectAvgs = l;
if (mounted) setState(() {});
widget.finishNotifier.update();
grades = await widget.data.client.getGrades(forceCache: false);
week = await widget.data.client.getTimeTable(start, end, forceCache: false);
classGroups = await widget.data.client.getClassGroups(forceCache: false);
if (classGroups?.response?.isNotEmpty ?? false) {
var group = classGroups!.response!.first;
lessons = await widget.data.client.getSubjectAverage(group, forceCache: false);
await Future.delayed(Duration(milliseconds: 100));
}
if (mounted) setState(() {});
widget.finishNotifier.update();
}
@override
void initState() {
@@ -87,9 +79,13 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
var end = start.add(Duration(days: 6));
grades = await widget.data.client.getGrades();
lessons = await widget.data.client.getLessons();
week = await widget.data.client.getTimeTable(start, end);
classGroups = await widget.data.client.getClassGroups();
if (classGroups?.response?.isNotEmpty ?? false) {
var group = classGroups!.response!.first;
lessons = await widget.data.client.getSubjectAverage(group);
await Future.delayed(Duration(milliseconds: 100));
}
if (mounted) setState(() {});
})();
}
@@ -127,21 +123,22 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
}
}
for (var lesson in lessons!.response!) {
if (subjects
.where((s) => s.uid == lesson.subjectId?.toString())
.isEmpty) {
subjects.add(Subject(
uid: lesson.subjectId?.toString() ?? '',
name: lesson.subjectName.firstUpper(),
teacherName: lesson.teacherName,
category: NameUidDesc(
uid: lesson.subjectCategoryId?.toString() ?? '',
name: lesson.subjectCategoryName,
description: "",
),
sortIndex: 0,
));
if (lessons != null && lessons!.response != null) {
for (var lesson in lessons!.response!) {
if (subjects
.where((s) => s.uid == lesson.uid)
.isEmpty) {
subjects.add(Subject(
uid: lesson.uid,
name: lesson.name,
category: NameUidDesc(
uid: lesson.subjectCategoryId,
name: lesson.subjectCategoryName,
description: lesson.subjectCategoryDescription,
),
sortIndex: lesson.sortIndex,
));
}
}
}
@@ -171,7 +168,6 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
child: GradeSmallCard(grades!.response!, subject),
onTap: () {
activeSubjectUid = subject.uid;
teacherName = subject.teacherName ?? '';
subjectName = subject.name;
widget.pageController(1);
},
@@ -181,7 +177,6 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
child: GradeSmallCard(grades!.response!, subject),
onTap: () {
activeSubjectUid = subject.uid;
teacherName = subject.teacherName ?? '';
subjectName = subject.name;
widget.pageController(1);
},
@@ -293,6 +288,7 @@ class _HomeGradesScreen extends FirkaState<HomeGradesScreen> {
),
],
),
FirkaCard(left: [
Text(
widget.data.l10n.class_avg,