mirror of
https://github.com/Spythere/stacjownik.git
synced 2026-05-03 13:28:11 +00:00
Poprawki statystyk
This commit is contained in:
@@ -8,31 +8,32 @@
|
||||
</h2>
|
||||
|
||||
<div class="loading" v-if="!store.dispatcherStatsData">Ładowanie...</div>
|
||||
<div class="loading" v-else-if="!store.dispatcherStatsData._count._all">Ten dyżurny nie ma jeszcze szczegółowych statystyk!</div>
|
||||
<div v-else>
|
||||
<h3>STATYSTYKI WYSTAWIONYCH ROZKŁADÓW</h3>
|
||||
<div class="info-stats">
|
||||
<div class="info-stats" v-if="store.dispatcherStatsData._count._all">
|
||||
<span class="stat-badge">
|
||||
<span>LICZBA</span>
|
||||
<span>{{ store.dispatcherStatsData.count }}</span>
|
||||
<span>{{ store.dispatcherStatsData._count._all }}</span>
|
||||
</span>
|
||||
<span class="stat-badge">
|
||||
<span>SUMA (KM)</span>
|
||||
<span>{{ store.dispatcherStatsData.sumDistance.toFixed(2) }}km</span>
|
||||
<span>{{ store.dispatcherStatsData._sum.routeDistance.toFixed(2) }}km</span>
|
||||
</span>
|
||||
<span class="stat-badge">
|
||||
<span>NAJDŁUŻSZY</span>
|
||||
<span>{{ store.dispatcherStatsData.maxTimetableDistance }}km</span>
|
||||
<span>{{ store.dispatcherStatsData._max.routeDistance.toFixed(2) }}km</span>
|
||||
</span>
|
||||
<span class="stat-badge">
|
||||
<span>ŚREDNIO</span>
|
||||
<span>{{ store.dispatcherStatsData.avgTimetableDistance }}km</span>
|
||||
<span>{{ store.dispatcherStatsData._avg.routeDistance.toFixed(2) }}km</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<h3>OSTATNIE WYSTAWIONE ROZKŁADY</h3>
|
||||
|
||||
<div class="last-timetables">
|
||||
<div class="timetable-row" v-for="timetable in store.dispatcherStatsData.timetables">
|
||||
<div class="timetable-row" v-for="timetable in timetables">
|
||||
<span>#{{ timetable.timetableId }}</span>
|
||||
<span>{{ timetable.routeDistance }}km</span>
|
||||
<span>
|
||||
@@ -49,6 +50,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { DispatcherStatsAPIData } from '@/scripts/interfaces/api/DispatcherStatsAPIData';
|
||||
import { TimetableHistory } from '@/scripts/interfaces/api/TimetablesAPIData';
|
||||
import { URLs } from '@/scripts/utils/apiURLs';
|
||||
import { useStore } from '@/store/store';
|
||||
import axios from 'axios';
|
||||
@@ -67,6 +69,7 @@ export default defineComponent({
|
||||
data() {
|
||||
return {
|
||||
lastDispatcherName: '',
|
||||
timetables: [] as TimetableHistory[],
|
||||
};
|
||||
},
|
||||
|
||||
@@ -82,7 +85,12 @@ export default defineComponent({
|
||||
await axios.get(`${URLs.stacjownikAPI}/api/getDispatcherInfo?name=${this.store.dispatcherStatsName}`)
|
||||
).data;
|
||||
|
||||
this.store.dispatcherStatsData = statsData.response;
|
||||
const timetables: TimetableHistory[] = await (
|
||||
await axios.get(`${URLs.stacjownikAPI}/api/getTimetables?authorName=${this.store.dispatcherStatsName}`)
|
||||
).data;
|
||||
|
||||
this.timetables = timetables;
|
||||
this.store.dispatcherStatsData = statsData;
|
||||
},
|
||||
|
||||
closeCard() {
|
||||
|
||||
@@ -10,36 +10,39 @@
|
||||
<div class="loading" v-if="!store.driverStatsData">Ładowanie...</div>
|
||||
|
||||
<div v-else>
|
||||
<div class="info-stats">
|
||||
<div class="info-stats" v-if="store.driverStatsData._sum.routeDistance != null">
|
||||
<span class="stat-badge">
|
||||
<span>PRZEBYTO</span>
|
||||
<span>{{ store.driverStatsData.confirmedDistance.toFixed(2) }}km</span>
|
||||
<span>{{ store.driverStatsData._sum.routeDistance.toFixed(2) }}km</span>
|
||||
</span>
|
||||
<span class="stat-badge">
|
||||
<span>PORZUCONO</span>
|
||||
<span>
|
||||
{{ (store.driverStatsData.totalDistance - store.driverStatsData.confirmedDistance).toFixed(2) }}km
|
||||
{{ (store.driverStatsData._sum.routeDistance - store.driverStatsData._sum.currentDistance).toFixed(2) }}km
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span class="stat-badge">
|
||||
<span>WYPEŁNIONO</span>
|
||||
<span>{{ store.driverStatsData.fulfilled }} RJ</span>
|
||||
<span>{{ store.driverStatsData._count.fulfilled }} RJ</span>
|
||||
</span>
|
||||
|
||||
<span class="stat-badge">
|
||||
<span>PORZUCONO</span>
|
||||
<span>{{ store.driverStatsData.abandoned }} RJ</span>
|
||||
<span>{{ store.driverStatsData._count._all - store.driverStatsData._count.fulfilled }} RJ</span>
|
||||
</span>
|
||||
|
||||
<span class="stat-badge">
|
||||
<span>ZATWIERDZONO</span>
|
||||
<span>{{ store.driverStatsData.confirmedStops }} stacji</span>
|
||||
<span>{{ store.driverStatsData._sum.confirmedStopsCount }} stacji</span>
|
||||
</span>
|
||||
|
||||
<span class="stat-badge">
|
||||
<span>PORZUCONO</span>
|
||||
<span>{{ store.driverStatsData.totalStops - store.driverStatsData.confirmedStops }} stacji</span>
|
||||
<span>
|
||||
{{ store.driverStatsData._sum.allStopsCount - store.driverStatsData._sum.confirmedStopsCount }}
|
||||
stacji
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -87,10 +90,10 @@ export default defineComponent({
|
||||
).data;
|
||||
|
||||
const recentTimetablesData: TimetableHistory[] = await (
|
||||
await axios.get(`${URLs.stacjownikAPI}/api/getTimetables?driver=${this.store.driverStatsName}`)
|
||||
await axios.get(`${URLs.stacjownikAPI}/api/getTimetables?driverName=${this.store.driverStatsName}`)
|
||||
).data;
|
||||
|
||||
this.store.driverStatsData = statsData.response;
|
||||
this.store.driverStatsData = statsData;
|
||||
this.lastTimetables = recentTimetablesData || [];
|
||||
},
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
:filters="journalTimetableFilters"
|
||||
/>
|
||||
|
||||
<button
|
||||
<!-- <button
|
||||
class="btn btn--option"
|
||||
:disabled="store.driverStatsName == ''"
|
||||
@click="() => (statsCardOpen = !statsCardOpen)"
|
||||
@@ -23,7 +23,7 @@
|
||||
Statystyki maszynisty <b>{{ store.driverStatsName }}</b>
|
||||
</span>
|
||||
<span v-else>Statystyki maszynisty niedostępne</span>
|
||||
</button>
|
||||
</button> -->
|
||||
</div>
|
||||
|
||||
<div class="journal-list">
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
v-model="option.value"
|
||||
@change="handleChange"
|
||||
/>
|
||||
<span :class="option.section + (option.value ? ' checked' : '')"
|
||||
>{{ $t(`filters.${option.id}`) }}
|
||||
<span v-if="option.id != 'troll'" :class="option.section + (option.value ? ' checked' : '')"
|
||||
>{{ option.id != 'troll' ? $t(`filters.${option.id}`) : 'ARKADIA ZDRÓJ' }}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
@@ -37,6 +37,11 @@ export default defineComponent({
|
||||
emits: ['optionChange'],
|
||||
methods: {
|
||||
handleChange() {
|
||||
if (this.option.name == 'troll') {
|
||||
location.href = 'https://www.youtube.com/watch?v=HIcSWuKMwOw';
|
||||
return;
|
||||
}
|
||||
|
||||
this.$emit('optionChange', {
|
||||
name: this.option.name,
|
||||
value: this.option.value,
|
||||
@@ -50,7 +55,7 @@ export default defineComponent({
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "../../styles/option.scss";
|
||||
@import '../../styles/option.scss';
|
||||
|
||||
$accessCol: #e03b07;
|
||||
$controlCol: #0085ff;
|
||||
@@ -110,6 +115,14 @@ $routesCol: #9049c0;
|
||||
}
|
||||
}
|
||||
|
||||
&.troll {
|
||||
background-color: firebrick;
|
||||
|
||||
&::before {
|
||||
box-shadow: 0 0 6px 1px firebrick;
|
||||
}
|
||||
}
|
||||
|
||||
&.mode {
|
||||
background-color: lightgreen;
|
||||
color: black;
|
||||
|
||||
Reference in New Issue
Block a user