From 7a00c6716639c82c51af39f3b80c8e93e3a06cb2 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 28 Jan 2019 17:49:04 +0200 Subject: [PATCH] Tasks on dashboard --- lib/data/models/task_model.dart | 20 ++++++++++++-------- lib/redux/dashboard/dashboard_selectors.dart | 11 ++++++++--- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/data/models/task_model.dart b/lib/data/models/task_model.dart index 527d43554..d327a5032 100644 --- a/lib/data/models/task_model.dart +++ b/lib/data/models/task_model.dart @@ -86,11 +86,15 @@ abstract class TaskTime implements Built { bool get isRunning => endDate == null; Map getParts(int timezoneOffset) { - print('getParts'); - final startSqlDate = convertDateTimeToSqlDate(startDate); - final endSqlDate = convertDateTimeToSqlDate(endDate); + print('start date: $startDate'); + print('end date: $endDate'); + final localStartDate = startDate.toLocal(); + final localEndDate = endDate.toLocal(); + final startSqlDate = convertDateTimeToSqlDate(localStartDate); + final endSqlDate = convertDateTimeToSqlDate(localEndDate); if (startSqlDate == endSqlDate) { + print('start eq end'); return {startSqlDate: duration}; } @@ -98,23 +102,23 @@ abstract class TaskTime implements Built { DateTime nextDate; final Map dates = { startSqlDate: - DateTime(startDate.year, startDate.month, startDate.day) - .add(Duration(days: offset)).difference(startDate) + DateTime(localStartDate.year, localStartDate.month, localStartDate.day) + .add(Duration(days: offset)).difference(localStartDate) }; do { - nextDate = DateTime(startDate.year, startDate.month, startDate.day) + nextDate = DateTime(localStartDate.year, localStartDate.month, localStartDate.day) .add(Duration(days: offset)); print('Next Date: $nextDate'); offset++; - Duration duration = endDate.difference(nextDate); + Duration duration = localEndDate.difference(nextDate); if (duration.inHours > 24) { duration = Duration(hours: 24); } dates[convertDateTimeToSqlDate(nextDate)] = duration; - } while (nextDate.isBefore(endDate.subtract(Duration(days: 1)))); + } while (nextDate.isBefore(localEndDate.subtract(Duration(days: 1)))); print('returning: $dates'); return dates; diff --git a/lib/redux/dashboard/dashboard_selectors.dart b/lib/redux/dashboard/dashboard_selectors.dart index cb60f79a8..521b5cb54 100644 --- a/lib/redux/dashboard/dashboard_selectors.dart +++ b/lib/redux/dashboard/dashboard_selectors.dart @@ -1,5 +1,6 @@ import 'package:charts_common/common.dart'; import 'package:invoiceninja_flutter/redux/dashboard/dashboard_state.dart'; +import 'package:invoiceninja_flutter/redux/task/task_selectors.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:memoize/memoize.dart'; import 'package:built_collection/built_collection.dart'; @@ -376,12 +377,16 @@ List chartTasks( print('Task: $task'); print('Task - date: $date'); + final taskRate = taskRateSelector( + company: company, project: project, client: client); + final double amount = taskRate * round(duration.inSeconds / 3600, 3); + if (false) { - totals[STATUS_PAID][date] += 0; + totals[STATUS_PAID][date] += amount; } else if (task.isInvoiced) { - totals[STATUS_INVOICED][date] += 0; + totals[STATUS_INVOICED][date] += amount; } else { - totals[STATUS_LOGGED][date] += duration.inHours; + totals[STATUS_LOGGED][date] += amount; } counts[STATUS_LOGGED]++;