summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pages/agenda_page.dart89
-rw-r--r--lib/pages/settings_page.dart2
-rw-r--r--lib/services/local_shift_provider_service.dart1
-rw-r--r--lib/services/mock_shift_provider_service.dart35
-rw-r--r--lib/shift.dart11
-rw-r--r--lib/widgets/agenda_week_item.dart16
6 files changed, 108 insertions, 46 deletions
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,