Rename product to Harbor and refine connection timer
This commit is contained in:
@@ -6,17 +6,50 @@ export function connectionAction({ connected, selectedTag, configExists }) {
|
||||
}
|
||||
|
||||
export function formatConnectionDuration(startedAt, now = Date.now()) {
|
||||
const { totalHours, minutes, seconds } = connectionDurationParts(startedAt, now);
|
||||
|
||||
return [totalHours, minutes.value, seconds.value]
|
||||
.map((part) => String(part).padStart(2, '0'))
|
||||
.join(':');
|
||||
}
|
||||
|
||||
function durationLabel(value, forms) {
|
||||
const mod10 = value % 10;
|
||||
const mod100 = value % 100;
|
||||
return mod10 === 1 && mod100 !== 11
|
||||
? forms[0]
|
||||
: mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14) ? forms[1] : forms[2];
|
||||
}
|
||||
|
||||
export function connectionDurationParts(startedAt, now = Date.now()) {
|
||||
const started = Date.parse(startedAt);
|
||||
const totalSeconds = Number.isFinite(started)
|
||||
? Math.max(0, Math.floor((now - started) / 1000))
|
||||
: 0;
|
||||
const hours = Math.floor(totalSeconds / 3600);
|
||||
const days = Math.floor(totalSeconds / 86_400);
|
||||
const totalHours = Math.floor(totalSeconds / 3600);
|
||||
const hours = Math.floor((totalSeconds % 86_400) / 3600);
|
||||
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
||||
const seconds = totalSeconds % 60;
|
||||
|
||||
return [hours, minutes, seconds]
|
||||
.map((part) => String(part).padStart(2, '0'))
|
||||
.join(':');
|
||||
return {
|
||||
totalHours,
|
||||
days: { value: days, label: durationLabel(days, ['день', 'дня', 'дней']) },
|
||||
hours: { value: hours, label: durationLabel(hours, ['час', 'часа', 'часов']) },
|
||||
minutes: { value: minutes, label: durationLabel(minutes, ['минута', 'минуты', 'минут']) },
|
||||
seconds: { value: seconds, label: durationLabel(seconds, ['секунда', 'секунды', 'секунд']) },
|
||||
};
|
||||
}
|
||||
|
||||
export function formatConnectionDurationWords(startedAt, now = Date.now()) {
|
||||
const { days, hours, minutes, seconds } = connectionDurationParts(startedAt, now);
|
||||
|
||||
return [
|
||||
days.value && `${days.value} ${days.label}`,
|
||||
hours.value && `${hours.value} ${hours.label}`,
|
||||
minutes.value && `${minutes.value} ${minutes.label}`,
|
||||
`${seconds.value} ${seconds.label}`,
|
||||
].filter(Boolean).join(' ');
|
||||
}
|
||||
|
||||
export function subscriptionDomain(subscriptionHost) {
|
||||
|
||||
Reference in New Issue
Block a user