Compare commits

..

12 Commits

Author SHA1 Message Date
Spythere 50102c6127 Merge pull request #30 from Spythere/development
chore: new train categories
2024-05-13 19:25:31 +02:00
Spythere 210c49fb04 chore: new train categories 2024-05-13 19:25:09 +02:00
Spythere bc3db163b1 Merge pull request #29 from Spythere/development
bump(version): 1.8.7
2024-05-13 19:16:04 +02:00
Spythere b364586ebc bump(version): 1.8.7 2024-05-13 19:15:19 +02:00
Spythere f3509ef217 Merge pull request #28 from Spythere/development
1.8.7
2024-05-13 19:14:59 +02:00
Spythere d584d99f4c chore: changed cold start requirements 2024-05-13 19:11:15 +02:00
Spythere 078c941910 chore: fixed preview image loading 2024-05-13 19:04:46 +02:00
Spythere 76670ceb29 Merge pull request #27 from Spythere/development
1.8.6
2024-05-13 16:12:46 +02:00
Spythere 4cdd8ea06a bump(version): 1.8.6 2024-05-13 15:58:39 +02:00
Spythere 454ae138f7 chore: config fix 2024-05-13 15:57:49 +02:00
Spythere 640c5e262b chore: stock upload fix 2024-05-13 15:52:06 +02:00
Spythere 7416d7d59f chore: pwa caching fixes 2024-05-13 15:51:48 +02:00
6 changed files with 73 additions and 39 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "pojazdownik", "name": "pojazdownik",
"version": "1.8.5", "version": "1.8.7",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
+51 -9
View File
@@ -1,6 +1,7 @@
<template> <template>
<section class="train-image-section"> <section class="train-image-section">
<div v-if="store.chosenVehicle"> <div v-if="store.chosenVehicle">
<div class="image-wrapper">
<img <img
:src="getThumbnailURL(store.chosenVehicle.type, 'small')" :src="getThumbnailURL(store.chosenVehicle.type, 'small')"
:data-preview-active="store.chosenVehicle !== null" :data-preview-active="store.chosenVehicle !== null"
@@ -11,9 +12,11 @@
:data-team-only="store.chosenVehicle.teamOnly" :data-team-only="store.chosenVehicle.teamOnly"
@click="onImageClick" @click="onImageClick"
@keydown.enter="onImageClick" @keydown.enter="onImageClick"
@load="onImageLoad"
@error="onImageError" @error="onImageError"
tabindex="0" tabindex="0"
/> />
</div>
<div class="image-info"> <div class="image-info">
<b class="text--accent">{{ store.chosenVehicle.type }}</b> &bull; <b class="text--accent">{{ store.chosenVehicle.type }}</b> &bull;
@@ -77,6 +80,10 @@ import { computed, defineComponent } from 'vue';
import { useStore } from '../../store'; import { useStore } from '../../store';
import { isTractionUnit } from '../../utils/vehicleUtils'; import { isTractionUnit } from '../../utils/vehicleUtils';
import imageMixin from '../../mixins/imageMixin'; import imageMixin from '../../mixins/imageMixin';
import { watch } from 'vue';
import { storeToRefs } from 'pinia';
import { Ref } from 'vue';
import { ref } from 'vue';
export default defineComponent({ export default defineComponent({
mixins: [imageMixin], mixins: [imageMixin],
@@ -89,9 +96,17 @@ export default defineComponent({
setup() { setup() {
const store = useStore(); const store = useStore();
const { chosenVehicle } = storeToRefs(store);
const imageStatus = ref('none') as Ref<'none' | 'loading' | 'loaded' | 'error'>;
watch(chosenVehicle, () => {
imageStatus.value = 'loading';
});
return { return {
store, store,
imageStatus,
chosenVehicle: computed(() => store.chosenVehicle), chosenVehicle: computed(() => store.chosenVehicle),
}; };
}, },
@@ -104,6 +119,11 @@ export default defineComponent({
if (el.src == '/images/placeholder.jpg') return; if (el.src == '/images/placeholder.jpg') return;
el.src = '/images/placeholder.jpg'; el.src = '/images/placeholder.jpg';
this.imageStatus = 'error';
},
onImageLoad(e: Event) {
this.imageStatus = 'loaded';
}, },
onImageClick(e: Event) { onImageClick(e: Event) {
@@ -132,6 +152,7 @@ export default defineComponent({
min-height: 250px; min-height: 250px;
& > div { & > div {
position: relative;
max-width: 100%; max-width: 100%;
width: 380px; width: 380px;
} }
@@ -154,18 +175,25 @@ img {
} }
} }
.placeholder { .image-wrapper {
height: 250px; position: relative;
min-height: 220px;
background-color: $bgColor;
} }
.sponsor-only { .loading-placeholder {
color: $sponsorColor; position: absolute;
} top: 0;
left: 0;
height: 100%;
width: 100%;
.team-only { display: flex;
color: $teamColor; align-items: center;
justify-content: center;
background-color: #2b2b2b;
padding: 1em;
font-size: 1.2em;
} }
.image-info { .image-info {
@@ -181,6 +209,20 @@ img {
font-weight: bold; font-weight: bold;
} }
.placeholder {
height: 250px;
background-color: $bgColor;
}
.sponsor-only {
color: $sponsorColor;
}
.team-only {
color: $teamColor;
}
@media screen and (max-width: $breakpointMd) { @media screen and (max-width: $breakpointMd) {
.train-image-section { .train-image-section {
justify-content: center; justify-content: center;
+2 -14
View File
@@ -27,20 +27,8 @@
}, },
"categoriesRules": { "categoriesRules": {
"EI": [null, "00", "99"], "EI": [null, "00", "99"],
"EC": [null, "001", "049"], "EC": [null, "000", "049"],
"EN": [null, "001", "049"], "EN": [null, "000", "049"],
"MP": [null, "050", "169"],
"RO": [null, "200", "999"],
"RP": [null, "050", "169"],
"PW": ["6", "000", "899"],
"TK": ["3", "000", "899"],
"TM": ["4", "000", "899"],
"LT": ["5", "000", "899"]
},
"categoriesNextVersion": {
"EI": [null, "00", "99"],
"EC": [null, "001", "049"],
"EN": [null, "001", "049"],
"RO": [null, "200", "999"], "RO": [null, "200", "999"],
"RP": [null, "050", "169"], "RP": [null, "050", "169"],
+3 -1
View File
@@ -67,7 +67,9 @@ export default defineComponent({
let vehicle: IVehicle | null = null; let vehicle: IVehicle | null = null;
let vehicleCargo: ICargo | null = null; let vehicleCargo: ICargo | null = null;
const isTractionUnit = /^(EU|EP|ET|SM|EN|2EN|SN)/.test(type); const isTractionUnit = /^([a-zA-Z\d]{0,}-\d{0,})/.test(type);
console.log(type, isTractionUnit);
if (isTractionUnit) { if (isTractionUnit) {
const [locoType, spawnProps] = type.split(','); const [locoType, spawnProps] = type.split(',');
+2
View File
@@ -97,7 +97,9 @@ export const useStore = defineStore({
stockSupportsColdStart: (state) => { stockSupportsColdStart: (state) => {
if (state.stockList.length == 0) return false; if (state.stockList.length == 0) return false;
if (!isTractionUnit(state.stockList[0].vehicleRef)) return false; if (!isTractionUnit(state.stockList[0].vehicleRef)) return false;
else if (state.stockList.length > 1) return false;
const headingLoco = state.stockList[0]; const headingLoco = state.stockList[0];
+1 -1
View File
@@ -34,7 +34,7 @@ export default defineConfig({
maxAgeSeconds: 60 * 60 * 24, // <== 1 day maxAgeSeconds: 60 * 60 * 24, // <== 1 day
}, },
cacheableResponse: { cacheableResponse: {
statuses: [0, 200, 404], statuses: [200],
}, },
}, },
}, },