From 821aac1fc6d72247968a089867a76e9342fcc4b3 Mon Sep 17 00:00:00 2001 From: Rajala1404 <115874847+Rajala1404@users.noreply.github.com> Date: Sat, 20 Dec 2025 22:53:16 +0100 Subject: [PATCH] Add default sorting --- lib/applets/lessons/definition.dart | 9 +++++++- .../lessons/teacher/lessons_teacher_view.dart | 23 +++++++++++++++++++ lib/models/lessons_teacher.dart | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/applets/lessons/definition.dart b/lib/applets/lessons/definition.dart index 21fe0984..582616b3 100644 --- a/lib/applets/lessons/definition.dart +++ b/lib/applets/lessons/definition.dart @@ -6,6 +6,13 @@ import 'package:lanis/applets/lessons/teacher/lessons_teacher_view.dart'; import '../../models/account_types.dart'; +enum SortingType { + entryNameAscending, + entryNameDescending, + entryTimeAscending, + entryTimeDescending, +} + final lessonsDefinition = AppletDefinition( appletPhpUrl: 'meinunterricht.php', addDivider: false, @@ -19,7 +26,7 @@ final lessonsDefinition = AppletDefinition( AccountType.teacher, ], allowOffline: false, - settingsDefaults: {'showHomework': false}, + settingsDefaults: {'showHomework': false, 'sortOverviewBy': SortingType.entryTimeDescending}, refreshInterval: const Duration(minutes: 15), bodyBuilder: (context, accountType, openDrawerCb) { if (accountType == AccountType.student || diff --git a/lib/applets/lessons/teacher/lessons_teacher_view.dart b/lib/applets/lessons/teacher/lessons_teacher_view.dart index 8438ca38..8c7d034a 100644 --- a/lib/applets/lessons/teacher/lessons_teacher_view.dart +++ b/lib/applets/lessons/teacher/lessons_teacher_view.dart @@ -57,6 +57,29 @@ class _LessonsTeacherViewState extends State { settingsDefaults: lessonsDefinition.settingsDefaults, accountType: sph!.session.accountType, builder: (context, data, _, settings, updateSettings, refresh) { + switch (settings["sortOverviewBy"]) { + case SortingType.entryNameAscending: + data.courseFolders.sort((a, b) => a.name.compareTo(b.name)); + break; + case SortingType.entryNameDescending: + data.courseFolders.sort((a, b) => a.name.compareTo(b.name)); + data.courseFolders = data.courseFolders.reversed.toList(); + break; + case SortingType.entryTimeAscending: + data.courseFolders.sort((a, b) => ( + a.entryInformation?.date ?? DateTime.fromMillisecondsSinceEpoch(0, isUtc: true)) + .compareTo(b.entryInformation?.date ?? DateTime.fromMillisecondsSinceEpoch(0, isUtc: true)) + ); + break; + case SortingType.entryTimeDescending: + data.courseFolders.sort((a, b) => ( + a.entryInformation?.date ?? DateTime.fromMillisecondsSinceEpoch(0, isUtc: true)) + .compareTo(b.entryInformation?.date ?? DateTime.fromMillisecondsSinceEpoch(0, isUtc: true)) + ); + data.courseFolders = data.courseFolders.reversed.toList(); + break; + } + return RefreshIndicator( onRefresh: refresh!, child: ListView.builder( diff --git a/lib/models/lessons_teacher.dart b/lib/models/lessons_teacher.dart index 5b990246..e5ae63f8 100644 --- a/lib/models/lessons_teacher.dart +++ b/lib/models/lessons_teacher.dart @@ -1,5 +1,5 @@ class LessonsTeacherHome { - final List courseFolders; + List courseFolders; LessonsTeacherHome({required this.courseFolders});