aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/utils/getRemainingTime.js
blob: 2d6660688c898361e3e344e12c0934d93d515f5d (plain)
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
/**
 * Berechnet die verbleibende Zeit eines Prozesses als formatierten String
 * @param {Object} process - Der Prozess mit begin und end Timestamp (in Sekunden)
 * @param {number} currentTime - Die aktuelle Zeit in Millisekunden (Date.now())
 * @param {Function} gettext - Die Gettext-Funktion für Übersetzungen
 * @returns {string} - Formatierte verbleibende Zeit
 */
export function getRemainingTime(remainingSeconds, ngettext) {
    if (remainingSeconds < 61) {
        return ngettext(
            '%{seconds} Sekunde',
            '%{seconds} Sekunden',
            remainingSeconds,
            { minutes: remainingSeconds }
        );
    }
    if (remainingSeconds < 3601) {
        //return gettext('%{minutes} Minuten', {minutes: Math.round(remainingSeconds / 60)});
        return ngettext(
            '%{minutes} Sekunde',
            '%{minutes} Sekunden',
            Math.round(remainingSeconds / 60),
            { minutes: Math.round(remainingSeconds / 60) }
        );
    }
    if (remainingSeconds < 86401) {
        return ngettext(
            '%{hours} Stunde',
            '%{hours} Stunden',
            Math.round(remainingSeconds / 3600),
            { hours: Math.round(remainingSeconds / 3600) }
        );
    }
    if (remainingSeconds < 604801) {
        return ngettext(
            '%{days} Tag',
            '%{days} Tage',
            Math.round(remainingSeconds / 86400),
            { days: Math.round(remainingSeconds / 86400) }
        );
    }
    if (remainingSeconds < 31536001) {
        return ngettext(
            '%{weeks} Woche',
            '%{weeks} Wochen',
            Math.round(remainingSeconds / 604800),
            { weeks: Math.round(remainingSeconds / 604800) }
        );
    }
    if (remainingSeconds < 315360001) {
        return ngettext(
            '%{months} Monat',
            '%{months} Monate',
            Math.round(remainingSeconds / 2628000),
            { months: Math.round(remainingSeconds / 2628000) }
        );
    }

    return ngettext(
        '%{years} Jahr',
        '%{years} Jahre',
        Math.round(remainingSeconds / 31536000),
        { years: Math.round(remainingSeconds / 31536000) }
    );
}