diff --git a/src/http/views/leaderboard/station.ejs b/src/http/views/leaderboard/station.ejs index 6038e1b..5b8e90e 100644 --- a/src/http/views/leaderboard/station.ejs +++ b/src/http/views/leaderboard/station.ejs @@ -4,6 +4,6 @@ <%- msToTime(record.dispatcherTime) %> -
Spędzona liczba godzin: <%- msToTime(record.dispatcherTime) || 'Brak' %>
+Spędzona liczba godzin: <%- msToTime(record.dispatcherTime, true) || 'Brak' %>
\ No newline at end of file diff --git a/src/http/views/leaderboard/train.ejs b/src/http/views/leaderboard/train.ejs index 7aa2026..ae3c208 100644 --- a/src/http/views/leaderboard/train.ejs +++ b/src/http/views/leaderboard/train.ejs @@ -4,7 +4,7 @@ - <%- record.trainPoints %> pkt. -Spędzona liczba godzin: <%- msToTime(record.trainTime) %>
+Spędzona liczba godzin: <%- msToTime(record.trainTime, true) %>
Przejechane kilometry: <%- record.trainDistance / 1000 %>km
Zdobyte punkty: <%- record.trainPoints %>
diff --git a/src/http/views/profiles/index.ejs b/src/http/views/profiles/index.ejs index e6d3c90..29d2c6e 100644 --- a/src/http/views/profiles/index.ejs +++ b/src/http/views/profiles/index.ejs @@ -51,7 +51,7 @@Zdobyte punkty: <%- steamStats.stats.find(x => x.name === 'SCORE')?.value ?? "0" %>
Przejechane kilometry: <%- (steamStats.stats.find(x => x.name === 'DISTANCE_M')?.value / 1000) ?? "0" %>
-Czas spędzony jako dyżurny ruchu: <%- msToTime((steamStats.stats.find(x => x.name === 'DISPATCHER_TIME')?.value ?? 0)*1_000_000) || 'Nigdy nie wszedł w tryb dyżurnego ruchu.' %>
+Czas spędzony jako dyżurny ruchu: <%- msToTime((steamStats.stats.find(x => x.name === 'DISPATCHER_TIME')?.value ?? 0)*1_000_000, true) || 'Nigdy nie wszedł w tryb dyżurnego ruchu.' %>
UWAGA: powyższe statystyki udostępnia platforma STEAM, mogą one być z łatwością manipulowane.
@@ -73,7 +73,7 @@Przejechany dystans: <%- player.trainStats[name].distance / 1000 %>km
-Spędzony czas: <%- msToTime(player.trainStats[name].time) %>
+Spędzony czas: <%- msToTime(player.trainStats[name].time, true) %>
Zdobyte punkty: <%- player.trainStats[name].score %>
Średnia prędkość: <%- ((player.trainStats[name].distance / (player.trainStats[name].time / 1000)) * 3.6).toFixed(2) %> km/h
Spędzony czas: <%- msToTime(player.dispatcherStats[name].time) %>
+Spędzony czas: <%- msToTime(player.dispatcherStats[name].time, true) %>
Data wyjścia: <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %> (<%- dayjs(record.leftDate).fromNow() %>)
-Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate) : '--' %> +
Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate, true) : '--' %>
Data wyjścia: <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %> (<%- dayjs(record.leftDate).fromNow() %>)
-Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate) : '--' %> +
Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate, true) : '--' %>
<% if (record.distance) { %>Przejechane kilometry: <%- record.distance / 1000 %>
diff --git a/src/util/time.ts b/src/util/time.ts index 2d77399..4124fbc 100644 --- a/src/util/time.ts +++ b/src/util/time.ts @@ -1,18 +1,27 @@ import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime.js'; +import duration from 'dayjs/plugin/duration.js'; import pl from 'dayjs/locale/pl.js'; + + +dayjs.extend(duration) dayjs.extend(relativeTime); dayjs.locale(pl); -export const msToTime = (duration: number) => { - const minutes = Math.floor((duration / (1000 * 60)) % 60); - const hours = Math.floor((duration / (1000 * 60 * 60)) % 24); +export const msToTime = (duration: number, long = false) => { + const time = dayjs.duration(duration, 'milliseconds'); - if (minutes === 0 && hours === 0 && duration > 0) - return "1m"; + if (long) { + let t = ''; + if (time.hours()) t+= `${time.hours()}h `; + if (time.minutes()) t+= `${time.minutes()}m `; + if (time.seconds()) t+= `${time.seconds()}s`; + + return `${time.humanize} (${t})`; + } - return `${hours ? `${hours}h ` : ''}${minutes ? `${minutes}m` : ''}`; + return time.humanize(); } \ No newline at end of file