forked from danibram/time-tracker-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
85 lines (73 loc) · 2.25 KB
/
Copy pathutils.js
File metadata and controls
85 lines (73 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import moment from 'moment'
export const recognizeModifierTiming = function(string) {
let r = /(\d{1,})([hms])/g
let arr
let res = []
while ((arr = r.exec(string)) !== null) {
res.push({
value: arr[1],
momentKey: arr[2]
})
}
return res
}
export const calcRate = function(rate, total) {
let amount
let mod = rate.substr(rate.length - 1)
let value = rate.slice(0, rate.length - 1)
switch (mod) {
case 'h':
amount = total / 60 / 60 * parseFloat(value)
break
case 'm':
amount = total / 60 * parseFloat(value)
break
case 's':
amount = total * parseFloat(value)
break
}
return amount.toFixed(2)
}
export const humanParseDiff = function(secs) {
let hours = Math.floor(secs / 3600)
let minutes = Math.floor((secs - hours * 3600) / 60)
let seconds = secs - hours * 3600 - minutes * 60
hours = hours == 0 ? '00h' : (hours < 10 ? '0' + hours : hours) + 'h'
minutes =
minutes == 0 && hours == ''
? '00m'
: (minutes < 10 ? '0' + minutes : minutes) + 'm'
seconds =
seconds == 0 ? '00s' : (seconds < 10 ? '0' + seconds : seconds) + 's'
return `${hours} ${minutes} ${seconds}`
}
export const inPeriod = function(start, stop, fstart, fstop) {
fstart = moment(fstart, 'YYYY/MM/DD')
fstop = moment(fstop, 'YYYY/MM/DD')
if (
moment(start).isBetween(fstart, fstop, null, '[]') &&
moment(stop).isBetween(fstart, fstop, null, '[]')
) {
return { isBetween: true, start, stop }
}
if (
!moment(start).isBetween(fstart, fstop, null, '[]') &&
moment(stop).isBetween(fstart, fstop, null, '[]')
) {
return { isBetween: true, start: fstart, stop }
}
if (
moment(start).isBetween(fstart, fstop, null, '[]') &&
!moment(stop).isBetween(fstart, fstop, null, '[]')
) {
return { isBetween: true, start, stop: fstop }
}
return { isBetween: false, start, stop }
}
export const getSeconds = ({ start, stop }) => {
if (stop) {
return moment(stop).diff(moment(start), 'seconds')
} else {
return moment().diff(moment(start), 'seconds')
}
}