summaryrefslogtreecommitdiff
path: root/lib/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'lib/widgets')
-rw-r--r--lib/widgets/agenda_week.dart61
-rw-r--r--lib/widgets/agenda_week_title.dart24
2 files changed, 69 insertions, 16 deletions
diff --git a/lib/widgets/agenda_week.dart b/lib/widgets/agenda_week.dart
index fa3d100..9f3df63 100644
--- a/lib/widgets/agenda_week.dart
+++ b/lib/widgets/agenda_week.dart
@@ -1,6 +1,8 @@
import 'dart:async';
+import 'dart:convert';
import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart';
import 'package:training_planner/events/RefreshWeekEvent.dart';
import 'package:training_planner/main.dart';
@@ -35,14 +37,21 @@ class _AgendaWeekState extends State<AgendaWeek> {
weekItems = null;
});
- var data = await shiftProvider.getShiftsForWeek(this.widget.mondayOfWeek);
+ var data = await shiftProvider.getShiftsForWeek(widget.mondayOfWeek);
if (!mounted) return;
setState(() {
+ Duration hoursWorked = Duration();
+ for (var item in data) {
+ hoursWorked += item.getElapsedSessionTime();
+ }
+
weekItems = [
AgendaWeekTitle(
- weekNr: this.widget.weekNr,
- mondayOfWeek: this.widget.mondayOfWeek,
- isCurrentWeek: this.widget.isCurrentWeek),
+ weekNr: widget.weekNr,
+ mondayOfWeek: widget.mondayOfWeek,
+ isCurrentWeek: widget.isCurrentWeek,
+ hoursWorked: hoursWorked,
+ ),
Padding(
padding: const EdgeInsets.all(10),
)
@@ -66,13 +75,22 @@ class _AgendaWeekState extends State<AgendaWeek> {
}
@override
+ void didChangeDependencies() {
+ super.didChangeDependencies();
+
+ for (var item in getBackgrounds()) {
+ precacheImage(AssetImage('assets/goals/' + item), context);
+ }
+ }
+
+ @override
void initState() {
- super.initState();
updateItems();
eventbusSubscription = eventBus.on<RefreshWeekEvent>().listen((event) {
updateItems();
});
+ super.initState();
}
@override
@@ -107,9 +125,11 @@ class _AgendaWeekState extends State<AgendaWeek> {
padding: const EdgeInsets.all(10),
),
AgendaWeekTitle(
- weekNr: this.widget.weekNr,
- mondayOfWeek: this.widget.mondayOfWeek,
- isCurrentWeek: this.widget.isCurrentWeek),
+ weekNr: widget.weekNr,
+ mondayOfWeek: widget.mondayOfWeek,
+ isCurrentWeek: widget.isCurrentWeek,
+ hoursWorked: Duration(),
+ ),
Padding(
padding: const EdgeInsets.all(10),
),
@@ -122,6 +142,29 @@ class _AgendaWeekState extends State<AgendaWeek> {
);
}
+ List<String> getBackgrounds() {
+ return ['1.png', '2.jpg', '3.jpeg', '4.jpg', '5.jpg'];
+ }
+
+ String getBackgroundImage() {
+ var options = getBackgrounds();
+ int nrToChoose = widget.weekNr % options.length;
+ return options[nrToChoose];
+ }
+
+ Widget getData() {
+ return Container(
+ decoration: BoxDecoration(
+ image: DecorationImage(
+ image: AssetImage('assets/goals/' + getBackgroundImage()),
+ fit: BoxFit.cover,
+ opacity: 0.3,
+ ),
+ ),
+ child: getLoadingScreenOrDataList(),
+ );
+ }
+
Widget getLoadingScreenOrDataList() {
if (weekItems != null) {
return getDataList();
@@ -152,7 +195,7 @@ class _AgendaWeekState extends State<AgendaWeek> {
).createShader(rect);
},
blendMode: BlendMode.dstOut,
- child: getLoadingScreenOrDataList(),
+ child: getData(),
);
}
}
diff --git a/lib/widgets/agenda_week_title.dart b/lib/widgets/agenda_week_title.dart
index 2c18986..b04c4d3 100644
--- a/lib/widgets/agenda_week_title.dart
+++ b/lib/widgets/agenda_week_title.dart
@@ -6,19 +6,27 @@ class AgendaWeekTitle extends StatefulWidget {
final int weekNr;
final DateTime mondayOfWeek;
final bool isCurrentWeek;
+ final Duration hoursWorked;
- const AgendaWeekTitle({
- Key? key,
- required this.weekNr,
- required this.mondayOfWeek,
- required this.isCurrentWeek,
- }) : super(key: key);
+ const AgendaWeekTitle(
+ {Key? key,
+ required this.weekNr,
+ required this.mondayOfWeek,
+ required this.isCurrentWeek,
+ required this.hoursWorked})
+ : super(key: key);
@override
_AgendaWeekTitleState createState() => _AgendaWeekTitleState();
}
class _AgendaWeekTitleState extends State<AgendaWeekTitle> {
+ String _printDuration(Duration duration) {
+ String twoDigits(int n) => n.toString().padLeft(2, "0");
+ String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));
+ return "${twoDigits(duration.inHours)}h ${twoDigitMinutes}m";
+ }
+
@override
Widget build(BuildContext context) {
return Column(children: [
@@ -38,7 +46,9 @@ class _AgendaWeekTitleState extends State<AgendaWeekTitle> {
" " +
DateHelper.getMonthName(this.widget.mondayOfWeek.month) +
" " +
- this.widget.mondayOfWeek.year.toString(),
+ this.widget.mondayOfWeek.year.toString() +
+ " | " +
+ _printDuration(widget.hoursWorked),
style: TextStyle(
fontWeight: FontWeight.bold,
)),