forked from firka/firka
tt & grades: filter for events
This commit is contained in:
@@ -23,6 +23,10 @@ class OmissionConsts {
|
||||
static const na = "Na";
|
||||
}
|
||||
|
||||
class TimetableConsts {
|
||||
static const event = "TanevRendjeEsemeny";
|
||||
}
|
||||
|
||||
class KretaEndpoints {
|
||||
static String kretaBase = "e-kreta.hu";
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:firka/ui/phone/screens/home/home_screen.dart';
|
||||
import 'package:firka/ui/widget/grade_small_card.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../../../helpers/api/consts.dart';
|
||||
import '../../../../helpers/api/model/grade.dart';
|
||||
import '../../../../helpers/api/model/subject.dart';
|
||||
import '../../../../helpers/api/model/timetable.dart';
|
||||
@@ -222,7 +223,11 @@ class _HomeGradesScreen extends State<HomeGradesScreen> {
|
||||
],
|
||||
right: [
|
||||
Text(
|
||||
week!.response!.length.toString(),
|
||||
week!.response!
|
||||
.where((lesson) =>
|
||||
lesson.type.name != TimetableConsts.event)
|
||||
.length
|
||||
.toString(),
|
||||
style: appStyle.fonts.B_14SB
|
||||
.apply(color: appStyle.colors.textPrimary),
|
||||
),
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:majesticons_flutter/majesticons_flutter.dart';
|
||||
import 'package:transparent_pointer/transparent_pointer.dart';
|
||||
|
||||
import '../../../../helpers/api/consts.dart';
|
||||
import '../../../../helpers/update_notifier.dart';
|
||||
import '../../../../main.dart';
|
||||
import '../../../widget/firka_icon.dart';
|
||||
@@ -32,6 +33,7 @@ class HomeTimetableScreen extends StatefulWidget {
|
||||
|
||||
class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
List<Lesson>? lessons;
|
||||
List<Lesson>? events;
|
||||
List<DateTime>? dates;
|
||||
DateTime? now;
|
||||
int active = 0;
|
||||
@@ -48,7 +50,12 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
List<DateTime> dates = List.empty(growable: true);
|
||||
|
||||
if (lessonsResp.response != null) {
|
||||
lessons = lessonsResp.response;
|
||||
lessons = lessonsResp.response
|
||||
?.where((lesson) => lesson.type.name != TimetableConsts.event)
|
||||
.toList();
|
||||
events = lessonsResp.response
|
||||
?.where((lesson) => lesson.type.name == TimetableConsts.event)
|
||||
.toList();
|
||||
|
||||
for (var i = 0; i < 7; i++) {
|
||||
var t = monday.add(Duration(days: i));
|
||||
@@ -115,7 +122,7 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (lessons != null && dates != null) {
|
||||
if (lessons != null && events != null && dates != null) {
|
||||
List<Widget> ttWidgets = [];
|
||||
List<Widget> ttDays = [];
|
||||
|
||||
@@ -129,13 +136,19 @@ class _HomeTimetableScreen extends State<HomeTimetableScreen> {
|
||||
});
|
||||
}, active == i, date));
|
||||
|
||||
var lessonsOnDate = lessons!
|
||||
final lessonsOnDate = lessons!
|
||||
.where((lesson) =>
|
||||
lesson.start.isAfter(date) &&
|
||||
lesson.end.isBefore(date.add(Duration(hours: 24))))
|
||||
.toList();
|
||||
final eventsOnDate = events!
|
||||
.where((lesson) =>
|
||||
lesson.start.isAfter(date) &&
|
||||
lesson.end.isBefore(date.add(Duration(hours: 24))))
|
||||
.toList();
|
||||
|
||||
ttDays.add(TimeTableDayWidget(widget.data.l10n, date, lessonsOnDate));
|
||||
ttDays.add(TimeTableDayWidget(
|
||||
widget.data.l10n, date, lessonsOnDate, eventsOnDate));
|
||||
}
|
||||
|
||||
return Stack(children: [
|
||||
|
||||
@@ -60,7 +60,9 @@ class _HomeTimetableMonthlyScreen extends State<HomeTimetableMonthlyScreen> {
|
||||
}
|
||||
|
||||
if (lessonsResp.response != null) {
|
||||
lessons = lessonsResp.response;
|
||||
lessons = lessonsResp.response
|
||||
?.where((lesson) => lesson.type.name != TimetableConsts.event)
|
||||
.toList();
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:firka/helpers/api/model/timetable.dart';
|
||||
import 'package:firka/helpers/extensions.dart';
|
||||
import 'package:firka/helpers/ui/firka_card.dart';
|
||||
import 'package:firka/l10n/app_localizations.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
@@ -10,15 +11,17 @@ class TimeTableDayWidget extends StatelessWidget {
|
||||
final AppLocalizations l10n;
|
||||
final DateTime date;
|
||||
final List<Lesson> lessons;
|
||||
final List<Lesson> events;
|
||||
|
||||
const TimeTableDayWidget(this.l10n, this.date, this.lessons, {super.key});
|
||||
const TimeTableDayWidget(this.l10n, this.date, this.lessons, this.events,
|
||||
{super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget noLessonsWidget = SizedBox();
|
||||
List<Widget> ttBody = List.empty(growable: true);
|
||||
|
||||
if (lessons.isEmpty) {
|
||||
if (lessons.isEmpty && events.isEmpty) {
|
||||
noLessonsWidget = Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
@@ -30,6 +33,10 @@ class TimeTableDayWidget extends StatelessWidget {
|
||||
Text(l10n.tt_no_classes_l2)
|
||||
]);
|
||||
} else {
|
||||
for (var i = 0; i < events.length; i++) {
|
||||
var event = events[i];
|
||||
ttBody.add(FirkaCard(left: [Text(event.name)]));
|
||||
}
|
||||
for (var i = 0; i < lessons.length; i++) {
|
||||
var lesson = lessons[i];
|
||||
Lesson? nextLesson = lessons.length > i + 1 ? lessons[i + 1] : null;
|
||||
@@ -40,7 +47,7 @@ class TimeTableDayWidget extends StatelessWidget {
|
||||
|
||||
return SizedBox(
|
||||
width: MediaQuery.of(context).size.width / 1.1,
|
||||
child: lessons.isEmpty
|
||||
child: ttBody.isEmpty
|
||||
? noLessonsWidget
|
||||
: Padding(
|
||||
padding:
|
||||
|
||||
Reference in New Issue
Block a user