added connected double lessons with own setting
This commit is contained in:
parent
9cb3a93a51
commit
afdc02f2a4
@ -4,7 +4,9 @@ part 'timetableSettings.g.dart';
|
|||||||
|
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
class TimetableSettings {
|
class TimetableSettings {
|
||||||
TimetableSettings();
|
bool connectDoubleLessons;
|
||||||
|
|
||||||
|
TimetableSettings({required this.connectDoubleLessons});
|
||||||
|
|
||||||
factory TimetableSettings.fromJson(Map<String, dynamic> json) => _$TimetableSettingsFromJson(json);
|
factory TimetableSettings.fromJson(Map<String, dynamic> json) => _$TimetableSettingsFromJson(json);
|
||||||
Map<String, dynamic> toJson() => _$TimetableSettingsToJson(this);
|
Map<String, dynamic> toJson() => _$TimetableSettingsToJson(this);
|
||||||
|
@ -7,7 +7,11 @@ part of 'timetableSettings.dart';
|
|||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
TimetableSettings _$TimetableSettingsFromJson(Map<String, dynamic> json) =>
|
TimetableSettings _$TimetableSettingsFromJson(Map<String, dynamic> json) =>
|
||||||
TimetableSettings();
|
TimetableSettings(
|
||||||
|
connectDoubleLessons: json['connectDoubleLessons'] as bool,
|
||||||
|
);
|
||||||
|
|
||||||
Map<String, dynamic> _$TimetableSettingsToJson(TimetableSettings instance) =>
|
Map<String, dynamic> _$TimetableSettingsToJson(TimetableSettings instance) =>
|
||||||
<String, dynamic>{};
|
<String, dynamic>{
|
||||||
|
'connectDoubleLessons': instance.connectDoubleLessons,
|
||||||
|
};
|
||||||
|
@ -243,9 +243,43 @@ class _TimetableState extends State<Timetable> {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<GetTimetableResponseObject> _removeDuplicates(TimetableProps data, Duration maxTimeBetweenDouble) {
|
||||||
|
|
||||||
|
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
|
||||||
|
|
||||||
|
if(timetableList.isEmpty){ return timetableList; }
|
||||||
|
|
||||||
|
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++) {
|
||||||
|
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))
|
||||||
|
.isAfter(_parseWebuntisTimestamp(currentElement.date, currentElement.startTime));
|
||||||
|
|
||||||
|
if(isSameSubject() && isNotSeparated()){
|
||||||
|
previousElement.endTime = currentElement.endTime;
|
||||||
|
timetableList.remove(currentElement);
|
||||||
|
i--;
|
||||||
|
}else{
|
||||||
|
previousElement = currentElement;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return timetableList;
|
||||||
|
}
|
||||||
|
|
||||||
TimetableEvents _buildTableEvents(TimetableProps data) {
|
TimetableEvents _buildTableEvents(TimetableProps data) {
|
||||||
|
|
||||||
List<Appointment> appointments = data.getTimetableResponse.result.map((element) {
|
List<GetTimetableResponseObject> timetableList = data.getTimetableResponse.result.toList();
|
||||||
|
|
||||||
|
if(settings.val().timetableSettings.connectDoubleLessons){
|
||||||
|
timetableList = _removeDuplicates(data, const Duration(minutes: 5));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Appointment> appointments = timetableList.map((element) {
|
||||||
|
|
||||||
GetRoomsResponse rooms = data.getRoomsResponse;
|
GetRoomsResponse rooms = data.getRoomsResponse;
|
||||||
GetSubjectsResponse subjects = data.getSubjectsResponse;
|
GetSubjectsResponse subjects = data.getSubjectsResponse;
|
||||||
|
@ -22,7 +22,9 @@ class DefaultSettings {
|
|||||||
askedForPreferredGradeSystem: false,
|
askedForPreferredGradeSystem: false,
|
||||||
inputs: []
|
inputs: []
|
||||||
),
|
),
|
||||||
timetableSettings: TimetableSettings(),
|
timetableSettings: TimetableSettings(
|
||||||
|
connectDoubleLessons: false,
|
||||||
|
),
|
||||||
talkSettings: TalkSettings(
|
talkSettings: TalkSettings(
|
||||||
sortFavoritesToTop: true,
|
sortFavoritesToTop: true,
|
||||||
sortUnreadToTop: false,
|
sortUnreadToTop: false,
|
||||||
|
@ -98,6 +98,19 @@ class _SettingsState extends State<Settings> {
|
|||||||
|
|
||||||
const Divider(),
|
const Divider(),
|
||||||
|
|
||||||
|
ListTile(
|
||||||
|
leading: const Icon(Icons.calendar_view_day_outlined),
|
||||||
|
title: const Text("Doppelstunden als eine Stunde anzeigen"),
|
||||||
|
trailing: Checkbox(
|
||||||
|
value: settings.val().timetableSettings.connectDoubleLessons,
|
||||||
|
onChanged: (e) {
|
||||||
|
settings.val(write: true).timetableSettings.connectDoubleLessons = e!;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const Divider(),
|
||||||
|
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.star_border),
|
leading: const Icon(Icons.star_border),
|
||||||
title: const Text("Favoriten im Talk nach oben sortieren"),
|
title: const Text("Favoriten im Talk nach oben sortieren"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user