statystyki dr (c.d.) + tłumaczenia

This commit is contained in:
2023-12-19 22:11:17 +01:00
parent 00a4a840b0
commit adce339392
7 changed files with 127 additions and 111 deletions
@@ -3,7 +3,7 @@
<span :data-active="statsStatus">
<span class="stats-list">
<h3>
{{ $t('journal.daily-stats-title') }}
{{ $t('journal.daily-stats.title') }}
<b class="text--primary">{{ new Date().toLocaleDateString($i18n.locale) }}</b>
</h3>
@@ -18,17 +18,17 @@
</b>
<b v-else-if="topDispatchers.length == 0">
{{ $t('journal.daily-stats-info') }}
{{ $t('journal.daily-stats.info') }}
</b>
<div v-else>
<div v-if="stats.totalTimetables">
&bull;
<i18n-t keypath="journal.timetable-stats-total">
<i18n-t keypath="journal.daily-stats.total">
<template #count>
<b class="text--primary">
{{ stats.totalTimetables }}
{{ $t('journal.timetable-count', stats.totalTimetables) }}
{{ $t('journal.daily-stats.count', stats.totalTimetables) }}
</b>
</template>
@@ -40,7 +40,7 @@
<div v-if="stats.maxTimetable">
&bull;
<i18n-t keypath="journal.timetable-stats-longest">
<i18n-t keypath="journal.daily-stats.longest">
<template #id>
<router-link :to="`/journal/timetables?timetableId=${stats.maxTimetable.id}`">
<b>{{ stats.maxTimetable.id }}</b>
@@ -64,7 +64,7 @@
<div v-if="topDispatchers.length == 1">
&bull;
<i18n-t keypath="journal.timetable-stats-most-active-dr">
<i18n-t keypath="journal.daily-stats.most-active-dr">
<template #dispatcher>
<router-link :to="`/journal/dispatchers?dispatcherName=${topDispatchers[0].name}`">
<b>{{ topDispatchers[0].name }}</b>
@@ -73,7 +73,7 @@
<template #count>
<b class="text--primary">
{{ topDispatchers[0].count }}
{{ $t('journal.timetable-count', topDispatchers[0].count) }}
{{ $t('journal.daily-stats.count', topDispatchers[0].count) }}
</b>
</template>
</i18n-t>
@@ -81,7 +81,7 @@
<div v-if="topDispatchers.length > 1">
&bull;
<i18n-t keypath="journal.timetable-stats-most-active-dr-many">
<i18n-t keypath="journal.daily-stats.most-active-dr-many">
<template #dispatchers>
<span v-for="(disp, i) in topDispatchers" :key="i">
<span v-if="i == topDispatchers.length - 1"> {{ $t('general.and') }} </span>
@@ -97,7 +97,7 @@
<template #count>
<b class="text--primary">
{{ topDispatchers[0].count }}
{{ $t('journal.timetable-count', topDispatchers[0].count) }}
{{ $t('journal.daily-stats.count', topDispatchers[0].count) }}
</b>
</template>
</i18n-t>
@@ -105,7 +105,7 @@
<div v-if="stats.longestDuties.length > 0">
&bull;
<i18n-t keypath="journal.timetable-stats-longest-duties">
<i18n-t keypath="journal.daily-stats.longest-duties">
<template #dispatcher>
<router-link
:to="`/journal/dispatchers?dispatcherName=${stats.longestDuties[0].name}`"
@@ -124,7 +124,7 @@
<div v-if="stats.mostActiveDrivers.length > 0">
&bull;
<i18n-t keypath="journal.timetable-stats-most-active-driver">
<i18n-t keypath="journal.daily-stats.most-active-driver">
<template #driver>
<b class="text--primary">{{ stats.mostActiveDrivers[0].name }}</b>
</template>
@@ -1,20 +1,14 @@
<template>
<div
class="journal-stats dispatcher"
v-if="store.dispatcherStatsName && store.dispatcherStatsData"
>
<span
class="loading"
v-if="!store.dispatcherStatsData.issuedTimetables || !store.dispatcherStatsData.services"
>
Ten dyżurny nie ma jeszcze szczegółowych statystyk!
<div class="journal-stats dispatcher" v-if="dispatcherName && stats">
<span class="loading" v-if="!stats.issuedTimetables && !stats.services">
{{ $t('journal.dispatcher-stats.empty') }}
</span>
<span v-else>
<h3>
<i18n-t keypath="journal.dispatcher-stats-title">
<i18n-t keypath="journal.dispatcher-stats.title">
<template #name>
<span class="text--primary">{{ store.dispatcherStatsName.toUpperCase() }}</span>
<span class="text--primary">{{ dispatcherName.toUpperCase() }}</span>
</template>
</i18n-t>
</h3>
@@ -22,33 +16,43 @@
<hr class="header-separator" />
<div class="info-stats">
<span class="stat-badge">
<span>DYŻURY</span>
<span>{{ store.dispatcherStatsData.services.count }}</span>
<span class="stat-badge" v-if="stats.services">
<span>{{ $t('journal.dispatcher-stats.services-count') }}</span>
<span>{{ stats.services.count }}</span>
</span>
<span class="stat-badge">
<span>WYSTAWIONE RJ</span>
<span>{{ store.dispatcherStatsData.issuedTimetables.count }}</span>
<span class="stat-badge" v-if="stats.services">
<span>{{ $t('journal.dispatcher-stats.service-max') }}</span>
<span>{{ calculateDuration(stats.services.durationMax) }}</span>
</span>
<span class="stat-badge">
<span>MAKS. CZAS DYŻURU</span>
<span>{{ calculateDuration(store.dispatcherStatsData.services.durationMax) }}</span>
<span class="stat-badge" v-if="stats.services">
<span>{{ $t('journal.dispatcher-stats.service-avg') }}</span>
<span>{{ calculateDuration(stats.services.durationAvg) }}</span>
</span>
<span class="stat-badge">
<span>ŚREDNI CZAS DYŻURU</span>
<span>{{ calculateDuration(store.dispatcherStatsData.services.durationAvg) }}</span>
</div>
<hr style="margin: 1em 0" />
<div class="info-stats">
<span class="stat-badge" v-if="stats.issuedTimetables">
<span>{{ $t('journal.dispatcher-stats.timetables-count') }}</span>
<span>{{ stats.issuedTimetables.count }}</span>
</span>
<span class="stat-badge">
<span>SUMA WYSTAWIONYCH RJ</span>
<span>{{ store.dispatcherStatsData.issuedTimetables.distanceSum.toFixed(2) }}km</span>
<span class="stat-badge" v-if="stats.issuedTimetables">
<span>{{ $t('journal.dispatcher-stats.timetables-sum') }}</span>
<span>{{ stats.issuedTimetables.distanceSum.toFixed(2) }}km</span>
</span>
<span class="stat-badge">
<span>NAJDŁUŻSZY WYSTAWIONY RJ</span>
<span>{{ store.dispatcherStatsData.issuedTimetables.distanceMax.toFixed(2) }}km</span>
<span class="stat-badge" v-if="stats.issuedTimetables">
<span>{{ $t('journal.dispatcher-stats.timetables-max') }}</span>
<span>{{ stats.issuedTimetables.distanceMax.toFixed(2) }}km</span>
</span>
<span class="stat-badge">
<span>ŚREDNIA WYSTAWIONYCH RJ</span>
<span>{{ store.dispatcherStatsData.issuedTimetables.distanceAvg.toFixed(2) }}km</span>
<span class="stat-badge" v-if="stats.issuedTimetables">
<span>{{ $t('journal.dispatcher-stats.timetables-avg') }}</span>
<span>{{ stats.issuedTimetables.distanceAvg.toFixed(2) }}km</span>
</span>
</div>
</span>
@@ -69,7 +73,8 @@ export default defineComponent({
const store = useMainStore();
return {
store
stats: store.dispatcherStatsData,
dispatcherName: store.dispatcherStatsName
};
}
});
@@ -2,7 +2,7 @@
<div class="journal-stats driver" v-if="store.driverStatsData">
<span>
<h3>
<i18n-t keypath="journal.driver-stats-title">
<i18n-t keypath="journal.driver-stats.title">
<template #name>
<span class="text--primary">{{ store.driverStatsName.toUpperCase() }}</span>
</template>
@@ -13,7 +13,7 @@
<div class="info-stats">
<span class="stat-badge">
<span>{{ $t('journal.stats-timetables') }}</span>
<span>{{ $t('journal.driver-stats.timetables') }}</span>
<span
>{{ store.driverStatsData._count.fulfilled }} /
{{ store.driverStatsData._count._all }}</span
@@ -21,17 +21,17 @@
</span>
<span class="stat-badge">
<span>{{ $t('journal.stats-longest-timetable') }}</span>
<span>{{ $t('journal.driver-stats.longest-timetable') }}</span>
<span> {{ store.driverStatsData._max.routeDistance.toFixed(2) }}km </span>
</span>
<span class="stat-badge">
<span>{{ $t('journal.stats-avg-timetable') }}</span>
<span>{{ $t('journal.driver-stats.avg-timetable') }}</span>
<span> {{ store.driverStatsData._avg.routeDistance.toFixed(2) }}km </span>
</span>
<span class="stat-badge">
<span>{{ $t('journal.stats-distance') }}</span>
<span>{{ $t('journal.driver-stats.distance') }}</span>
<span>
{{ store.driverStatsData._sum.currentDistance.toFixed(2) }} /
{{ store.driverStatsData._sum.routeDistance.toFixed(2) }}km
@@ -39,7 +39,7 @@
</span>
<span class="stat-badge">
<span>{{ $t('journal.stats-stations') }}</span>
<span>{{ $t('journal.driver-stats.stations') }}</span>
<span>
{{ store.driverStatsData._sum.confirmedStopsCount }} /
{{ store.driverStatsData._sum.allStopsCount }}
@@ -47,14 +47,6 @@
</span>
</div>
</span>
<!-- <b v-else-if="store.driverStatsStatus == Status.Data.Loading">{{
$t('journal.stats-loading')
}}</b>
<b v-else-if="store.driverStatsStatus == Status.Data.Error">
{{ $t('journal.stats-error ') }}
</b>
<b v-else>{{ $t('journal.driver-stats-info') }}</b> -->
</div>
</template>
+35 -25
View File
@@ -348,33 +348,43 @@
"last-seen-at": "Last seen at",
"currently-at": "Currently at",
"stats-timetables": "TIMETABLES",
"stats-longest-timetable": "LONGEST TIMETABLE",
"stats-avg-timetable": "AVERAGE TIMETABLE LENGTH",
"stats-distance": "DISTANCE",
"stats-stations": "STATIONS",
"driver-stats": {
"button": "DRIVER STATS",
"title": "{name}'s DRIVER STATS",
"info": "Enter a proper nickname into filters [F] to see user's driving statistics!",
"timetables": "TIMETABLES",
"longest-timetable": "LONGEST TIMETABLE",
"avg-timetable": "AVERAGE TIMETABLE LENGTH",
"distance": "DISTANCE",
"stations": "STATIONS"
},
"timetable-stats-title": "Daily stats on {date}",
"timetable-stats-total": "Issued timetables: {count} (total distance: {distance})",
"timetable-stats-longest": "The longest timetable: #{id} (made by {author} for {driver}, distance: {distance})",
"timetable-stats-most-active-dr": "The most active dispatcher: {dispatcher} (created {count})",
"timetable-stats-most-active-dr-many": "The most active dispatchers: {dispatchers} (created {count} each)",
"timetable-stats-most-active-driver": "The most active driver: {driver} (total driven distance: {distance})",
"timetable-stats-longest-duties": "The longest service: {dispatcher} at {station} (duration: {duration})",
"daily-stats": {
"button": "DAILY STATS",
"title": "STATS OF THE DAY",
"info": "Today's statistics are unavailable yet!",
"total": "Issued timetables: {count} (total distance: {distance})",
"longest": "The longest timetable: #{id} (made by {author} for {driver}, distance: {distance})",
"most-active-dr": "The most active dispatcher: {dispatcher} (created {count})",
"most-active-dr-many": "The most active dispatchers: {dispatchers} (created {count} each)",
"most-active-driver": "The most active driver: {driver} (total driven distance: {distance})",
"longest-duties": "The longest service: {dispatcher} at {station} (duration: {duration})",
"count": "timetable | timetables"
},
"timetable-count": "timetable | timetables",
"daily-stats-button": "DAILY STATS",
"daily-stats-title": "STATS OF THE DAY",
"daily-stats-info": "Today's statistics are unavailable yet!",
"driver-stats-button": "DRIVER STATS",
"driver-stats-title": "{name}'s DRIVER STATS",
"driver-stats-info": "Enter a proper nickname into filters [F] to see user's driving statistics!",
"dispatcher-stats-button": "DISPATCHER STATS",
"dispatcher-stats-title": "{name}'s DISPATCHER STATS",
"dispatcher-stats-info": "Enter a proper nickname into filters [F] to see user's dispatcher statistics!",
"dispatcher-stats": {
"button": "DISPATCHER STATS",
"title": "{name}'s DISPATCHER STATS",
"empty": "This user has no statistics saved yet!",
"info": "Enter a proper nickname into filters [F] to see user's dispatcher statistics!",
"services-count": "SERVICES",
"service-max": "MAX SERVICE DURATION",
"service-avg": "AVG SERVICE DURATION",
"timetables-count": "ISSUED TIMETABLES",
"timetables-sum": "TIMETABLES DISTANCE SUM",
"timetables-max": "LONGEST TIMETABLE",
"timetables-avg": "AVG TIMETABLE DISTANCE"
},
"stats-loading": "Fetching statistics...",
"stats-error": "Oops! An unexpected error occurred while trying to fetch statistics! :/",
+34 -25
View File
@@ -330,33 +330,42 @@
"last-seen-at": "Ostatnio widziany na: ",
"currently-at": "Obecnie na scenerii: ",
"stats-timetables": "ROZKŁADY JAZDY",
"stats-longest-timetable": "NAJDŁUŻSZY RJ",
"stats-avg-timetable": "ŚREDNIA DŁUGOŚĆ RJ",
"stats-distance": "DYSTANS",
"stats-stations": "STACJE",
"driver-stats": {
"button": "STAT. MASZYNISTY",
"title": "STATYSTYKI MASZYNISTY {name}",
"info": "Wpisz nazwę użytkownika w filtrach [F], aby zobaczyć jego statystyki maszynisty!",
"timetables": "ROZKŁADY JAZDY",
"longest-timetable": "NAJDŁUŻSZY RJ",
"avg-timetable": "ŚREDNIA DŁUGOŚĆ RJ",
"distance": "DYSTANS",
"stations": "STACJE"
},
"timetable-stats-total": "Stworzone rozkłady jazdy: {count} (łączny dystans: {distance})",
"timetable-stats-longest": "Najdłuższy rozkład jazdy: #{id} (stworzony przez dyżurnego {author} dla maszynisty {driver} o dystansie {distance})",
"timetable-stats-most-active-dr": "Najaktywniejszy dyżurny: {dispatcher} (stworzył {count})",
"timetable-stats-most-active-dr-many": "Najaktywniejsi dyżurni: {dispatchers} (stworzyli po {count})",
"timetable-stats-most-active-driver": "Najaktywniejszy maszynista: {driver} (łączny przejechany dystans: {distance})",
"timetable-stats-longest-duties": "Najdłuższa służba: {dispatcher} na scenerii {station} (czas trwania: {duration})",
"daily-stats": {
"button": "STATYSTYKI DNIA",
"title": "STATYSTYKI DNIA",
"info": "Dzisiejsze statystyki nie są jeszcze dostępne!",
"total": "Stworzone rozkłady jazdy: {count} (łączny dystans: {distance})",
"longest": "Najdłuższy rozkład jazdy: #{id} (stworzony przez dyżurnego {author} dla maszynisty {driver} o dystansie {distance})",
"most-active-dr": "Najaktywniejszy dyżurny: {dispatcher} (stworzył {count})",
"most-active-dr-many": "Najaktywniejsi dyżurni: {dispatchers} (stworzyli po {count})",
"most-active-driver": "Najaktywniejszy maszynista: {driver} (łączny przejechany dystans: {distance})",
"longest-duties": "Najdłuższa służba: {dispatcher} na scenerii {station} (czas trwania: {duration})",
"count": "rozkład jazdy | rozkładów jazdy"
},
"timetable-count": "rozkład jazdy | rozkładów jazdy",
"daily-stats-button": "STATYSTYKI DNIA",
"daily-stats-title": "STATYSTYKI DNIA",
"daily-stats-info": "Dzisiejsze statystyki nie są jeszcze dostępne!",
"driver-stats-button": "STAT. MASZYNISTY",
"driver-stats-title": "STATYSTYKI MASZYNISTY {name}",
"driver-stats-info": "Wpisz nazwę użytkownika w filtrach [F], aby zobaczyć jego statystyki maszynisty!",
"dispatcher-stats-button": "STATYSTYKI DYŻURNEGO",
"dispatcher-stats-title": "STATYSTYKI DYŻURNEGO {name}",
"dispatcher-stats-info": "Wpisz nazwę użytkownika w filtrach [F], aby zobaczyć jego statystyki dyżurnego!",
"dispatcher-stats": {
"button": "STATYSTYKI DYŻURNEGO",
"title": "STATYSTYKI DYŻURNEGO {name}",
"info": "Wpisz nazwę użytkownika w filtrach [F], aby zobaczyć jego statystyki dyżurnego!",
"services-count": "DYŻURY",
"service-max": "MAKS. CZAS DYŻURU",
"service-avg": "ŚREDNI CZAS DYŻURU",
"timetables-count": "WYSTAWIONE RJ",
"timetables-sum": "SUMA WYSTAWIONYCH RJ",
"timetables-max": "NAJDŁUŻSZY WYSTAWIONY RJ",
"timetables-avg": "ŚREDNIA WYSTAWIONYCH RJ"
},
"stats-loading": "Pobieranie statystyk...",
"stats-error": "Ups! Wystąpił błąd podczas próby pobrania statystyk!",
+1 -1
View File
@@ -52,7 +52,7 @@ import JournalStats from '../components/JournalView/JournalStats.vue';
const statsButtons: Journal.StatsButton[] = [
{
tab: Journal.StatsTab.DISPATCHER_STATS,
localeKey: 'journal.dispatcher-stats-button',
localeKey: 'journal.dispatcher-stats.button',
iconName: 'user',
disabled: true
}
+2 -2
View File
@@ -159,13 +159,13 @@ export default defineComponent({
statsButtons: [
{
tab: Journal.StatsTab.DAILY_STATS,
localeKey: 'journal.daily-stats-button',
localeKey: 'journal.daily-stats.button',
iconName: 'stats',
disabled: false
},
{
tab: Journal.StatsTab.DRIVER_STATS,
localeKey: 'journal.driver-stats-button',
localeKey: 'journal.driver-stats.button',
iconName: 'user',
disabled: true
}