diff --git a/lib/data/models/task_model.dart b/lib/data/models/task_model.dart index d8ce185db..d008a7a14 100644 --- a/lib/data/models/task_model.dart +++ b/lib/data/models/task_model.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/data/models/company_model.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; +import 'dart:convert'; part 'task_model.g.dart'; @@ -87,6 +88,30 @@ abstract class TaskEntity extends Object int get duration; + List> get timeDetails { + final List> details = []; + + final List log = jsonDecode(timeLog); + log.forEach((dynamic detail) { + details.add([ + (detail as List)[0], + (detail as List)[1], + ]); + }); + + return details; + } + + int get calculateDuration { + int duration = 0; + + timeDetails.forEach((detail) { + duration += detail[1] - detail[0]; + }); + + return duration; + } + @nullable @BuiltValueField(wireName: 'invoice_id') int get invoiceId; diff --git a/lib/ui/task/view/task_view.dart b/lib/ui/task/view/task_view.dart index 0d1b60909..903ed3b0e 100644 --- a/lib/ui/task/view/task_view.dart +++ b/lib/ui/task/view/task_view.dart @@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/icon_message.dart'; import 'package:invoiceninja_flutter/ui/app/one_value_header.dart'; import 'package:invoiceninja_flutter/ui/task/view/task_view_vm.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart'; +import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; @@ -49,7 +50,7 @@ class _TaskViewState extends State { final widgets = [ OneValueHeader( label: localization.duration, - value: '', + value: task.calculateDuration.toString(), ), ];