added connected double lessons with own setting #49

Merged
MineTec merged 4 commits from develop-connectedDoubleLessons into develop 2024-03-31 10:50:59 +00:00
Showing only changes of commit 681b5e42c3 - Show all commits

View File

@ -246,46 +246,46 @@ class _TimetableState extends State<Timetable> {
List<GetTimetableResponseObject> _removeDuplicates(TimetableProps data, Duration maxTimeBetweenDouble) {
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( );
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
Pupsi marked this conversation as resolved
Review

klammern weg oder aufklappen mit leerzeichen zwischen bedingungsklammern und block

klammern weg **oder** aufklappen mit leerzeichen zwischen bedingungsklammern und block
if ( timetableList.isEmpty ) return timetableList;
if(timetableList.isEmpty) return timetableList;
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
timetableList.sort((a, b) => _parseWebuntisTimestamp(a.date, a.startTime).compareTo(_parseWebuntisTimestamp(b.date, b.startTime)));
GetTimetableResponseObject previousElement = timetableList.first;
for (var i = 1; i < timetableList.length; i++) {
for(var i = 1; i < timetableList.length; i++) {
GetTimetableResponseObject currentElement = timetableList.elementAt(i);
Pupsi marked this conversation as resolved
Review

das sollte umgeschrieben werden.
ggf musst du die pfeilsyntax in einen normalen curly braces block abändern und dort dann mit normalen ifs erst auf null prüfen - auch wenn das länger ist

das nullable mit dem fallback auf 1 == 2 ist sehr sehr hacky...

bool isSameSubject() {
  SomeNullableType? currentElementSubjects = currentElement.su.firstOrNull;
  SomeNullableType? previousElementSubjects = previousElement.su.firstOrNull;

  if(currentElementSubjects == null || previousElementSubjects == null) return false;
  return currentElementSubjects!.id == previousElementSubjects!.id;
}
das sollte umgeschrieben werden. ggf musst du die pfeilsyntax in einen normalen curly braces block abändern und dort dann mit normalen ifs erst auf null prüfen - auch wenn das länger ist das nullable mit dem fallback auf 1 == 2 ist sehr sehr hacky... ``` bool isSameSubject() { SomeNullableType? currentElementSubjects = currentElement.su.firstOrNull; SomeNullableType? previousElementSubjects = previousElement.su.firstOrNull; if(currentElementSubjects == null || previousElementSubjects == null) return false; return currentElementSubjects!.id == previousElementSubjects!.id; } ```
bool isSameLesson() {
Pupsi marked this conversation as resolved Outdated

findest du eine bessere Möglichkeit als das .add(const Duration(seconds: 1))?

findest du eine bessere Möglichkeit als das `.add(const Duration(seconds: 1))`?
int? currentSubjectId = currentElement.su.firstOrNull?.id;
int? previousSubjectId = previousElement.su.firstOrNull?.id;
Pupsi marked this conversation as resolved
Review

leerzeichen

leerzeichen
if( currentSubjectId == null || previousSubjectId == null || currentSubjectId != previousSubjectId ) return false;
if(currentSubjectId == null || previousSubjectId == null || currentSubjectId != previousSubjectId) return false;
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
Pupsi marked this conversation as resolved Outdated

durch das entfernen der zweiten schulstunde gehen potentiell wichtige Informationen verloren.

Was passiert wenn eine stunde der doppelstunde abgesagt ist?

  • Dann wäre entweder die doppelstunde abgesagt
  • oder die doppelstunde vollständig da, obwohl eine stunde davon ausfallen würde

mein Vorschlag hier ist entweder die prüfung von isSameSubject so anzupassen, das diese false liefert, wenn beide stunden nicht den selben status haben, oder du fügst eine dritte Bedingung hinzu wie z.B. isSameStatus()

zur Orientierung ob eine Stunde ausfällt oder nicht:

bool _isCrossedOut(CalendarAppointmentDetails calendarEntry) {

durch das entfernen der zweiten schulstunde gehen potentiell wichtige Informationen verloren. Was passiert wenn eine stunde der doppelstunde abgesagt ist? - Dann wäre entweder die doppelstunde abgesagt - oder die doppelstunde vollständig da, obwohl eine stunde davon ausfallen würde mein Vorschlag hier ist entweder die prüfung von `isSameSubject` so anzupassen, das diese false liefert, wenn beide stunden nicht den selben status haben, oder du fügst eine dritte Bedingung hinzu wie z.B. `isSameStatus()` zur Orientierung ob eine Stunde ausfällt oder nicht: https://mhsl.eu/gitea/MarianumMobile/Client/src/commit/75846750f7f1ea4e161825e9f3f3529e47cbdb57/lib/view/pages/timetable/timetable.dart#L327
int? currentRoomId = currentElement.ro.firstOrNull?.id;
int? previousRoomId = previousElement.ro.firstOrNull?.id;
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
if( currentRoomId != previousRoomId ) return false;
if(currentRoomId != previousRoomId) return false;
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
int? currentTeacherId = currentElement.te.firstOrNull?.id;
int? previousTeacherId = previousElement.te.firstOrNull?.id;
if( currentTeacherId != previousTeacherId ) return false;
if(currentTeacherId != previousTeacherId) return false;
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
String? currentStatusCode = currentElement.code;
String? previousStatusCode = previousElement.code;
if( currentStatusCode != previousStatusCode ) return false;
if(currentStatusCode != previousStatusCode) return false;
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
return true;
}
bool isNotSeparated() => _parseWebuntisTimestamp( previousElement.date, previousElement.endTime ).add( maxTimeBetweenDouble )
.isSameOrAfter( _parseWebuntisTimestamp( currentElement.date, currentElement.startTime ) );
bool isNotSeparated() => _parseWebuntisTimestamp(previousElement.date, previousElement.endTime).add(maxTimeBetweenDouble)
Pupsi marked this conversation as resolved Outdated

leerzeichen zu viel nach pfeilsyntax

leerzeichen zu viel nach pfeilsyntax

und weiter hinten ebenfalls

und weiter hinten ebenfalls
.isSameOrAfter(_parseWebuntisTimestamp(currentElement.date, currentElement.startTime));
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
if ( isSameLesson() && isNotSeparated() ) {
if(isSameLesson() && isNotSeparated()) {
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
previousElement.endTime = currentElement.endTime;
timetableList.remove( currentElement );
timetableList.remove(currentElement);
Pupsi marked this conversation as resolved Outdated

leerzeichen

leerzeichen
i--;
} else {
previousElement = currentElement;
@ -297,10 +297,10 @@ class _TimetableState extends State<Timetable> {
TimetableEvents _buildTableEvents(TimetableProps data) {
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( );
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
Pupsi marked this conversation as resolved Outdated

leerzeichen zu viel

leerzeichen zu viel
if( settings.val().timetableSettings.connectDoubleLessons ){
timetableList = _removeDuplicates( data, const Duration(minutes: 5) );
if(settings.val().timetableSettings.connectDoubleLessons) {
timetableList = _removeDuplicates(data, const Duration(minutes: 5));
Pupsi marked this conversation as resolved Outdated

leerzeichen zu viel

leerzeichen zu viel
}
List<Appointment> appointments = timetableList.map((element) {