diff options
| -rw-r--r-- | README | 2 | ||||
| -rw-r--r-- | lib/pages/agenda_page.dart | 89 | ||||
| -rw-r--r-- | lib/pages/settings_page.dart | 2 | ||||
| -rw-r--r-- | lib/services/local_shift_provider_service.dart | 1 | ||||
| -rw-r--r-- | lib/services/mock_shift_provider_service.dart | 35 | ||||
| -rw-r--r-- | lib/shift.dart | 11 | ||||
| -rw-r--r-- | lib/widgets/agenda_week_item.dart | 16 |
7 files changed, 109 insertions, 47 deletions
@@ -1,11 +1,11 @@ # Aanpassingen - exceptions afhandelen binnen localShiftProvider en doorgeven aan ui - uursalaris opslaan per shift zodat aanpassingen oudere shifts niet aanpassen +- bestand per week maken # Nog te doen - laad animaties voor het lezen van locale bestanden (testen met delays) - uurloon van gebruiker gebruiken in berekeningen -- gebruiker standaard begintijd laten aanpassen per shift - versie toevoegen aan locale bestanden # Features diff --git a/lib/pages/agenda_page.dart b/lib/pages/agenda_page.dart index 26eb877..b461791 100644 --- a/lib/pages/agenda_page.dart +++ b/lib/pages/agenda_page.dart @@ -4,6 +4,7 @@ import 'package:in_date_utils/in_date_utils.dart' as DateUtilities; import 'package:training_planner/events/RefreshWeekEvent.dart'; import 'package:training_planner/main.dart'; import 'package:training_planner/pages/home_page.dart'; +import 'package:training_planner/services/settings_service.dart'; import 'package:training_planner/shift.dart'; import 'package:training_planner/style/style.dart'; import 'package:training_planner/utils/date.dart'; @@ -29,7 +30,6 @@ class _AgendaPageState extends State<AgendaPage> { Future<void> addShiftsFromDialog() async { DateTime startDate = getWeek(currentSelectedPageIndex).mondayOfWeek; - String dropdownValue = 'Maandag'; for (int i = 0; i < 7; i++) { DateTime dayOfWeek = startDate; @@ -78,8 +78,10 @@ class _AgendaPageState extends State<AgendaPage> { break; } - bool success = - await shiftProvider.addShift(Shift(start: dayOfWeek, type: type)); + Settings settings = await settingsService.readSettingsFromFile(); + + bool success = await shiftProvider.addShift( + Shift(start: dayOfWeek, type: type, payRate: settings.salary)); if (!success) { messageService.showMessage( context, @@ -112,6 +114,12 @@ class _AgendaPageState extends State<AgendaPage> { }, ); + double availableHeight = MediaQuery.of(context).size.height; + bool splitDays = false; + if (availableHeight < 640) { + splitDays = true; + } + // show the dialog await showDialog( context: context, @@ -120,35 +128,66 @@ class _AgendaPageState extends State<AgendaPage> { return AlertDialog( title: Text("Wanneer wil je werken?"), content: Row(children: [ - ToggleButtons( - direction: Axis.vertical, - children: <Widget>[ - Padding(padding: const EdgeInsets.all(15), child: Text('Ma')), - Padding(padding: const EdgeInsets.all(15), child: Text('Di')), - Padding(padding: const EdgeInsets.all(15), child: Text('Wo')), - Padding(padding: const EdgeInsets.all(15), child: Text('Do')), - Padding(padding: const EdgeInsets.all(15), child: Text('Vr')), - Padding(padding: const EdgeInsets.all(15), child: Text('Za')), - Padding(padding: const EdgeInsets.all(15), child: Text('Zo')), - ], - onPressed: (int index) { - setState(() { - dayIsSelected[index] = !dayIsSelected[index]; - }); - }, - isSelected: dayIsSelected, - ), - Padding(padding: const EdgeInsets.all(20)), + !splitDays + ? (ToggleButtons( + direction: Axis.vertical, + children: <Widget>[ + Text('Ma'), + Text('Di'), + Text('Wo'), + Text('Do'), + Text('Vr'), + Text('Za'), + Text('Zo'), + ], + onPressed: (int index) { + setState(() { + dayIsSelected[index] = !dayIsSelected[index]; + }); + }, + isSelected: dayIsSelected, + )) + : (ToggleButtons( + direction: Axis.vertical, + children: <Widget>[ + Text('Ma'), + Text('Di'), + Text('Wo'), + Text('Do'), + ], + onPressed: (int index) { + setState(() { + dayIsSelected[index] = !dayIsSelected[index]; + }); + }, + isSelected: dayIsSelected.getRange(0, 4).toList(), + )), + splitDays + ? (ToggleButtons( + direction: Axis.vertical, + children: <Widget>[ + Text('Vr'), + Text('Za'), + Text('Zo'), + ], + onPressed: (int index) { + setState(() { + dayIsSelected[index + 4] = !dayIsSelected[index + 4]; + }); + }, + isSelected: dayIsSelected.getRange(4, 7).toList(), + )) + : (Padding(padding: const EdgeInsets.all(20))), ToggleButtons( direction: Axis.vertical, children: <Widget>[ Padding( - padding: const EdgeInsets.all(15), child: Text('Dagrit')), + padding: const EdgeInsets.all(0), child: Text('Dagrit')), Padding( - padding: const EdgeInsets.all(15), + padding: const EdgeInsets.all(0), child: Text('Avondrit')), Padding( - padding: const EdgeInsets.all(15), + padding: const EdgeInsets.all(0), child: Text('Terugscan')), ], onPressed: (int index) { diff --git a/lib/pages/settings_page.dart b/lib/pages/settings_page.dart index 08dbaf4..8d35ee7 100644 --- a/lib/pages/settings_page.dart +++ b/lib/pages/settings_page.dart @@ -45,7 +45,7 @@ class _SettingsPageState extends State<SettingsPage> { labelText: 'Huidige uurloon', ), ), - Padding(padding: const EdgeInsets.all(20)), + Padding(padding: const EdgeInsets.all(0)), TextButton( onPressed: () async => await saveSettings(), child: Text('Opslaan')), diff --git a/lib/services/local_shift_provider_service.dart b/lib/services/local_shift_provider_service.dart index 6839dff..917e382 100644 --- a/lib/services/local_shift_provider_service.dart +++ b/lib/services/local_shift_provider_service.dart @@ -33,6 +33,7 @@ class LocalShiftProviderService extends IProgramProviderService { try { final file = await _localFile; String content = jsonEncode(shifts); + print('writing content: ' + content); await file.writeAsString(content); } catch (e, stacktrace) { print(stacktrace); diff --git a/lib/services/mock_shift_provider_service.dart b/lib/services/mock_shift_provider_service.dart index c7bc865..e6c88e0 100644 --- a/lib/services/mock_shift_provider_service.dart +++ b/lib/services/mock_shift_provider_service.dart @@ -9,35 +9,46 @@ class MockShiftProviderService extends IProgramProviderService { MockShiftProviderService() { List<Shift> shifts = []; - shifts.add(Shift( - end: DateTime(2022, 8, 8, 20, 30), - start: DateTime(2022, 8, 8, 16, 30), - type: ShiftType.Avondrit)); + shifts.add( + Shift( + end: DateTime(2022, 8, 8, 20, 30), + start: DateTime(2022, 8, 8, 16, 30), + type: ShiftType.Avondrit, + payRate: 13.75), + ); shifts.add(Shift( end: DateTime(2022, 8, 6, 20, 30), start: DateTime(2022, 8, 6, 16, 30), - type: ShiftType.Avondrit)); + type: ShiftType.Avondrit, + payRate: 13.75)); shifts.add(Shift( end: DateTime(2022, 8, 5, 20, 30), start: DateTime(2022, 8, 5, 16, 30), - type: ShiftType.Avondrit)); + type: ShiftType.Avondrit, + payRate: 13.75)); - shifts.add( - Shift(start: DateTime(2022, 8, 4, 16, 30), type: ShiftType.Avondrit)); + shifts.add(Shift( + start: DateTime(2022, 8, 4, 16, 30), + type: ShiftType.Avondrit, + payRate: 13.75)); shifts.add(Shift( end: DateTime(2022, 8, 1, 17, 30), start: DateTime(2022, 8, 1, 9, 30), - type: ShiftType.Dagrit)); + type: ShiftType.Dagrit, + payRate: 13.75)); - shifts.add( - Shift(start: DateTime(2022, 8, 22, 9, 30), type: ShiftType.Dagrit)); + shifts.add(Shift( + start: DateTime(2022, 8, 22, 9, 30), + type: ShiftType.Dagrit, + payRate: 13.75)); shifts.add(Shift( start: DateTime.now().subtract(Duration(hours: 2)), - type: ShiftType.Dagrit)); + type: ShiftType.Dagrit, + payRate: 13.75)); savedShifts = shifts; } diff --git a/lib/shift.dart b/lib/shift.dart index c444b38..a7c7719 100644 --- a/lib/shift.dart +++ b/lib/shift.dart @@ -20,15 +20,21 @@ class Shift { DateTime start; DateTime? end; ShiftType type; + double payRate; bool isActive = false; - Shift({this.end = null, required this.start, required this.type}); + Shift( + {this.end = null, + required this.start, + required this.type, + required this.payRate}); Shift.fromJson(Map<String, dynamic> json) : start = DateTime.parse(json['start']), end = json['end'] == null ? null : DateTime.tryParse(json['end']), type = ShiftType.values.firstWhere((e) => e.toString() == json['type']), - isActive = json['isActive'] == 'true'; + isActive = json['isActive'] == 'true', + payRate = double.parse(json['payRate']); Map<String, dynamic> toJson() { return { @@ -36,6 +42,7 @@ class Shift { 'end': end?.toIso8601String(), 'type': type.toString(), 'isActive': isActive.toString(), + 'payRate': payRate.toStringAsFixed(2), }; } diff --git a/lib/widgets/agenda_week_item.dart b/lib/widgets/agenda_week_item.dart index 20d237b..10ccba7 100644 --- a/lib/widgets/agenda_week_item.dart +++ b/lib/widgets/agenda_week_item.dart @@ -287,6 +287,15 @@ class _ExerciseEntryState extends State<AgendaWeekItem> { 20; // padding double widthOfShiftType = remaining; + Widget shiftData = Container( + child: Text( + '| ' + shiftTypeName, + ), + width: widthOfShiftType); + if (widthOfShiftType < 50) { + shiftData = Padding(padding: const EdgeInsets.all(0)); + } + return Padding( padding: const EdgeInsets.only(bottom: 8, left: 10, right: 10), child: Container( @@ -350,12 +359,7 @@ class _ExerciseEntryState extends State<AgendaWeekItem> { width: widthOfDates, ), ), - Container( - child: Text( - '| ' + shiftTypeName, - ), - width: widthOfShiftType, - ), + shiftData, Container( child: Align( child: startShiftWidget, |
