Feature/bugfix 02 past time progresses (#5)
* Replaced startedTimeProgressSelectors with currentTimeProgressSelector. * Added pastTimeProgressSelector. * Fixed ProgressDetailScreen for PastProgresses. * Fixed ProgressDashBoard for PastProgresses. * Fixed AppDrawer for PastProgresses. * Increased Version Number Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
committed by
GitHub
parent
319f539b48
commit
58bc713227
@ -43,8 +43,8 @@ class ProgressDashboardScreen extends StatelessWidget {
|
||||
}
|
||||
|
||||
List<Widget> startedProgressesTileList = List<Widget>();
|
||||
if (vm.hasStartedProgresses) {
|
||||
for (TimeProgress tp in vm.startedTimeProgreses) {
|
||||
if (vm.hasCurrentProgresses) {
|
||||
for (TimeProgress tp in vm.currentTimeProgresses) {
|
||||
startedProgressesTileList.add(
|
||||
Card(
|
||||
child: ListTile(
|
||||
@ -87,44 +87,78 @@ class ProgressDashboardScreen extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
List<Widget> pastProgressesTileList = List<Widget>();
|
||||
if (vm.pastTimeProgresses.length > 0) {
|
||||
for (TimeProgress tp in vm.pastTimeProgresses) {
|
||||
pastProgressesTileList.add(
|
||||
Card(
|
||||
child: ListTile(
|
||||
title: Text(tp.name),
|
||||
subtitle: Text(
|
||||
"Ended ${DateTime.now().difference(tp.endTime).inDays} Days ago."),
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, ProgressDetailScreen.routeName,
|
||||
arguments: ProgressDetailScreenArguments(tp.id));
|
||||
},
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
double dividerHeight = 1;
|
||||
double screenHeight = MediaQuery.of(context).size.height -
|
||||
appBar.preferredSize.height -
|
||||
24 -
|
||||
dividerHeight; //Divider
|
||||
dividerHeight -
|
||||
1; //Divider
|
||||
|
||||
List<Widget> columnChildren = List<Widget>();
|
||||
int tpCount =
|
||||
vm.startedTimeProgreses.length + vm.futureTimeProgresses.length;
|
||||
if (vm.hasStartedProgresses) {
|
||||
int tpCount = vm.currentTimeProgresses.length +
|
||||
vm.futureTimeProgresses.length +
|
||||
vm.pastTimeProgresses.length;
|
||||
if (vm.hasCurrentProgresses) {
|
||||
columnChildren.add(Container(
|
||||
height: vm.hasFutureProgresses
|
||||
? (screenHeight / tpCount) * vm.startedTimeProgreses.length
|
||||
: screenHeight,
|
||||
height:
|
||||
(screenHeight / tpCount) * vm.currentTimeProgresses.length,
|
||||
child: ListView(
|
||||
padding: EdgeInsets.all(8),
|
||||
children: startedProgressesTileList,
|
||||
),
|
||||
));
|
||||
}
|
||||
if (vm.hasStartedProgresses && vm.hasFutureProgresses) {
|
||||
if (vm.hasCurrentProgresses && vm.hasFutureProgresses) {
|
||||
columnChildren.add(Divider(
|
||||
height: dividerHeight,
|
||||
));
|
||||
}
|
||||
if (vm.hasFutureProgresses) {
|
||||
columnChildren.add(Container(
|
||||
height: vm.hasStartedProgresses
|
||||
? (screenHeight / tpCount) * vm.futureTimeProgresses.length
|
||||
: screenHeight,
|
||||
height: (screenHeight / tpCount) * vm.futureTimeProgresses.length,
|
||||
child: ListView(
|
||||
padding: EdgeInsets.all(8),
|
||||
children: futureProgressesTileList,
|
||||
),
|
||||
));
|
||||
}
|
||||
if ((vm.hasCurrentProgresses || vm.hasFutureProgresses) &&
|
||||
vm.pastTimeProgresses.length > 0) {
|
||||
columnChildren.add(Divider(
|
||||
height: dividerHeight,
|
||||
));
|
||||
}
|
||||
if (vm.pastTimeProgresses.length > 0) {
|
||||
columnChildren.add(Container(
|
||||
height: (screenHeight / tpCount) * vm.pastTimeProgresses.length,
|
||||
child: ListView(
|
||||
padding: EdgeInsets.all(8),
|
||||
children: pastProgressesTileList,
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
if (!vm.hasStartedProgresses && !vm.hasFutureProgresses) {
|
||||
if (!vm.hasCurrentProgresses &&
|
||||
!vm.hasFutureProgresses &&
|
||||
vm.pastTimeProgresses.length < 1) {
|
||||
columnChildren.add(Container(
|
||||
margin: EdgeInsets.all(16),
|
||||
child: Center(
|
||||
@ -151,30 +185,31 @@ class ProgressDashboardScreen extends StatelessWidget {
|
||||
}
|
||||
|
||||
class _ViewModel {
|
||||
final List<TimeProgress> startedTimeProgreses;
|
||||
final bool hasStartedProgresses;
|
||||
final List<TimeProgress> currentTimeProgresses;
|
||||
final bool hasCurrentProgresses;
|
||||
final List<TimeProgress> futureTimeProgresses;
|
||||
final bool hasFutureProgresses;
|
||||
final List<TimeProgress> pastTimeProgresses;
|
||||
final bool hasLoaded;
|
||||
|
||||
_ViewModel({
|
||||
@required this.startedTimeProgreses,
|
||||
@required this.hasStartedProgresses,
|
||||
@required this.currentTimeProgresses,
|
||||
@required this.hasCurrentProgresses,
|
||||
@required this.futureTimeProgresses,
|
||||
@required this.hasFutureProgresses,
|
||||
@required this.pastTimeProgresses,
|
||||
@required this.hasLoaded,
|
||||
});
|
||||
|
||||
static _ViewModel fromStore(Store<AppState> store) {
|
||||
List<TimeProgress> startedTPList =
|
||||
startedTimeProgressesSelector(store.state);
|
||||
List<TimeProgress> furtureTPList =
|
||||
futureTimeProgressesSelector(store.state);
|
||||
List<TimeProgress> currentTPList = currentTimeProgressSelector(store.state);
|
||||
List<TimeProgress> futureTPList = futureTimeProgressesSelector(store.state);
|
||||
return _ViewModel(
|
||||
startedTimeProgreses: startedTPList,
|
||||
hasStartedProgresses: startedTPList.length > 0,
|
||||
futureTimeProgresses: furtureTPList,
|
||||
hasFutureProgresses: furtureTPList.length > 0,
|
||||
currentTimeProgresses: currentTPList,
|
||||
hasCurrentProgresses: currentTPList.length > 0,
|
||||
futureTimeProgresses: futureTPList,
|
||||
hasFutureProgresses: futureTPList.length > 0,
|
||||
pastTimeProgresses: pastTimeProgressesSelector(store.state),
|
||||
hasLoaded: store.state.hasLoaded,
|
||||
);
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
|
||||
: "The Name of the Time Progress has to be set.",
|
||||
),
|
||||
)
|
||||
: vm.hasProgressStarted
|
||||
: (vm.hasProgressStarted && !vm.hasEnded)
|
||||
? FittedBox(
|
||||
fit: BoxFit.fitWidth,
|
||||
child: Text(
|
||||
@ -205,7 +205,7 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
|
||||
),
|
||||
),
|
||||
),
|
||||
vm.hasProgressStarted
|
||||
(vm.hasProgressStarted && !vm.hasEnded)
|
||||
? Expanded(
|
||||
flex: 2,
|
||||
child: ProgressDetailCircularPercent(
|
||||
@ -216,10 +216,13 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
|
||||
)
|
||||
: Expanded(
|
||||
flex: 2,
|
||||
child: Text(
|
||||
"Starts in ${vm.timeProgress.startTime.difference(DateTime.now()).inDays} Days."),
|
||||
child: !vm.hasEnded
|
||||
? Text(
|
||||
"Starts in ${vm.timeProgress.startTime.difference(DateTime.now()).inDays} Days.")
|
||||
: Text(
|
||||
"Ended ${DateTime.now().difference(vm.timeProgress.endTime).inDays} Days ago."),
|
||||
),
|
||||
vm.hasProgressStarted
|
||||
(vm.hasProgressStarted && !vm.hasEnded)
|
||||
? Expanded(
|
||||
flex: 1,
|
||||
child: ProgressDetailLinearPercent(
|
||||
@ -278,18 +281,21 @@ class _ProgressDetailScreenState extends State<ProgressDetailScreen> {
|
||||
class _ViewModel {
|
||||
final TimeProgress timeProgress;
|
||||
final bool hasProgressStarted;
|
||||
final bool hasEnded;
|
||||
|
||||
_ViewModel({
|
||||
@required this.timeProgress,
|
||||
@required this.hasProgressStarted,
|
||||
@required this.hasEnded,
|
||||
});
|
||||
|
||||
static _ViewModel fromStoreAndArg(
|
||||
Store<AppState> store, ProgressDetailScreenArguments args) {
|
||||
int currentTime = DateTime.now().millisecondsSinceEpoch;
|
||||
TimeProgress tp = timeProgressByIdSelector(store.state, args.id);
|
||||
return _ViewModel(
|
||||
timeProgress: tp,
|
||||
hasProgressStarted: DateTime.now().millisecondsSinceEpoch >
|
||||
tp.startTime.millisecondsSinceEpoch);
|
||||
hasProgressStarted: currentTime > tp.startTime.millisecondsSinceEpoch,
|
||||
hasEnded: tp.endTime.millisecondsSinceEpoch < currentTime);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user