forked from firka/firka
tt: add tests
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:carousel_slider/carousel_slider.dart';
|
||||
import 'package:firka/helpers/api/model/test.dart';
|
||||
import 'package:firka/helpers/api/model/timetable.dart';
|
||||
import 'package:firka/helpers/debug_helper.dart';
|
||||
import 'package:firka/helpers/extensions.dart';
|
||||
@@ -36,6 +37,7 @@ class HomeTimetableScreen extends StatefulWidget {
|
||||
class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
List<Lesson>? lessons;
|
||||
List<Lesson>? events;
|
||||
List<Test>? tests;
|
||||
List<DateTime>? dates;
|
||||
DateTime? now;
|
||||
int active = 0;
|
||||
@@ -49,6 +51,7 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
|
||||
var lessonsResp = await widget.data.client
|
||||
.getTimeTable(monday, sunday, forceCache: forceCache);
|
||||
var testsResp = await widget.data.client.getTests(forceCache: forceCache);
|
||||
List<DateTime> dates = List.empty(growable: true);
|
||||
|
||||
if (lessonsResp.response != null) {
|
||||
@@ -58,6 +61,7 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
events = lessonsResp.response
|
||||
?.where((lesson) => lesson.type.name == TimetableConsts.event)
|
||||
.toList();
|
||||
tests = testsResp.response;
|
||||
|
||||
for (var i = 0; i < 7; i++) {
|
||||
var t = monday.add(Duration(days: i));
|
||||
@@ -133,7 +137,7 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (lessons != null && events != null && dates != null) {
|
||||
if (lessons != null && tests != null && events != null && dates != null) {
|
||||
List<Widget> ttWidgets = [];
|
||||
List<Widget> ttDays = [];
|
||||
|
||||
@@ -157,9 +161,14 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
lesson.start.isAfter(date.subtract(Duration(seconds: 1))) &&
|
||||
lesson.end.isBefore(date.add(Duration(hours: 23, minutes: 59))))
|
||||
.toList();
|
||||
final testsOnDate = tests!
|
||||
.where((test) =>
|
||||
test.date.isAfter(date.subtract(Duration(seconds: 1))) &&
|
||||
test.date.isBefore(date.add(Duration(hours: 23, minutes: 59))))
|
||||
.toList();
|
||||
|
||||
ttDays.add(
|
||||
TimeTableDayWidget(widget.data, date, lessonsOnDate, eventsOnDate));
|
||||
ttDays.add(TimeTableDayWidget(
|
||||
widget.data, date, lessonsOnDate, eventsOnDate, testsOnDate));
|
||||
}
|
||||
|
||||
return Stack(children: [
|
||||
|
||||
@@ -5,17 +5,22 @@ import 'package:firka/l10n/app_localizations.dart';
|
||||
import 'package:firka/main.dart';
|
||||
import 'package:firka/ui/model/style.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:majesticons_flutter/majesticons_flutter.dart';
|
||||
|
||||
import '../../../helpers/api/model/test.dart';
|
||||
import '../../../helpers/api/model/timetable.dart';
|
||||
import '../../widget/class_icon.dart';
|
||||
import '../../widget/firka_icon.dart';
|
||||
|
||||
class LessonWidget extends StatelessWidget {
|
||||
final AppInitialization data;
|
||||
final int? lessonNo;
|
||||
final Lesson lesson;
|
||||
final Test? test;
|
||||
final Lesson? nextLesson;
|
||||
|
||||
const LessonWidget(this.data, this.lessonNo, this.lesson, this.nextLesson,
|
||||
const LessonWidget(
|
||||
this.data, this.lessonNo, this.lesson, this.test, this.nextLesson,
|
||||
{super.key});
|
||||
|
||||
@override
|
||||
@@ -114,6 +119,32 @@ class LessonWidget extends StatelessWidget {
|
||||
));
|
||||
}
|
||||
|
||||
if (test != null &&
|
||||
data.settings
|
||||
.group("settings")
|
||||
.subGroup("timetable_toast")
|
||||
.boolean("tests_and_homework")) {
|
||||
elements.add(FirkaCard(
|
||||
left: [
|
||||
FirkaIconWidget(
|
||||
FirkaIconType.majesticons,
|
||||
Majesticon.editPen4Solid,
|
||||
color: appStyle.colors.accent,
|
||||
),
|
||||
SizedBox(width: 6),
|
||||
Text(test!.theme,
|
||||
style: appStyle.fonts.B_14SB
|
||||
.apply(color: appStyle.colors.textSecondary))
|
||||
],
|
||||
right: [
|
||||
Text(test!.method.description ?? "N/A",
|
||||
style: appStyle.fonts.B_14R
|
||||
.apply(color: appStyle.colors.textTertiary))
|
||||
],
|
||||
));
|
||||
elements.add(SizedBox(height: 4));
|
||||
}
|
||||
|
||||
if (nextLesson != null) {
|
||||
elements.add(SizedBox(height: 4));
|
||||
var breakMins = nextLesson!.start.difference(lesson.end).inMinutes;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:firka/helpers/api/model/test.dart';
|
||||
import 'package:firka/helpers/api/model/timetable.dart';
|
||||
import 'package:firka/helpers/extensions.dart';
|
||||
import 'package:firka/helpers/ui/firka_card.dart';
|
||||
@@ -12,8 +13,10 @@ class TimeTableDayWidget extends StatelessWidget {
|
||||
final DateTime date;
|
||||
final List<Lesson> lessons;
|
||||
final List<Lesson> events;
|
||||
final List<Test> tests;
|
||||
|
||||
const TimeTableDayWidget(this.data, this.date, this.lessons, this.events,
|
||||
const TimeTableDayWidget(
|
||||
this.data, this.date, this.lessons, this.events, this.tests,
|
||||
{super.key});
|
||||
|
||||
@override
|
||||
@@ -41,7 +44,12 @@ class TimeTableDayWidget extends StatelessWidget {
|
||||
var lesson = lessons[i];
|
||||
Lesson? nextLesson = lessons.length > i + 1 ? lessons[i + 1] : null;
|
||||
ttBody.add(LessonWidget(
|
||||
data, lessons.getLessonNo(lesson), lesson, nextLesson));
|
||||
data,
|
||||
lessons.getLessonNo(lesson),
|
||||
lesson,
|
||||
tests.firstWhereOrNull(
|
||||
(test) => test.lessonNumber == lesson.lessonNumber),
|
||||
nextLesson));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user