forked from vikunja/frontend
kolaente
7746d39161
Repeating "monthly" or "yearly" was never what people expected, only 30 or 365 days which is not always correct. This change removes these settings since the repeating modes will be re-done anyway. Related to vikunja/frontend#3585 (comment)
47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import {
|
|
SECONDS_A_DAY,
|
|
SECONDS_A_HOUR,
|
|
SECONDS_A_MINUTE,
|
|
SECONDS_A_MONTH,
|
|
SECONDS_A_WEEK,
|
|
SECONDS_A_YEAR,
|
|
} from '@/constants/date'
|
|
|
|
export type PeriodUnit = 'seconds' | 'minutes' | 'hours' | 'days' | 'weeks' | 'months' | 'years'
|
|
|
|
/**
|
|
* Convert time period given as seconds to days, hour, minutes, seconds
|
|
*/
|
|
export function secondsToPeriod(seconds: number): { unit: PeriodUnit, amount: number } {
|
|
if (seconds % SECONDS_A_DAY === 0) {
|
|
if (seconds % SECONDS_A_WEEK === 0) {
|
|
return {unit: 'weeks', amount: seconds / SECONDS_A_WEEK}
|
|
} else {
|
|
return {unit: 'days', amount: seconds / SECONDS_A_DAY}
|
|
}
|
|
}
|
|
|
|
return {
|
|
unit: 'hours',
|
|
amount: seconds / SECONDS_A_HOUR,
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Convert time period of days, hour, minutes, seconds to duration in seconds
|
|
*/
|
|
export function periodToSeconds(period: number, unit: PeriodUnit): number {
|
|
switch (unit) {
|
|
case 'minutes':
|
|
return period * SECONDS_A_MINUTE
|
|
case 'hours':
|
|
return period * SECONDS_A_HOUR
|
|
case 'days':
|
|
return period * SECONDS_A_DAY
|
|
case 'weeks':
|
|
return period * SECONDS_A_WEEK
|
|
}
|
|
|
|
return 0
|
|
}
|