added connected double lessons with own setting #49
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "develop-connectedDoubleLessons"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -246,0 +247,4 @@
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
if(timetableList.isEmpty){ return timetableList; }
klammern weg oder aufklappen mit leerzeichen zwischen bedingungsklammern und block
@ -246,0 +255,4 @@
for (var i = 1; i < timetableList.length; i++) {
GetTimetableResponseObject currentElement = timetableList.elementAt(i);
bool isSameSubject() => (currentElement.su.firstOrNull?.id ?? 1) == (previousElement.su.firstOrNull?.id ?? 2);
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...
@ -246,0 +256,4 @@
GetTimetableResponseObject currentElement = timetableList.elementAt(i);
bool isSameSubject() => (currentElement.su.firstOrNull?.id ?? 1) == (previousElement.su.firstOrNull?.id ?? 2);
bool isNotSeparated() => _parseWebuntisTimestamp(previousElement.date, previousElement.endTime).add(maxTimeBetweenDouble).add(const Duration(seconds: 1))
findest du eine bessere Möglichkeit als das
.add(const Duration(seconds: 1))
?@ -246,0 +263,4 @@
previousElement.endTime = currentElement.endTime;
timetableList.remove(currentElement);
i--;
}else{
leerzeichen
@ -246,0 +259,4 @@
bool isNotSeparated() => _parseWebuntisTimestamp(previousElement.date, previousElement.endTime).add(maxTimeBetweenDouble).add(const Duration(seconds: 1))
.isAfter(_parseWebuntisTimestamp(currentElement.date, currentElement.startTime));
if(isSameSubject() && isNotSeparated()){
leerzeichen
@ -248,1 +276,3 @@
List<Appointment> appointments = data.getTimetableResponse.result.map((element) {
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
if(settings.val().timetableSettings.connectDoubleLessons){
leerzeichen
@ -100,1 +100,4 @@
ListTile(
leading: const Icon(Icons.calendar_view_day_outlined),
title: const Text("Doppelstunden als eine Stunde anzeigen"),
der Begriff ist glaube ich nicht ganz so super
was hälst du von
Doppelstunden zusammenhängend anzeigen
?@ -101,0 +104,4 @@
trailing: Checkbox(
value: settings.val().timetableSettings.connectDoubleLessons,
onChanged: (e) {
settings.val(write: true).timetableSettings.connectDoubleLessons = e!;
beim testen ist mir aufgefallen, dass beim Ändern der Einstellung diese nicht direkt sichtbar sind auf dem Stundenplan.
Dies führt zu Verwirrung, wenn man z.B. erst im Stundenplan scrollen/ neuladen muss um die verbunden Stunden sehen zu können.
der Grund dahinter ist, das die meisten Einstellungen durch ein einfaches widget rebuild sichtbar werden. Die logik für die vebrunden Stundenpläne wird aber nicht mit jedem widget-build aufgerufen, da dies extrem auf die performance gehen würde.
Daher musst du das "neubauen" des Stundenplans manuell triggern.
Du kannst an dieser Stelle nach dem setzen der Einstellung das so wie beim beim drag-to-reload des stundenplans machen.
Siehe:
die Methode run() auf TimetableProps triggert den rebuilt
den parameter renew brauchst du nicht. (renew besagt das die daten nicht aus dem cache kommen dürfen und neu von webuntis heruntergeladen werden sollen)
@ -246,0 +261,4 @@
if(isSameSubject() && isNotSeparated()){
previousElement.endTime = currentElement.endTime;
timetableList.remove(currentElement);
durch das entfernen der zweiten schulstunde gehen potentiell wichtige Informationen verloren.
Was passiert wenn eine stunde der doppelstunde abgesagt ist?
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:
Dein committeter Stand ist älter als die aktuelle Version (ich habe zwischenzeitlich mehrere commits auf develop, welche bei dir noch nicht dabei sind)
du musst vor dem pr merge den aktuellen stand von develop in deinen branch reinmergen. Wenn du in deinem branch aktuell bist kannst du dies über
git merge origin/devlop
tun. Das geht in intellij auch über die oberfläche bei "develop" > "merge 'develop' into '...'"in einer meiner letzten commits habe ich zudem die style guidelines des projektes angepasst. Doppelte anführungszeichen sollten überall durch einfache hochkommas ersetzt werden, lambdas sollten wenn möglich durch direkte methodenaufrufe ersetzt werden. Du kannst das auch automatisch anwenden mit dem befehl
dart fix --apply
Ansonsten unterstrecht ab dann die IDE die entsprechenden stellen gelb.
Hab ich jetzt genug Leerzeichen hinzugefügt?
Und hat das mit dem Mergen alles geklappt?
@ -247,3 +298,3 @@
TimetableEvents _buildTableEvents(TimetableProps data) {
List<Appointment> appointments = data.getTimetableResponse.result.map((element) {
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( );
leerzeichen zu viel
@ -250,0 +300,4 @@
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( );
if( settings.val().timetableSettings.connectDoubleLessons ){
timetableList = _removeDuplicates( data, const Duration(minutes: 5) );
leerzeichen zu viel
@ -247,0 +248,4 @@
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( );
if ( timetableList.isEmpty ) return timetableList;
leerzeichen
@ -247,0 +260,4 @@
int? currentSubjectId = currentElement.su.firstOrNull?.id;
int? previousSubjectId = previousElement.su.firstOrNull?.id;
if( currentSubjectId == null || previousSubjectId == null || currentSubjectId != previousSubjectId ) return false;
leerzeichen
@ -247,0 +265,4 @@
int? currentRoomId = currentElement.ro.firstOrNull?.id;
int? previousRoomId = previousElement.ro.firstOrNull?.id;
if( currentRoomId != previousRoomId ) return false;
leerzeichen
@ -247,0 +270,4 @@
int? currentTeacherId = currentElement.te.firstOrNull?.id;
int? previousTeacherId = previousElement.te.firstOrNull?.id;
if( currentTeacherId != previousTeacherId ) return false;
leerzeichen
@ -247,0 +283,4 @@
bool isNotSeparated() => _parseWebuntisTimestamp( previousElement.date, previousElement.endTime ).add( maxTimeBetweenDouble )
.isSameOrAfter( _parseWebuntisTimestamp( currentElement.date, currentElement.startTime ) );
if ( isSameLesson() && isNotSeparated() ) {
leerzeichen
@ -247,0 +285,4 @@
if ( isSameLesson() && isNotSeparated() ) {
previousElement.endTime = currentElement.endTime;
timetableList.remove( currentElement );
leerzeichen
@ -246,1 +246,4 @@
List<GetTimetableResponseObject> _removeDuplicates(TimetableProps data, Duration maxTimeBetweenDouble) {
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList( );
leerzeichen
@ -247,0 +280,4 @@
return true;
}
bool isNotSeparated() => _parseWebuntisTimestamp( previousElement.date, previousElement.endTime ).add( maxTimeBetweenDouble )
leerzeichen zu viel nach pfeilsyntax
und weiter hinten ebenfalls
@ -247,0 +281,4 @@
}
bool isNotSeparated() => _parseWebuntisTimestamp( previousElement.date, previousElement.endTime ).add( maxTimeBetweenDouble )
.isSameOrAfter( _parseWebuntisTimestamp( currentElement.date, currentElement.startTime ) );
leerzeichen
Nochmal zum merken:
im zweifel an bestehendem code abschauen :)
es haben eigentlich nur leerzeilen bei den curly braces gefehlt, ansonsten passt dein codestiel ja :)
orientier dich einfach an den bestehenden sachen