@@ -12,34 +12,37 @@ import { differenceInMinutes } from 'date-fns'
12
12
export function calculateSla ( dueAt , actualAt ) {
13
13
const compareTime = actualAt ? new Date ( actualAt ) : new Date ( )
14
14
const dueTime = new Date ( dueAt )
15
+ // Difference in minutes will be negative if overdue, positive if remaining.
15
16
const diffInMinutes = differenceInMinutes ( dueTime , compareTime )
16
17
17
- if ( ! actualAt ) {
18
- if ( diffInMinutes > 0 ) {
19
- if ( diffInMinutes >= 2880 ) {
20
- return {
21
- status : 'remaining' ,
22
- value : `${ Math . floor ( diffInMinutes / 1440 ) } days`
23
- }
24
- }
18
+ // No actual at and diffInMinutes is positive; there is still time remaining.
19
+ if ( ! actualAt && diffInMinutes >= 0 ) {
20
+ if ( diffInMinutes >= 2880 ) {
25
21
return {
26
22
status : 'remaining' ,
27
- value : diffInMinutes < 60 ? `${ diffInMinutes } mins` : ` ${ Math . floor ( diffInMinutes / 60 ) } hrs `
23
+ value : `${ Math . floor ( diffInMinutes / 1440 ) } days `
28
24
}
29
25
}
26
+ return {
27
+ status : 'remaining' ,
28
+ value : diffInMinutes < 60 ? `${ diffInMinutes } mins` : `${ Math . floor ( diffInMinutes / 60 ) } hrs`
29
+ }
30
30
}
31
31
32
- const overdueTime = Math . abs ( diffInMinutes )
33
- const status = actualAt ? 'hit' : 'overdue'
32
+ let status = 'hit'
33
+ if ( diffInMinutes < 0 ) {
34
+ status = 'overdue'
35
+ }
34
36
35
- if ( overdueTime >= 2880 ) {
37
+ const overdueMins = Math . abs ( diffInMinutes )
38
+ if ( overdueMins >= 2880 ) {
36
39
return {
37
40
status,
38
- value : `${ Math . floor ( overdueTime / 1440 ) } days`
41
+ value : `${ Math . floor ( overdueMins / 1440 ) } days`
39
42
}
40
43
}
41
44
return {
42
45
status,
43
- value : overdueTime < 60 ? `${ overdueTime } mins` : `${ Math . floor ( overdueTime / 60 ) } hrs`
46
+ value : overdueMins < 60 ? `${ overdueMins } mins` : `${ Math . floor ( overdueMins / 60 ) } hrs`
44
47
}
45
48
}
0 commit comments