Compare commits

...

7 Commits

Author SHA1 Message Date
Spythere deb7b68985 Merge branch 'development' 2023-01-01 03:02:11 +01:00
Spythere 633f05f690 fix: wyświetlanie poprawnych id RJ 2023-01-01 02:57:11 +01:00
Spythere 73828867da Merge wersji dev do produkcji (1.11.1)
Wersja 1.11.1
2022-12-31 18:30:08 +01:00
Spythere 75685c1e0e bump: 1.11.1 2022-12-31 18:22:39 +01:00
Spythere 496ff95236 fix: sortowanie RJ wg id z API 2022-12-31 18:21:32 +01:00
Spythere 7e25327832 feature: lvl dyżurnego w dzienniku 2022-12-30 17:39:21 +01:00
Spythere 272c9f50f8 fix: SW cache 2022-12-30 15:45:17 +01:00
12 changed files with 2426 additions and 2313 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "stacjownik", "name": "stacjownik",
"version": "1.11.0", "version": "1.11.1",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+1 -1
View File
@@ -143,7 +143,7 @@ async function fetchDailyTimetableStats() {
distanceAvg, distanceAvg,
timetableAuthor: maxTimetable?.authorName || '', timetableAuthor: maxTimetable?.authorName || '',
timetableDriver: maxTimetable?.driverName || '', timetableDriver: maxTimetable?.driverName || '',
timetableId: maxTimetable?.timetableId || 0, timetableId: maxTimetable?.id || 0,
timetableRouteDistance: maxTimetable?.routeDistance || 0, timetableRouteDistance: maxTimetable?.routeDistance || 0,
mostActiveDispatchers, mostActiveDispatchers,
@@ -15,6 +15,14 @@
tabindex="0" tabindex="0"
> >
<span> <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> &bull; <b>{{ item.stationName }}</b> <b class="text--primary">{{ item.dispatcherName }}</b> &bull; <b>{{ item.stationName }}</b>
<span class="text--grayed">&nbsp;#{{ item.stationHash }}&nbsp;</span> <span class="text--grayed">&nbsp;#{{ item.stationHash }}&nbsp;</span>
<span class="region-badge" :class="item.region">PL1</span> <span class="region-badge" :class="item.region">PL1</span>
@@ -44,6 +52,7 @@
import { defineComponent, PropType } from 'vue'; import { defineComponent, PropType } from 'vue';
import dateMixin from '../../mixins/dateMixin'; import dateMixin from '../../mixins/dateMixin';
import { DispatcherHistory } from '../../scripts/interfaces/api/DispatchersAPIData'; import { DispatcherHistory } from '../../scripts/interfaces/api/DispatchersAPIData';
import styleMixin from '../../mixins/styleMixin';
export default defineComponent({ export default defineComponent({
props: { props: {
@@ -53,7 +62,7 @@ export default defineComponent({
}, },
}, },
mixins: [dateMixin], mixins: [dateMixin, styleMixin],
computed: { computed: {
computedDispatcherHistory() { 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() { @include smallScreen() {
.journal_item { .journal_item {
flex-direction: column; flex-direction: column;
@@ -16,7 +16,7 @@
<b class="text--primary">{{ timetable.trainCategoryCode }}&nbsp;</b> <b class="text--primary">{{ timetable.trainCategoryCode }}&nbsp;</b>
<b>{{ timetable.trainNo }}</b> <b>{{ timetable.trainNo }}</b>
| <span>{{ timetable.driverName }}</span> | | <span>{{ timetable.driverName }}</span> |
<span class="text--grayed">#{{ timetable.timetableId }}</span> <span class="text--grayed">#{{ timetable.id }}</span>
</span> </span>
<span> <span>
@@ -11,8 +11,8 @@
</div> </div>
<div> <div>
<router-link :to="`/journal/timetables?timetableId=${historyItem.timetableId}`"> <router-link :to="`/journal/timetables?timetableId=${historyItem.id}`">
<span class="text--grayed"> #{{ historyItem.timetableId }} </span> <span class="text--grayed"> #{{ historyItem.id }} </span>
<b class="text--primary">&nbsp;{{ historyItem.trainCategoryCode }} {{ historyItem.trainNo }}</b> <b class="text--primary">&nbsp;{{ historyItem.trainCategoryCode }} {{ historyItem.trainNo }}</b>
<div>{{ historyItem.driverName }}</div> <div>{{ historyItem.driverName }}</div>
</router-link> </router-link>
@@ -4,6 +4,8 @@ export interface DispatcherHistory {
currentDuration: number; currentDuration: number;
dispatcherId: number; dispatcherId: number;
dispatcherName: string; dispatcherName: string;
dispatcherLevel: number | null;
dispatcherIsSupporter: boolean;
isOnline: boolean; isOnline: boolean;
lastOnlineTimestamp: number; lastOnlineTimestamp: number;
region: string; region: string;
@@ -1,4 +1,6 @@
export interface TimetableHistory { export interface TimetableHistory {
id: number;
timetableId: number; timetableId: number;
trainNo: number; trainNo: number;
trainCategoryCode: string; trainCategoryCode: string;
+1 -1
View File
@@ -24,7 +24,7 @@ function filterTrainList(trainList: Train[], searchedTrain: string, searchedDriv
(train) => { (train) => {
const isFiltered = filters.every(f => { const isFiltered = filters.every(f => {
if (f.isActive) return true; if (f.isActive) return true;
if (!train.timetableData) return filters.find(filter => filter.id == TrainFilterType.noTimetable)!.isActive; if (!train.timetableData) return filters.find(filter => filter.id == TrainFilterType.noTimetable)!.isActive;
switch (f.id) { switch (f.id) {
+1 -1
View File
@@ -13,6 +13,6 @@ export interface JournalTimetableFilter {
} }
export interface JournalTimetableSorter { export interface JournalTimetableSorter {
id: 'timetableId' | 'beginDate' | 'distance' | 'total-stops'; id: 'beginDate' | 'distance' | 'total-stops';
dir: -1 | 1; dir: -1 | 1;
} }
+5 -5
View File
@@ -6,7 +6,7 @@
<JournalOptions <JournalOptions
@on-search-confirm="fetchHistoryData" @on-search-confirm="fetchHistoryData"
@on-options-reset="resetOptions" @on-options-reset="resetOptions"
:sorter-option-ids="['timetableId', 'beginDate', 'distance', 'total-stops']" :sorter-option-ids="[ 'beginDate', 'distance', 'total-stops']"
:filters="journalTimetableFilters" :filters="journalTimetableFilters"
:currentOptionsActive="currentOptionsActive" :currentOptionsActive="currentOptionsActive"
:data-status="dataStatus" :data-status="dataStatus"
@@ -111,7 +111,7 @@ export default defineComponent({
}), }),
setup() { setup() {
const sorterActive: JournalTimetableSorter = reactive({ id: 'timetableId', dir: 1 }); const sorterActive: JournalTimetableSorter = reactive({ id: 'beginDate', dir: 1 });
const journalFilterActive = ref(journalTimetableFilters[0]); const journalFilterActive = ref(journalTimetableFilters[0]);
const searchersValues = reactive({ const searchersValues = reactive({
@@ -147,7 +147,7 @@ export default defineComponent({
watch: { watch: {
currentQueryArray(q: string[]) { currentQueryArray(q: string[]) {
this.currentOptionsActive = 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.setSearchers('', '', '', '');
this.journalFilterActive = this.journalTimetableFilters[0]; this.journalFilterActive = this.journalTimetableFilters[0];
this.sorterActive.id = 'timetableId'; this.sorterActive.id = 'beginDate';
this.fetchHistoryData(); this.fetchHistoryData();
}, },
@@ -234,7 +234,7 @@ export default defineComponent({
if (this.sorterActive.id == 'distance') queries.push('sortBy=routeDistance'); 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 == 'total-stops') queries.push('sortBy=allStopsCount');
else if (this.sorterActive.id == 'beginDate') queries.push('sortBy=beginDate'); else if (this.sorterActive.id == 'beginDate') queries.push('sortBy=beginDate');
else queries.push('sortBy=timetableId'); // else queries.push('sortBy=timetableId');
queries.push('countLimit=15'); queries.push('countLimit=15');
+2 -1
View File
@@ -12,7 +12,7 @@ export default defineConfig({
registerType: 'prompt', registerType: 'prompt',
workbox: { workbox: {
globPatterns: ['**/*.{js,css,html,png,svg,img}'], globPatterns: ['**/*.{js,css,html,png,svg,jpg}'],
runtimeCaching: [ runtimeCaching: [
{ {
urlPattern: new RegExp('^https://spythere.pl/api/getSceneries', 'i'), urlPattern: new RegExp('^https://spythere.pl/api/getSceneries', 'i'),
@@ -20,6 +20,7 @@ export default defineConfig({
options: { options: {
cacheName: 'sceneries-cache', cacheName: 'sceneries-cache',
expiration: { expiration: {
maxEntries: 1,
maxAgeSeconds: 60 * 60 * 24 * 7, // <== 7 days maxAgeSeconds: 60 * 60 * 24 * 7, // <== 7 days
}, },
cacheableResponse: { cacheableResponse: {
+2386 -2299
View File
File diff suppressed because it is too large Load Diff