1- import React from 'react' ;
1+ import React , { useMemo } from 'react' ;
22import { observer } from 'mobx-react' ;
33import { Space } from 'antd' ;
44
@@ -8,9 +8,11 @@ import {
88 estimateWorkingTimeEnd ,
99 toTimeFormat ,
1010 msToTime ,
11+ getRestHoursMs ,
1112} from '../../../../helpers/DateTime' ;
1213import LabelWithTooltip , { ILabelWithTooltipProps } from './LabelWithTooltip' ;
1314import rootStore from '../../../../modules/RootStore' ;
15+ import { getStartWorkingTime } from '../../../../helpers/TaskHelper' ;
1416
1517interface TotalHoursProps {
1618 timeItems : TaskTimeItemModel [ ] ;
@@ -24,44 +26,49 @@ const TotalHours = observer((props: TotalHoursProps) => {
2426 const workingHoursMs = settings . numberOfWorkingHours ;
2527
2628 const { durationMs, restMs } = TaskHooks . useTimeItemsDuration ( timeItems ) ;
27- const startWorkingTime = TaskHooks . useStartWorkingTime ( timeItems ) ;
29+ const startWorkingTime = useMemo ( ( ) => getStartWorkingTime ( timeItems ) , [
30+ timeItems ,
31+ ] ) ;
2832 const estimatedWorkingTimeEnd = estimateWorkingTimeEnd (
2933 startWorkingTime ,
3034 restMs ,
3135 workingHoursMs
3236 ) ;
33- const restHoursMs = workingHoursMs - durationMs ;
37+ const restHoursMs = getRestHoursMs ( workingHoursMs , durationMs ) ;
38+
39+ const items : ILabelWithTooltipProps [ ] = useMemo (
40+ ( ) => [
41+ {
42+ label : toTimeFormat ( startWorkingTime ) ,
43+ tooltip : 'Start time' ,
44+ } ,
45+ {
46+ icon : 'mi-work-outline' ,
47+ label : msToTime ( durationMs , false ) ,
48+ tooltip : 'Working hours' ,
49+ } ,
50+ {
51+ icon : 'mi-local-cafe' ,
52+ label : msToTime ( restMs , false ) ,
53+ tooltip : 'Rest hours' ,
54+ } ,
55+ {
56+ icon : 'mi-notifications' ,
57+ label : toTimeFormat ( estimatedWorkingTimeEnd ) ,
58+ tooltip : 'Estimated end time' ,
59+ } ,
60+ {
61+ label : msToTime ( restHoursMs , false ) ,
62+ tooltip : 'Time left' ,
63+ } ,
64+ ] ,
65+ [ startWorkingTime , durationMs , restMs , estimatedWorkingTimeEnd , restHoursMs ]
66+ ) ;
3467
3568 if ( ! timeItems . length ) {
3669 return null ;
3770 }
3871
39- const items : ILabelWithTooltipProps [ ] = [
40- {
41- label : toTimeFormat ( startWorkingTime ) ,
42- tooltip : 'Start time' ,
43- } ,
44- {
45- icon : 'mi-work-outline' ,
46- label : msToTime ( durationMs , false ) ,
47- tooltip : 'Working hours' ,
48- } ,
49- {
50- icon : 'mi-local-cafe' ,
51- label : msToTime ( restMs , false ) ,
52- tooltip : 'Rest hours' ,
53- } ,
54- {
55- icon : 'mi-notifications' ,
56- label : toTimeFormat ( estimatedWorkingTimeEnd ) ,
57- tooltip : 'Estimated end time' ,
58- } ,
59- {
60- label : msToTime ( restHoursMs , false ) ,
61- tooltip : 'Time left' ,
62- } ,
63- ] ;
64-
6572 return (
6673 < Space size = "middle" >
6774 { items . map ( ( props , index ) => (
0 commit comments