Tasks on dashboard

This commit is contained in:
Hillel Coren 2019-01-28 17:49:04 +02:00
parent 66114aec80
commit 7a00c67166
2 changed files with 20 additions and 11 deletions

View File

@ -86,11 +86,15 @@ abstract class TaskTime implements Built<TaskTime, TaskTimeBuilder> {
bool get isRunning => endDate == null; bool get isRunning => endDate == null;
Map<String, Duration> getParts(int timezoneOffset) { Map<String, Duration> getParts(int timezoneOffset) {
print('getParts'); print('start date: $startDate');
final startSqlDate = convertDateTimeToSqlDate(startDate); print('end date: $endDate');
final endSqlDate = convertDateTimeToSqlDate(endDate); final localStartDate = startDate.toLocal();
final localEndDate = endDate.toLocal();
final startSqlDate = convertDateTimeToSqlDate(localStartDate);
final endSqlDate = convertDateTimeToSqlDate(localEndDate);
if (startSqlDate == endSqlDate) { if (startSqlDate == endSqlDate) {
print('start eq end');
return {startSqlDate: duration}; return {startSqlDate: duration};
} }
@ -98,23 +102,23 @@ abstract class TaskTime implements Built<TaskTime, TaskTimeBuilder> {
DateTime nextDate; DateTime nextDate;
final Map<String, Duration> dates = { final Map<String, Duration> dates = {
startSqlDate: startSqlDate:
DateTime(startDate.year, startDate.month, startDate.day) DateTime(localStartDate.year, localStartDate.month, localStartDate.day)
.add(Duration(days: offset)).difference(startDate) .add(Duration(days: offset)).difference(localStartDate)
}; };
do { do {
nextDate = DateTime(startDate.year, startDate.month, startDate.day) nextDate = DateTime(localStartDate.year, localStartDate.month, localStartDate.day)
.add(Duration(days: offset)); .add(Duration(days: offset));
print('Next Date: $nextDate'); print('Next Date: $nextDate');
offset++; offset++;
Duration duration = endDate.difference(nextDate); Duration duration = localEndDate.difference(nextDate);
if (duration.inHours > 24) { if (duration.inHours > 24) {
duration = Duration(hours: 24); duration = Duration(hours: 24);
} }
dates[convertDateTimeToSqlDate(nextDate)] = duration; dates[convertDateTimeToSqlDate(nextDate)] = duration;
} while (nextDate.isBefore(endDate.subtract(Duration(days: 1)))); } while (nextDate.isBefore(localEndDate.subtract(Duration(days: 1))));
print('returning: $dates'); print('returning: $dates');
return dates; return dates;

View File

@ -1,5 +1,6 @@
import 'package:charts_common/common.dart'; import 'package:charts_common/common.dart';
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_state.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:invoiceninja_flutter/utils/formatting.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
@ -376,12 +377,16 @@ List<ChartDataGroup> chartTasks(
print('Task: $task'); print('Task: $task');
print('Task - date: $date'); print('Task - date: $date');
final taskRate = taskRateSelector(
company: company, project: project, client: client);
final double amount = taskRate * round(duration.inSeconds / 3600, 3);
if (false) { if (false) {
totals[STATUS_PAID][date] += 0; totals[STATUS_PAID][date] += amount;
} else if (task.isInvoiced) { } else if (task.isInvoiced) {
totals[STATUS_INVOICED][date] += 0; totals[STATUS_INVOICED][date] += amount;
} else { } else {
totals[STATUS_LOGGED][date] += duration.inHours; totals[STATUS_LOGGED][date] += amount;
} }
counts[STATUS_LOGGED]++; counts[STATUS_LOGGED]++;