mirror of
https://github.com/Spythere/stacjownik.git
synced 2026-05-03 13:28:11 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| deb7b68985 | |||
| 633f05f690 | |||
| 73828867da | |||
| 75685c1e0e | |||
| 496ff95236 | |||
| 7e25327832 | |||
| 272c9f50f8 |
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "stacjownik",
|
||||
"version": "1.11.0",
|
||||
"version": "1.11.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -143,7 +143,7 @@ async function fetchDailyTimetableStats() {
|
||||
distanceAvg,
|
||||
timetableAuthor: maxTimetable?.authorName || '',
|
||||
timetableDriver: maxTimetable?.driverName || '',
|
||||
timetableId: maxTimetable?.timetableId || 0,
|
||||
timetableId: maxTimetable?.id || 0,
|
||||
timetableRouteDistance: maxTimetable?.routeDistance || 0,
|
||||
|
||||
mostActiveDispatchers,
|
||||
|
||||
@@ -15,6 +15,14 @@
|
||||
tabindex="0"
|
||||
>
|
||||
<span>
|
||||
<b
|
||||
v-if="item.dispatcherLevel !== null"
|
||||
class="dispatcher-level"
|
||||
:style="calculateExpStyle(item.dispatcherLevel, item.dispatcherIsSupporter)"
|
||||
>
|
||||
{{ item.dispatcherLevel >= 2 ? item.dispatcherLevel : 'L' }}
|
||||
</b>
|
||||
|
||||
<b class="text--primary">{{ item.dispatcherName }}</b> • <b>{{ item.stationName }}</b>
|
||||
<span class="text--grayed"> #{{ item.stationHash }} </span>
|
||||
<span class="region-badge" :class="item.region">PL1</span>
|
||||
@@ -44,6 +52,7 @@
|
||||
import { defineComponent, PropType } from 'vue';
|
||||
import dateMixin from '../../mixins/dateMixin';
|
||||
import { DispatcherHistory } from '../../scripts/interfaces/api/DispatchersAPIData';
|
||||
import styleMixin from '../../mixins/styleMixin';
|
||||
|
||||
export default defineComponent({
|
||||
props: {
|
||||
@@ -53,7 +62,7 @@ export default defineComponent({
|
||||
},
|
||||
},
|
||||
|
||||
mixins: [dateMixin],
|
||||
mixins: [dateMixin, styleMixin],
|
||||
|
||||
computed: {
|
||||
computedDispatcherHistory() {
|
||||
@@ -143,6 +152,18 @@ li.sticky {
|
||||
}
|
||||
}
|
||||
|
||||
.dispatcher-level {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
line-height: 150%;
|
||||
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
|
||||
margin-right: 0.5em;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
@include smallScreen() {
|
||||
.journal_item {
|
||||
flex-direction: column;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<b class="text--primary">{{ timetable.trainCategoryCode }} </b>
|
||||
<b>{{ timetable.trainNo }}</b>
|
||||
| <span>{{ timetable.driverName }}</span> |
|
||||
<span class="text--grayed">#{{ timetable.timetableId }}</span>
|
||||
<span class="text--grayed">#{{ timetable.id }}</span>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<router-link :to="`/journal/timetables?timetableId=${historyItem.timetableId}`">
|
||||
<span class="text--grayed"> #{{ historyItem.timetableId }} </span>
|
||||
<router-link :to="`/journal/timetables?timetableId=${historyItem.id}`">
|
||||
<span class="text--grayed"> #{{ historyItem.id }} </span>
|
||||
<b class="text--primary"> {{ historyItem.trainCategoryCode }} {{ historyItem.trainNo }}</b>
|
||||
<div>{{ historyItem.driverName }}</div>
|
||||
</router-link>
|
||||
|
||||
@@ -4,6 +4,8 @@ export interface DispatcherHistory {
|
||||
currentDuration: number;
|
||||
dispatcherId: number;
|
||||
dispatcherName: string;
|
||||
dispatcherLevel: number | null;
|
||||
dispatcherIsSupporter: boolean;
|
||||
isOnline: boolean;
|
||||
lastOnlineTimestamp: number;
|
||||
region: string;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
export interface TimetableHistory {
|
||||
id: number;
|
||||
|
||||
timetableId: number;
|
||||
trainNo: number;
|
||||
trainCategoryCode: string;
|
||||
|
||||
@@ -24,7 +24,7 @@ function filterTrainList(trainList: Train[], searchedTrain: string, searchedDriv
|
||||
(train) => {
|
||||
const isFiltered = filters.every(f => {
|
||||
if (f.isActive) return true;
|
||||
|
||||
|
||||
if (!train.timetableData) return filters.find(filter => filter.id == TrainFilterType.noTimetable)!.isActive;
|
||||
|
||||
switch (f.id) {
|
||||
|
||||
@@ -13,6 +13,6 @@ export interface JournalTimetableFilter {
|
||||
}
|
||||
|
||||
export interface JournalTimetableSorter {
|
||||
id: 'timetableId' | 'beginDate' | 'distance' | 'total-stops';
|
||||
id: 'beginDate' | 'distance' | 'total-stops';
|
||||
dir: -1 | 1;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<JournalOptions
|
||||
@on-search-confirm="fetchHistoryData"
|
||||
@on-options-reset="resetOptions"
|
||||
:sorter-option-ids="['timetableId', 'beginDate', 'distance', 'total-stops']"
|
||||
:sorter-option-ids="[ 'beginDate', 'distance', 'total-stops']"
|
||||
:filters="journalTimetableFilters"
|
||||
:currentOptionsActive="currentOptionsActive"
|
||||
:data-status="dataStatus"
|
||||
@@ -111,7 +111,7 @@ export default defineComponent({
|
||||
}),
|
||||
|
||||
setup() {
|
||||
const sorterActive: JournalTimetableSorter = reactive({ id: 'timetableId', dir: 1 });
|
||||
const sorterActive: JournalTimetableSorter = reactive({ id: 'beginDate', dir: 1 });
|
||||
const journalFilterActive = ref(journalTimetableFilters[0]);
|
||||
|
||||
const searchersValues = reactive({
|
||||
@@ -147,7 +147,7 @@ export default defineComponent({
|
||||
watch: {
|
||||
currentQueryArray(q: string[]) {
|
||||
this.currentOptionsActive =
|
||||
q.length > 2 || q.some((qv) => qv.startsWith('sortBy=') && qv.split('=')[1] != 'timetableId');
|
||||
q.length > 2 || q.some((qv) => qv.startsWith('sortBy=') && qv.split('=')[1] != 'beginDate');
|
||||
},
|
||||
},
|
||||
|
||||
@@ -188,7 +188,7 @@ export default defineComponent({
|
||||
this.setSearchers('', '', '', '');
|
||||
|
||||
this.journalFilterActive = this.journalTimetableFilters[0];
|
||||
this.sorterActive.id = 'timetableId';
|
||||
this.sorterActive.id = 'beginDate';
|
||||
|
||||
this.fetchHistoryData();
|
||||
},
|
||||
@@ -234,7 +234,7 @@ export default defineComponent({
|
||||
if (this.sorterActive.id == 'distance') queries.push('sortBy=routeDistance');
|
||||
else if (this.sorterActive.id == 'total-stops') queries.push('sortBy=allStopsCount');
|
||||
else if (this.sorterActive.id == 'beginDate') queries.push('sortBy=beginDate');
|
||||
else queries.push('sortBy=timetableId');
|
||||
// else queries.push('sortBy=timetableId');
|
||||
|
||||
queries.push('countLimit=15');
|
||||
|
||||
|
||||
+2
-1
@@ -12,7 +12,7 @@ export default defineConfig({
|
||||
registerType: 'prompt',
|
||||
|
||||
workbox: {
|
||||
globPatterns: ['**/*.{js,css,html,png,svg,img}'],
|
||||
globPatterns: ['**/*.{js,css,html,png,svg,jpg}'],
|
||||
runtimeCaching: [
|
||||
{
|
||||
urlPattern: new RegExp('^https://spythere.pl/api/getSceneries', 'i'),
|
||||
@@ -20,6 +20,7 @@ export default defineConfig({
|
||||
options: {
|
||||
cacheName: 'sceneries-cache',
|
||||
expiration: {
|
||||
maxEntries: 1,
|
||||
maxAgeSeconds: 60 * 60 * 24 * 7, // <== 7 days
|
||||
},
|
||||
cacheableResponse: {
|
||||
|
||||
Reference in New Issue
Block a user