statystyki DR

This commit is contained in:
2023-12-18 16:00:18 +01:00
parent 1e705ea496
commit 00a4a840b0
5 changed files with 50 additions and 18 deletions
@@ -3,7 +3,10 @@
class="journal-stats dispatcher"
v-if="store.dispatcherStatsName && store.dispatcherStatsData"
>
<span class="loading" v-if="!store.dispatcherStatsData._count._all">
<span
class="loading"
v-if="!store.dispatcherStatsData.issuedTimetables || !store.dispatcherStatsData.services"
>
Ten dyżurny nie ma jeszcze szczegółowych statystyk!
</span>
@@ -18,22 +21,34 @@
<hr class="header-separator" />
<div class="info-stats" v-if="store.dispatcherStatsData._count._all">
<div class="info-stats">
<span class="stat-badge">
<span>LICZBA</span>
<span>{{ store.dispatcherStatsData._count._all }}</span>
<span>DYŻURY</span>
<span>{{ store.dispatcherStatsData.services.count }}</span>
</span>
<span class="stat-badge">
<span>SUMA (KM)</span>
<span>{{ store.dispatcherStatsData._sum.routeDistance.toFixed(2) }}km</span>
<span>WYSTAWIONE RJ</span>
<span>{{ store.dispatcherStatsData.issuedTimetables.count }}</span>
</span>
<span class="stat-badge">
<span>NAJDŁUŻSZY</span>
<span>{{ store.dispatcherStatsData._max.routeDistance.toFixed(2) }}km</span>
<span>MAKS. CZAS DYŻURU</span>
<span>{{ calculateDuration(store.dispatcherStatsData.services.durationMax) }}</span>
</span>
<span class="stat-badge">
<span>ŚREDNIO</span>
<span>{{ store.dispatcherStatsData._avg.routeDistance.toFixed(2) }}km</span>
<span>ŚREDNI CZAS DYŻURU</span>
<span>{{ calculateDuration(store.dispatcherStatsData.services.durationAvg) }}</span>
</span>
<span class="stat-badge">
<span>SUMA WYSTAWIONYCH RJ</span>
<span>{{ store.dispatcherStatsData.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>
<span class="stat-badge">
<span>ŚREDNIA WYSTAWIONYCH RJ</span>
<span>{{ store.dispatcherStatsData.issuedTimetables.distanceAvg.toFixed(2) }}km</span>
</span>
</div>
</span>
@@ -43,10 +58,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { useMainStore } from '../../store/mainStore';
import dateMixin from '../../mixins/dateMixin';
export default defineComponent({
name: 'journal-dispatcher-stats',
mixins: [dateMixin],
setup() {
const store = useMainStore();
+3 -1
View File
@@ -115,13 +115,15 @@ export default defineComponent({
try {
const statsData: API.DispatcherStats.Response = await (
await http.get('api/getDispatcherInfo', {
await http.get('api/getDispatcherStats', {
params: {
name: this.mainStore.dispatcherStatsName
}
})
).data;
console.log(statsData);
this.mainStore.dispatcherStatsData = statsData;
} catch (error) {
this.mainStore.dispatcherStatsData = undefined;
@@ -10,7 +10,7 @@
<router-link
class="dispatcher_name"
:to="`/journal/dispatchers?dispatcherName=${onlineScenery.dispatcherName}`"
:to="`/journal/dispatchers?search-dispatcher=${onlineScenery.dispatcherName}`"
>
<span
class="text--donator"
+1
View File
@@ -25,6 +25,7 @@ hr.header-separator {
.info-stats {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 0.5em;
}
+17 -6
View File
@@ -31,7 +31,11 @@ export namespace API {
export namespace DispatcherStats {
export interface DistanceStat {
routeDistance: number;
routeDistance: number | null;
}
export interface DurationStat {
currentDuration: number | null;
}
export interface Count {
@@ -39,11 +43,18 @@ export namespace API {
}
export interface Response {
_sum: DistanceStat;
_max: DistanceStat;
_min: DistanceStat;
_avg: DistanceStat;
_count: Count;
services: {
count: number;
durationMax: number;
durationAvg: number;
} | null;
issuedTimetables: {
count: number;
distanceMax: number;
distanceAvg: number;
distanceSum: number;
} | null;
}
}