Skip to content

Commit 9a9664f

Browse files
committed
feat(timeframes): Simple implementation of timeframes.
This feature is for tracking final grades after a certain peroid of time. Currently this feature does not integrate with most of the app. It just works on its own.
1 parent f4c20ec commit 9a9664f

23 files changed

Lines changed: 7708 additions & 3222 deletions

.vibe/AGENTS.md

Lines changed: 786 additions & 0 deletions
Large diffs are not rendered by default.

assets/translations/de.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,34 @@
151151
"group_name": "Gruppenname",
152152
"groups": "Gruppen",
153153
"had_homework": "Hausaufgaben gemacht",
154+
"timeframes": "Zeiträume",
155+
"add_timeframe": "Zeitraum hinzufügen",
156+
"edit_timeframe": "Zeitraum bearbeiten",
157+
"timeframe_label": "Bezeichnung",
158+
"start_date": "Startdatum",
159+
"end_date": "Enddatum",
160+
"final_grade": "Endnote",
161+
"set_grade": "Note setzen",
162+
"change_grade": "Note ändern",
163+
"no_timeframes": "Noch keine Zeiträume. Tippen zum Hinzufügen.",
164+
"delete_timeframe": "Zeitraum löschen",
165+
"delete_timeframe_confirmation": "Möchtest du diesen Zeitraum wirklich löschen?",
166+
"overlapping_timeframes": "Überlappende Zeiträume",
167+
"this_timeframe_overlaps_with": "Dieser Zeitraum überschneidet sich mit:",
168+
"save_anyway": "Trotzdem speichern",
169+
"end_date_must_be_after_start_date": "Das Enddatum muss nach dem Startdatum liegen",
170+
"overlaps_with": "Überschneidet sich mit: {timeframes}",
171+
"student_grades": "Schülernoten",
172+
"grades": "Noten",
173+
"no_grade": "Keine Note",
174+
"view_grades": "Noten anzeigen",
175+
"grades_overview": "Notenübersicht",
176+
"average_grade": "Durchschnittsnote",
177+
"attendance_rate": "Anwesenheit",
178+
"material_rate": "Material",
179+
"homework_rate": "Hausaufgaben",
180+
"view_notes": "Notizen anzeigen",
181+
"no_notes_for_student": "Keine Notizen für diesen Schüler",
154182
"had_material": "Material dabei",
155183
"homework": "Hausaufgaben",
156184
"homework_summary": "{count} von {total} Hausaufgabenkontrollen erledigt ({percent}%)",

assets/translations/en.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,34 @@
151151
"group_name": "Group name",
152152
"groups": "Groups",
153153
"had_homework": "Had homework",
154+
"timeframes": "Timeframes",
155+
"add_timeframe": "Add Timeframe",
156+
"edit_timeframe": "Edit Timeframe",
157+
"timeframe_label": "Label",
158+
"start_date": "Start Date",
159+
"end_date": "End Date",
160+
"final_grade": "Final Grade",
161+
"set_grade": "Set Grade",
162+
"change_grade": "Change Grade",
163+
"no_timeframes": "No timeframes yet. Tap to add one.",
164+
"delete_timeframe": "Delete Timeframe",
165+
"delete_timeframe_confirmation": "Are you sure you want to delete this timeframe?",
166+
"overlapping_timeframes": "Overlapping Timeframes",
167+
"this_timeframe_overlaps_with": "This timeframe overlaps with:",
168+
"save_anyway": "Save Anyway",
169+
"end_date_must_be_after_start_date": "End date must be after start date",
170+
"overlaps_with": "Overlaps with: {timeframes}",
171+
"student_grades": "Student Grades",
172+
"grades": "grades",
173+
"no_grade": "No grade",
174+
"view_grades": "View Grades",
175+
"grades_overview": "Grades Overview",
176+
"average_grade": "Avg Grade",
177+
"attendance_rate": "Attendance",
178+
"material_rate": "Material",
179+
"homework_rate": "Homework",
180+
"view_notes": "View Notes",
181+
"no_notes_for_student": "No notes for this student",
154182
"had_material": "Had material",
155183
"homework": "Homework",
156184
"homework_summary": "{count} of {total} homework checks complete ({percent}%)",

lib/core/database/app_database.dart

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import 'tables/seating_plan_positions_table.dart';
1515
import 'tables/seating_plans_table.dart';
1616
import 'tables/sessions_table.dart';
1717
import 'tables/students_table.dart';
18+
import 'tables/timeframe_grades_table.dart';
19+
import 'tables/timeframes_table.dart';
1820

1921
part 'app_database.g.dart';
2022

@@ -25,6 +27,8 @@ typedef MaterialLog = MaterialLogsTableData;
2527
typedef HomeworkLog = HomeworkLogsTableData;
2628
typedef AttendanceLog = AttendanceLogsTableData;
2729
typedef Session = SessionsTableData;
30+
typedef Timeframe = TimeframesTableData;
31+
typedef TimeframeGrade = TimeframeGradesTableData;
2832

2933
@DriftDatabase(
3034
tables: [
@@ -40,6 +44,8 @@ typedef Session = SessionsTableData;
4044
SeatingPlansTable,
4145
SeatingPlanPositionsTable,
4246
SessionsTable,
47+
TimeframesTable,
48+
TimeframeGradesTable,
4349
],
4450
)
4551
class AppDatabase extends _$AppDatabase {
@@ -61,7 +67,7 @@ class AppDatabase extends _$AppDatabase {
6167
final String databasePath;
6268

6369
@override
64-
int get schemaVersion => 18;
70+
int get schemaVersion => 21;
6571

6672
@override
6773
MigrationStrategy get migration => MigrationStrategy(
@@ -185,6 +191,12 @@ class AppDatabase extends _$AppDatabase {
185191
ON CONFLICT(group_id, date, category_id) DO NOTHING
186192
''');
187193
}
194+
if (from < 19) {
195+
await migrator.createTable(timeframesTable);
196+
}
197+
if (from < 21) {
198+
await migrator.createTable(timeframeGradesTable);
199+
}
188200
},
189201
);
190202

0 commit comments

Comments
 (0)