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> _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
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;
timetableList.sort((a, b) => _parseWebuntisTimestamp(a.date, a.startTime).compareTo(_parseWebuntisTimestamp(b.date, b.startTime))); timetableList.sort((a, b) => _parseWebuntisTimestamp(a.date, a.startTime).compareTo(_parseWebuntisTimestamp(b.date, b.startTime)));
GetTimetableResponseObject previousElement = timetableList.first; 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); 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() { bool isSameLesson() {
int? currentSubjectId = currentElement.su.firstOrNull?.id; int? currentSubjectId = currentElement.su.firstOrNull?.id;
int? previousSubjectId = previousElement.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;
int? currentRoomId = currentElement.ro.firstOrNull?.id; int? currentRoomId = currentElement.ro.firstOrNull?.id;
int? previousRoomId = previousElement.ro.firstOrNull?.id; int? previousRoomId = previousElement.ro.firstOrNull?.id;
if( currentRoomId != previousRoomId ) return false; if(currentRoomId != previousRoomId) return false;
int? currentTeacherId = currentElement.te.firstOrNull?.id; int? currentTeacherId = currentElement.te.firstOrNull?.id;
int? previousTeacherId = previousElement.te.firstOrNull?.id; int? previousTeacherId = previousElement.te.firstOrNull?.id;
if( currentTeacherId != previousTeacherId ) return false; if(currentTeacherId != previousTeacherId) return false;
String? currentStatusCode = currentElement.code; String? currentStatusCode = currentElement.code;
String? previousStatusCode = previousElement.code; String? previousStatusCode = previousElement.code;
if( currentStatusCode != previousStatusCode ) return false; if(currentStatusCode != previousStatusCode) return false;
return true; return true;
} }
bool isNotSeparated() => _parseWebuntisTimestamp( previousElement.date, previousElement.endTime ).add( maxTimeBetweenDouble ) bool isNotSeparated() => _parseWebuntisTimestamp(previousElement.date, previousElement.endTime).add(maxTimeBetweenDouble)
.isSameOrAfter( _parseWebuntisTimestamp( currentElement.date, currentElement.startTime ) ); .isSameOrAfter(_parseWebuntisTimestamp(currentElement.date, currentElement.startTime));
if ( isSameLesson() && isNotSeparated() ) { if(isSameLesson() && isNotSeparated()) {
previousElement.endTime = currentElement.endTime; previousElement.endTime = currentElement.endTime;
timetableList.remove( currentElement ); timetableList.remove(currentElement);
i--; i--;
} else { } else {
previousElement = currentElement; previousElement = currentElement;
@ -297,10 +297,10 @@ class _TimetableState extends State<Timetable> {
TimetableEvents _buildTableEvents(TimetableProps data) { TimetableEvents _buildTableEvents(TimetableProps data) {
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( ); List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
if( settings.val().timetableSettings.connectDoubleLessons ){ if(settings.val().timetableSettings.connectDoubleLessons) {
timetableList = _removeDuplicates( data, const Duration(minutes: 5) ); timetableList = _removeDuplicates(data, const Duration(minutes: 5));
} }
List<Appointment> appointments = timetableList.map((element) { List<Appointment> appointments = timetableList.map((element) {