@@ -3,6 +3,7 @@ import isSameDay from 'date-fns/isSameDay';
33
44import AbstractModel from '../base/AbstractModel' ;
55import { ITreeItem } from '../types/ITreeItem' ;
6+ import { startOfDay } from 'date-fns' ;
67
78export interface IJsonTimeRangeModel {
89 start : string ;
@@ -11,7 +12,7 @@ export interface IJsonTimeRangeModel {
1112}
1213
1314export interface ITimeRangeModel {
14- start ? : Date ;
15+ start : Date ;
1516 end ?: Date ;
1617 description ?: string ;
1718}
@@ -36,7 +37,6 @@ export default class TaskModel extends AbstractModel {
3637 time : ITimeRangeModel [ ] = [ ] ;
3738 datesInProgress : Date [ ] = [ ] ;
3839 details : string = '' ;
39- deleted : boolean = false ;
4040
4141 constructor ( props : IJsonTaskModel ) {
4242 super ( ) ;
@@ -82,10 +82,21 @@ export default class TaskModel extends AbstractModel {
8282 }
8383
8484 get duration ( ) {
85- return this . time . reduce ( ( prev : number , range : ITimeRangeModel ) => {
85+ return this . time . reduce ( ( acc : number , range : ITimeRangeModel ) => {
8686 const { start, end } = range ;
8787 const duration = ( end ? end . getTime ( ) : Date . now ( ) ) - start . getTime ( ) ;
88- return prev + duration ;
88+ return acc + duration ;
89+ } , 0 ) ;
90+ }
91+
92+ getDurationByDate ( date : Date ) {
93+ return this . time . reduce ( ( acc : number , range : ITimeRangeModel ) => {
94+ const { start, end } = range ;
95+ let duration = 0 ;
96+ if ( isSameDay ( start , date ) ) {
97+ duration = ( end ? end . getTime ( ) : Date . now ( ) ) - start . getTime ( ) ;
98+ }
99+ return acc + duration ;
89100 } , 0 ) ;
90101 }
91102
@@ -101,10 +112,6 @@ export default class TaskModel extends AbstractModel {
101112 this . checked = checked ;
102113 }
103114
104- setDeleted ( ) {
105- this . deleted = true ;
106- }
107-
108115 start ( ) {
109116 this . active = true ;
110117 this . addDateWhenWasInProgress ( new Date ( ) ) ;
@@ -128,9 +135,10 @@ export default class TaskModel extends AbstractModel {
128135 }
129136
130137 private addDateWhenWasInProgress ( date : Date ) {
131- const found = this . datesInProgress . find ( ( d ) => isSameDay ( d , date ) ) ;
138+ const normalDate = startOfDay ( date ) ;
139+ const found = this . datesInProgress . find ( ( d ) => isSameDay ( d , normalDate ) ) ;
132140 if ( ! found ) {
133- this . datesInProgress . push ( date ) ;
141+ this . datesInProgress . push ( normalDate ) ;
134142 }
135143 }
136144}
0 commit comments