diff options
Diffstat (limited to 'lib/widgets')
| -rw-r--r-- | lib/widgets/agenda_week.dart | 61 | ||||
| -rw-r--r-- | lib/widgets/agenda_week_title.dart | 24 |
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, )), |
