This repository was archived by the owner on Dec 26, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +32
-10
lines changed
components/TimeRangeModal Expand file tree Collapse file tree 3 files changed +32
-10
lines changed Original file line number Diff line number Diff line change @@ -115,7 +115,7 @@ export default observer(function TimeRangeModal({
115115 </ Col >
116116 < Col span = { 8 } >
117117 < Form . Item label = "Duration" labelCol = { { span : 24 } } >
118- < TimeRangeDuration taskTimeItem = { taskTime } />
118+ < TimeRangeDuration timeRange = { timeRange } />
119119 </ Form . Item >
120120 </ Col >
121121 </ Row >
Original file line number Diff line number Diff line change 11import React from 'react' ;
22
3- import { useTimeItemsDuration } from '../../../hooks/TaskHooks' ;
4- import TaskTimeItemModel from '../../../models/TaskTimeItemModel ' ;
3+ import { useTimeRangeDuration } from '../../../hooks/TaskHooks' ;
4+ import { ITimeRangeModel } from '../../../models/TaskModel ' ;
55
66interface TimeRangeDurationProps {
7- taskTimeItem ?: TaskTimeItemModel ;
7+ timeRange ?: ITimeRangeModel ;
88}
99
1010export default function TimeRangeDuration ( {
11- taskTimeItem ,
11+ timeRange ,
1212} : TimeRangeDurationProps ) {
13- const duration = useTimeItemsDuration (
14- taskTimeItem ? [ taskTimeItem ] : [ ] ,
15- true
16- ) ;
13+ const duration = useTimeRangeDuration ( timeRange ) ;
1714
1815 return < div > { duration } </ div > ;
1916}
Original file line number Diff line number Diff line change 11import { useEffect , useRef , useState } from 'react' ;
22
33import { calcDuration , msToTime } from '../helpers/DateTime' ;
4- import TaskModel from '../models/TaskModel' ;
4+ import TaskModel , { ITimeRangeModel } from '../models/TaskModel' ;
55import TaskTimeItemModel from '../models/TaskTimeItemModel' ;
66
77export function useTaskDuration ( model : TaskModel | undefined ) {
@@ -61,3 +61,28 @@ export function useTimeItemsDuration(
6161
6262 return duration ;
6363}
64+
65+ export function useTimeRangeDuration ( timeRange : ITimeRangeModel | undefined ) {
66+ const [ duration , setDuration ] = useState < string > ( '' ) ;
67+ const intervalRef = useRef < NodeJS . Timeout > ( ) ;
68+
69+ useEffect ( ( ) => {
70+ if ( ! timeRange ) {
71+ return ;
72+ }
73+ const haveActiveTime = ! timeRange . end ;
74+ setDuration ( msToTime ( calcDuration ( [ timeRange ] ) ) ) ;
75+ if ( haveActiveTime ) {
76+ intervalRef . current = setInterval ( ( ) => {
77+ setDuration ( msToTime ( calcDuration ( [ timeRange ] ) ) ) ;
78+ } , 1000 ) ;
79+ }
80+ return ( ) => {
81+ if ( intervalRef . current ) {
82+ clearInterval ( intervalRef . current ) ;
83+ }
84+ } ;
85+ } , [ timeRange ] ) ;
86+
87+ return duration ;
88+ }
You can’t perform that action at this time.
0 commit comments