Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
e51606e
refactor and fixing pupil identity datetimes
dabblingwithcode Dec 5, 2025
3851b66
trying to fix utc birthday problem and improve shorebird startup with…
dabblingwithcode Dec 5, 2025
1163675
fix navigation to pupil profile in family language lessons card
dabblingwithcode Dec 6, 2025
ef9f74f
APP: signals test
dabblingwithcode Dec 6, 2025
fbf14cb
Sliver dashboard experiment
dabblingwithcode Dec 6, 2025
17e6015
refactoring
dabblingwithcode Dec 6, 2025
f732a99
WIP
dabblingwithcode Dec 6, 2025
f539ba4
APP: fix datetim utc conversion issues
dabblingwithcode Dec 6, 2025
c2b87a6
APP: logs
dabblingwithcode Dec 6, 2025
ee83c83
APP: Datetime extension, refactoring, fixes
dabblingwithcode Dec 6, 2025
67eb8b5
App: fix initialization and disposal, fix datetime issues, add start …
dabblingwithcode Dec 7, 2025
5c23543
APP: implement persisten choosable color palettes for diferent enviro…
dabblingwithcode Dec 8, 2025
ce8c9bd
APP: add persistent color scheme choice per environment, repair "inva…
dabblingwithcode Dec 8, 2025
da1737e
Refactor, added field to SchooldayEvent database model, created migra…
dabblingwithcode Dec 8, 2025
ca3e48c
APP: fix datetime issues
dabblingwithcode Dec 8, 2025
8c776b0
APP: pupil profile views fixes
dabblingwithcode Dec 9, 2025
a9bda06
App: fix scrolling of header in pupil profile view
dabblingwithcode Dec 9, 2025
ddc1508
APP: Fix startup, layout, fixes
dabblingwithcode Dec 9, 2025
eb3c8a2
App: Laouyt learning support card, rearrange avatar badges info
dabblingwithcode Dec 10, 2025
df79baf
App: Fix initialization issue when changing environment
dabblingwithcode Dec 10, 2025
8505c56
App: Schoolday Events eventTime, refactor settings
dabblingwithcode Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ abstract class SchooldayEvent implements _i1.SerializableModel {
required this.eventId,
required this.eventType,
required this.eventReason,
this.eventTime,
required this.createdBy,
required this.processed,
this.processedBy,
Expand All @@ -42,6 +43,7 @@ abstract class SchooldayEvent implements _i1.SerializableModel {
required String eventId,
required _i2.SchooldayEventType eventType,
required String eventReason,
String? eventTime,
required String createdBy,
required bool processed,
String? processedBy,
Expand All @@ -64,6 +66,7 @@ abstract class SchooldayEvent implements _i1.SerializableModel {
eventType: _i2.SchooldayEventType.fromJson(
(jsonSerialization['eventType'] as String)),
eventReason: jsonSerialization['eventReason'] as String,
eventTime: jsonSerialization['eventTime'] as String?,
createdBy: jsonSerialization['createdBy'] as String,
processed: jsonSerialization['processed'] as bool,
processedBy: jsonSerialization['processedBy'] as String?,
Expand Down Expand Up @@ -106,6 +109,8 @@ abstract class SchooldayEvent implements _i1.SerializableModel {

String eventReason;

String? eventTime;

String createdBy;

bool processed;
Expand Down Expand Up @@ -140,6 +145,7 @@ abstract class SchooldayEvent implements _i1.SerializableModel {
String? eventId,
_i2.SchooldayEventType? eventType,
String? eventReason,
String? eventTime,
String? createdBy,
bool? processed,
String? processedBy,
Expand All @@ -161,6 +167,7 @@ abstract class SchooldayEvent implements _i1.SerializableModel {
'eventId': eventId,
'eventType': eventType.toJson(),
'eventReason': eventReason,
if (eventTime != null) 'eventTime': eventTime,
'createdBy': createdBy,
'processed': processed,
if (processedBy != null) 'processedBy': processedBy,
Expand Down Expand Up @@ -193,6 +200,7 @@ class _SchooldayEventImpl extends SchooldayEvent {
required String eventId,
required _i2.SchooldayEventType eventType,
required String eventReason,
String? eventTime,
required String createdBy,
required bool processed,
String? processedBy,
Expand All @@ -211,6 +219,7 @@ class _SchooldayEventImpl extends SchooldayEvent {
eventId: eventId,
eventType: eventType,
eventReason: eventReason,
eventTime: eventTime,
createdBy: createdBy,
processed: processed,
processedBy: processedBy,
Expand All @@ -235,6 +244,7 @@ class _SchooldayEventImpl extends SchooldayEvent {
String? eventId,
_i2.SchooldayEventType? eventType,
String? eventReason,
Object? eventTime = _Undefined,
String? createdBy,
bool? processed,
Object? processedBy = _Undefined,
Expand All @@ -254,6 +264,7 @@ class _SchooldayEventImpl extends SchooldayEvent {
eventId: eventId ?? this.eventId,
eventType: eventType ?? this.eventType,
eventReason: eventReason ?? this.eventReason,
eventTime: eventTime is String? ? eventTime : this.eventTime,
createdBy: createdBy ?? this.createdBy,
processed: processed ?? this.processed,
processedBy: processedBy is String? ? processedBy : this.processedBy,
Expand Down
97 changes: 95 additions & 2 deletions school_data_hub_client/lib/src/protocol/client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -845,6 +845,95 @@ class EndpointCompetence extends _i1.EndpointRef {
);
}

/// {@category Endpoint}
class EndpointCompetenceGoal extends _i1.EndpointRef {
EndpointCompetenceGoal(_i1.EndpointCaller caller) : super(caller);

@override
String get name => 'competenceGoal';

_i2.Future<_i5.PupilData> postCompetenceGoal({
required int competenceId,
required int pupilId,
required String description,
List<String>? strategies,
required String createdBy,
String? modifiedBy,
int? score,
DateTime? achievedAt,
}) =>
caller.callServerEndpoint<_i5.PupilData>(
'competenceGoal',
'postCompetenceGoal',
{
'competenceId': competenceId,
'pupilId': pupilId,
'description': description,
'strategies': strategies,
'createdBy': createdBy,
'modifiedBy': modifiedBy,
'score': score,
'achievedAt': achievedAt,
},
);

_i2.Future<_i5.PupilData> updateCompetenceGoal(
String publicId, {
({String value})? description,
({List<String>? value})? strategies,
({String value})? modifiedBy,
({int? value})? score,
({DateTime value})? achievedAt,
}) =>
caller.callServerEndpoint<_i5.PupilData>(
'competenceGoal',
'updateCompetenceGoal',
{
'publicId': publicId,
'description': _i16.mapRecordToJson(description),
'strategies': _i16.mapRecordToJson(strategies),
'modifiedBy': _i16.mapRecordToJson(modifiedBy),
'score': _i16.mapRecordToJson(score),
'achievedAt': _i16.mapRecordToJson(achievedAt),
},
);

_i2.Future<_i5.PupilData> deleteCompetenceGoal(String publicId) =>
caller.callServerEndpoint<_i5.PupilData>(
'competenceGoal',
'deleteCompetenceGoal',
{'publicId': publicId},
);

_i2.Future<_i5.PupilData> addFileToCompetenceGoal(
String publicId,
String filePath,
String createdBy,
) =>
caller.callServerEndpoint<_i5.PupilData>(
'competenceGoal',
'addFileToCompetenceGoal',
{
'publicId': publicId,
'filePath': filePath,
'createdBy': createdBy,
},
);

_i2.Future<_i5.PupilData> removeFileFromCompetenceGoal(
String publicId,
String documentId,
) =>
caller.callServerEndpoint<_i5.PupilData>(
'competenceGoal',
'removeFileFromCompetenceGoal',
{
'publicId': publicId,
'documentId': documentId,
},
);
}

/// {@category Endpoint}
class EndpointLearningSupportPlan extends _i1.EndpointRef {
EndpointLearningSupportPlan(_i1.EndpointCaller caller) : super(caller);
Expand Down Expand Up @@ -1274,8 +1363,8 @@ class EndpointPupilIdentity extends _i1.EndpointRef {
{},
);

_i2.Future<bool> updateLastPupilIdentitiesUpdate(DateTime date) =>
caller.callServerEndpoint<bool>(
_i2.Future<DateTime?> updateLastPupilIdentitiesUpdate(DateTime date) =>
caller.callServerEndpoint<DateTime?>(
'pupilIdentity',
'updateLastPupilIdentitiesUpdate',
{'date': date},
Expand Down Expand Up @@ -2514,6 +2603,7 @@ class Client extends _i1.ServerpodClientShared {
pupilBookLending = EndpointPupilBookLending(this);
competenceCheck = EndpointCompetenceCheck(this);
competence = EndpointCompetence(this);
competenceGoal = EndpointCompetenceGoal(this);
learningSupportPlan = EndpointLearningSupportPlan(this);
preSchoolMedical = EndpointPreSchoolMedical(this);
supportCategory = EndpointSupportCategory(this);
Expand Down Expand Up @@ -2565,6 +2655,8 @@ class Client extends _i1.ServerpodClientShared {

late final EndpointCompetence competence;

late final EndpointCompetenceGoal competenceGoal;

late final EndpointLearningSupportPlan learningSupportPlan;

late final EndpointPreSchoolMedical preSchoolMedical;
Expand Down Expand Up @@ -2628,6 +2720,7 @@ class Client extends _i1.ServerpodClientShared {
'pupilBookLending': pupilBookLending,
'competenceCheck': competenceCheck,
'competence': competence,
'competenceGoal': competenceGoal,
'learningSupportPlan': learningSupportPlan,
'preSchoolMedical': preSchoolMedical,
'supportCategory': supportCategory,
Expand Down
52 changes: 52 additions & 0 deletions school_data_hub_client/lib/src/protocol/protocol.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1307,6 +1307,37 @@ class Protocol extends _i1.SerializationManager {
: deserialize<String>(data['n']['value']),
) as T;
}
if (t == _i1.getType<List<String>?>()) {
return (data != null
? (data as List).map((e) => deserialize<String>(e)).toList()
: null) as T;
}
if (t == _i1.getType<({List<String>? value})?>()) {
return (data == null)
? null as T
: (
value: ((data as Map)['n'] as Map)['value'] == null
? null
: deserialize<List<String>>(data['n']['value']),
) as T;
}
if (t == _i1.getType<({int? value})?>()) {
return (data == null)
? null as T
: (
value: ((data as Map)['n'] as Map)['value'] == null
? null
: deserialize<int>(data['n']['value']),
) as T;
}
if (t == _i1.getType<({DateTime value})?>()) {
return (data == null)
? null as T
: (
value:
deserialize<DateTime>(((data as Map)['n'] as Map)['value']),
) as T;
}
if (t == List<_i93.LearningSupportPlan>) {
return (data as List)
.map((e) => deserialize<_i93.LearningSupportPlan>(e))
Expand Down Expand Up @@ -2010,6 +2041,27 @@ Map<String, dynamic>? mapRecordToJson(Record? record) {
},
};
}
if (record is ({List<String>? value})) {
return {
"n": {
"value": record.value,
},
};
}
if (record is ({int? value})) {
return {
"n": {
"value": record.value,
},
};
}
if (record is ({DateTime value})) {
return {
"n": {
"value": record.value,
},
};
}
if (record is ({DateTime? value})) {
return {
"n": {
Expand Down
4 changes: 2 additions & 2 deletions school_data_hub_client/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ environment:
sdk: '>=3.3.0 <4.0.0'

dependencies:
serverpod_client: 2.9.1
serverpod_auth_client: 2.9.1
serverpod_client: 2.9.2
serverpod_auth_client: 2.9.2
1 change: 1 addition & 0 deletions school_data_hub_flutter/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ rooms.json
test_enc.dart
decrypt_files.dart
**/scripts/
cursor_docs/

# Flutter/Dart/Pub related
**/doc/api/
Expand Down
4 changes: 2 additions & 2 deletions school_data_hub_flutter/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"dart.flutterSdkPath": "C:\\Users\\p53\\.puro\\envs\\3.32.8\\flutter",
"dart.sdkPath": "C:\\Users\\p53\\.puro\\envs\\3.32.8\\flutter\\bin\\cache\\dart-sdk"
"dart.flutterSdkPath": "C:\\src\\flutter",
"dart.sdkPath": "C:\\src\\flutter\\bin\\cache\\dart-sdk"
}
2 changes: 1 addition & 1 deletion school_data_hub_flutter/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ patch_android: ## Create a patch and publish it to Shorebird
shorebird patch android

patch_windows: ## Create a patch and publish it to Shorebird
shorebird patch windows --platforms=windows --release-version=0.5.1+1
shorebird patch windows --platforms=windows --release-version=0.5.2+1

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:label="school_data_hub_flutter" android:name="${applicationName}" android:icon="@mipmap/launcher_icon">
<application android:label="Schuldaten App" android:name="${applicationName}" android:icon="@mipmap/launcher_icon">
<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:taskAffinity="" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
Expand Down
3 changes: 2 additions & 1 deletion school_data_hub_flutter/devtools_options.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:
- shared_preferences: true
- shared_preferences: true
- signals: true
Loading