Implemented TimeTable

This commit is contained in:
2023-01-29 22:29:48 +01:00
parent 1baa8028fa
commit 83ad7d59d2
11 changed files with 285 additions and 93 deletions

View File

@ -8,19 +8,20 @@ import 'package:marianum_mobile/data/socketConnection.dart';
class IncomingPacket extends ChangeNotifier {
String packetId;
bool useJsonDecode;
bool _isReceived = false;
bool get isReceived => _isReceived;
IncomingPacket(this.packetId) {
log("PACKETLISTENER ERSTELLT!");
IncomingPacket(this.packetId, {this.useJsonDecode = true}) {
SocketConnection.read.listen((event) {
if(event.startsWith("$packetId:")) {
_isReceived = true;
// THIS listener handles the incomming request
log("$packetId is handled!");
handle(jsonDecode(event.split("$packetId:")[1]));
String content = event.split("$packetId:")[1];
handle(useJsonDecode ? jsonDecode(content) : content);
}
notifyListeners();
});

View File

@ -0,0 +1,21 @@
import 'package:marianum_mobile/data/incomingPacket.dart';
class ErrorPacket extends IncomingPacket {
ErrorPacket() : super("error", useJsonDecode: false);
bool _errorDismissed = true;
bool get errorDismissed => _errorDismissed;
set errorDismissed(bool value) {
_errorDismissed = value;
notifyListeners();
}
String _errorText = "";
String get errorText => _errorText;
@override
void handle(data) {
_errorDismissed = false;
_errorText = data;
}
}

View File

@ -0,0 +1,71 @@
import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:marianum_mobile/data/socketConnection.dart';
import '../incomingPacket.dart';
class TimetablePacket extends IncomingPacket {
TimetablePacket() : super('timetable');
TimeTableData _timeTable = TimeTableData();
TimeTableData get timeTable => _timeTable;
@override
void handle(data) {
_timeTable = TimeTableData();
data.forEach((day) {
TimeTableDay dayData = TimeTableDay(List<TimeTableEntry>.empty(growable: true), day['title']);
day['tiles'].forEach((tile) {
dayData._entries.add(TimeTableEntry(
tile['title'], tile['title'], tile['room'], tile['title'],
TimeTableEntryTime(tile['begin']['hour'], tile['begin']['minute']),
TimeTableEntryTime(tile['end']['hour'], tile['end']['minute'])
));
});
_timeTable._days.add(dayData);
});
}
}
class TimeTableData {
List<TimeTableDay> _days = [];
List<TimeTableDay> get days => _days;
set days(List<TimeTableDay> value) {
_days = value;
}
}
class TimeTableDay {
List<TimeTableEntry> _entries;
String _name;
TimeTableDay(this._entries, this._name);
List<TimeTableEntry> get entries => _entries;
String get name => _name;
}
class TimeTableEntry {
late String subject;
late String teacher;
late String room;
late String classes;
late TimeTableEntryTime start;
late TimeTableEntryTime end;
TimeTableEntry(this.subject, this.teacher, this.room, this.classes,
this.start, this.end);
}
class TimeTableEntryTime {
int hour;
int minute;
TimeTableEntryTime(this.hour, this.minute);
}