Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit 955f123

Browse files
author
Dmitry Yadrikhinsky
committed
[TimeRangeModal] Duration refactoring
1 parent 3aa7ba6 commit 955f123

File tree

3 files changed

+32
-10
lines changed

3 files changed

+32
-10
lines changed

src/components/TimeRangeModal/TimeRangeModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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>
Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
import 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

66
interface TimeRangeDurationProps {
7-
taskTimeItem?: TaskTimeItemModel;
7+
timeRange?: ITimeRangeModel;
88
}
99

1010
export 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
}

src/hooks/TaskHooks.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useEffect, useRef, useState } from 'react';
22

33
import { calcDuration, msToTime } from '../helpers/DateTime';
4-
import TaskModel from '../models/TaskModel';
4+
import TaskModel, { ITimeRangeModel } from '../models/TaskModel';
55
import TaskTimeItemModel from '../models/TaskTimeItemModel';
66

77
export 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+
}

0 commit comments

Comments
 (0)