From 899ca6422b813443d85e10d5d604429867462591 Mon Sep 17 00:00:00 2001 From: alekswilc Date: Mon, 26 Aug 2024 19:27:43 +0200 Subject: [PATCH] (fix): leaderboard time --- src/http/views/leaderboard/station.ejs | 2 +- src/http/views/leaderboard/train.ejs | 2 +- src/http/views/profiles/index.ejs | 6 +++--- src/http/views/stations/details.ejs | 2 +- src/http/views/trains/details.ejs | 2 +- src/util/time.ts | 21 +++++++++++++++------ 6 files changed, 22 insertions(+), 13 deletions(-) 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 @@ Statystyki Steam

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 @@
<%- name %>

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

@@ -95,7 +95,7 @@
  • <%- name %> -

    Spędzony czas: <%- msToTime(player.dispatcherStats[name].time) %>

    +

    Spędzony czas: <%- msToTime(player.dispatcherStats[name].time, true) %>

  • diff --git a/src/http/views/stations/details.ejs b/src/http/views/stations/details.ejs index e80b23d..eb0ea14 100644 --- a/src/http/views/stations/details.ejs +++ b/src/http/views/stations/details.ejs @@ -60,7 +60,7 @@ %> (<%- record.joinedDate ? dayjs(record.joinedDate).fromNow() : '--' %>)

    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) : '--' %>


    diff --git a/src/http/views/trains/details.ejs b/src/http/views/trains/details.ejs index 9ce4aa2..ce4a838 100644 --- a/src/http/views/trains/details.ejs +++ b/src/http/views/trains/details.ejs @@ -59,7 +59,7 @@ %> (<%- record.joinedDate ? dayjs(record.joinedDate).fromNow() : '--' %>)

    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