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