diff --git a/src/components/JournalView/JournalTimetables/EntryDetails.vue b/src/components/JournalView/JournalTimetables/EntryDetails.vue
index b363a2c..aed9f53 100644
--- a/src/components/JournalView/JournalTimetables/EntryDetails.vue
+++ b/src/components/JournalView/JournalTimetables/EntryDetails.vue
@@ -23,7 +23,7 @@
+
{{ $t('journal.dispatcher-name') }}
{{ timetable.authorName }}
@@ -254,6 +254,7 @@ export default defineComponent({
}
}
+.timetable-specs,
.stock-specs {
display: flex;
flex-wrap: wrap;
@@ -300,7 +301,7 @@ hr {
}
@include smallScreen() {
- .stock-specs {
+ .timetable-specs {
justify-content: center;
}
diff --git a/src/components/TrainsView/TrainInfo.vue b/src/components/TrainsView/TrainInfo.vue
index 5f51819..6edb308 100644
--- a/src/components/TrainsView/TrainInfo.vue
+++ b/src/components/TrainsView/TrainInfo.vue
@@ -187,17 +187,12 @@ import { defineComponent } from 'vue';
import { useMainStore } from '../../store/mainStore';
import { useApiStore } from '../../store/apiStore';
import { Train } from '../../typings/common';
-import speedLimits from '../../data/speedLimits.json';
import styleMixin from '../../mixins/styleMixin';
import trainInfoMixin from '../../mixins/trainInfoMixin';
import trainCategoryMixin from '../../mixins/trainCategoryMixin';
import ProgressBar from '../Global/ProgressBar.vue';
import StockList from '../Global/StockList.vue';
-
-export type SpeedLimitLocoType = keyof typeof speedLimits;
-
-const isCompatibleLoco = (locoType: string): locoType is SpeedLimitLocoType =>
- locoType in speedLimits;
+import { speedLimits } from '../../data/speedLimits';
export default defineComponent({
mixins: [trainInfoMixin, styleMixin, trainCategoryMixin],
@@ -239,19 +234,22 @@ export default defineComponent({
const headLoco = this.train.stockList[0].slice(0, this.train.stockList[0].indexOf('-'));
- if (!isCompatibleLoco(headLoco)) return vehicleMaxSpeed;
+ if (speedLimits[headLoco] === undefined) return vehicleMaxSpeed;
if (this.train.stockList.length == 1) return speedLimits[headLoco]['none'];
- const speedTable = speedLimits[headLoco][isPassenger ? 'passenger' : 'cargo'];
+ const speedTable: Record =
+ speedLimits[headLoco][isPassenger ? 'passenger' : 'cargo'];
if (!speedTable) return vehicleMaxSpeed;
- let massKey = Object.keys(speedTable).findLast(
+ const massKey = Object.keys(speedTable).findLast(
(massKey) => this.train.mass >= Number(massKey)
);
- return massKey ? ((speedTable as any)[massKey] as number) : vehicleMaxSpeed;
+ const massMaxSpeed = massKey ? speedTable[massKey] : Infinity;
+
+ return Math.min(massMaxSpeed, vehicleMaxSpeed);
},
journalRouteLocation() {
return {
diff --git a/src/data/speedLimits.json b/src/data/speedLimits.json
deleted file mode 100644
index 14af405..0000000
--- a/src/data/speedLimits.json
+++ /dev/null
@@ -1,156 +0,0 @@
-{
- "EU07": {
- "passenger": {
- "650000": 125
- },
- "cargo": {
- "2000000": 70
- },
- "none": 110
- },
- "4E": {
- "passenger": {
- "650000": 125
- },
- "cargo": {
- "2000000": 70
- },
- "none": 110
- },
- "EU07E": {
- "passenger": {
- "650000": 125
- },
- "cargo": {
- "2000000": 70
- },
- "none": 110
- },
- "EP07": {
- "passenger": {
- "650000": 125
- },
- "cargo": null,
- "none": 110
- },
- "EP08": {
- "passenger": {
- "650000": 140
- },
- "cargo": null,
- "none": 110
- },
- "EP09": {
- "passenger": {
- "650000": 160
- },
- "cargo": null,
- "none": 160
- },
- "ET22": {
- "passenger": {
- "650000": 125
- },
- "cargo": {
- "1200000": 100,
- "3100000": 70
- },
- "none": 125
- },
- "201E": {
- "passenger": {
- "650000": 125
- },
- "cargo": {
- "1200000": 100,
- "3100000": 70
- },
- "none": 125
- },
- "ET41": {
- "passenger": {
- "700000": 125
- },
- "cargo": {
- "4000000": 70,
- "3500000": 80,
- "2500000": 90,
- "2000000": 100
- },
- "none": 110
- },
- "SM42": {
- "passenger": {
- "95000": 90,
- "200000": 80,
- "300000": 70,
- "450000": 60,
- "750000": 50,
- "1130000": 40,
- "1720000": 30,
- "2400000": 20
- },
- "cargo": {
- "95000": 90,
- "200000": 80,
- "300000": 70,
- "450000": 60,
- "750000": 50,
- "1130000": 40,
- "1720000": 30,
- "2400000": 20
- },
- "none": 90
- },
- "M62": {
- "passenger": {
- "500000": 100,
- "800000": 80,
- "1200000": 60,
- "2000000": 40,
- "3000000": 20
- },
- "cargo": {
- "500000": 100,
- "800000": 80,
- "1200000": 60,
- "2000000": 40,
- "3000000": 20
- },
- "none": 100
- },
- "ST44": {
- "passenger": {
- "500000": 100,
- "800000": 80,
- "1200000": 60,
- "2000000": 40,
- "3000000": 20
- },
- "cargo": {
- "500000": 100,
- "800000": 80,
- "1200000": 60,
- "2000000": 40,
- "3000000": 20
- },
- "none": 100
- },
- "CTLR4C": {
- "passenger": {
- "500000": 100,
- "800000": 80,
- "1200000": 60,
- "2000000": 40,
- "3000000": 20
- },
- "cargo": {
- "500000": 100,
- "800000": 80,
- "1200000": 60,
- "2000000": 40,
- "3000000": 20
- },
- "none": 100
- }
-}
\ No newline at end of file
diff --git a/src/data/speedLimits.ts b/src/data/speedLimits.ts
new file mode 100644
index 0000000..2546c4b
--- /dev/null
+++ b/src/data/speedLimits.ts
@@ -0,0 +1,158 @@
+export const speedLimits: Record = {
+ EU07: {
+ passenger: {
+ '650000': 125
+ },
+ cargo: {
+ '2000000': 70
+ },
+ none: 110
+ },
+ '4E': {
+ passenger: {
+ '650000': 125
+ },
+ cargo: {
+ '2000000': 70
+ },
+ none: 110
+ },
+ EU07E: {
+ passenger: {
+ '650000': 125
+ },
+ cargo: {
+ '2000000': 70
+ },
+ none: 110
+ },
+ EP07: {
+ passenger: {
+ '650000': 125
+ },
+ cargo: null,
+ none: 110
+ },
+ EP08: {
+ passenger: {
+ '650000': 140
+ },
+ cargo: null,
+ none: 110
+ },
+ EP09: {
+ passenger: {
+ '650000': 160
+ },
+ cargo: null,
+ none: 160
+ },
+ ET22: {
+ passenger: {
+ '650000': 125
+ },
+ cargo: {
+ '1200000': 100,
+ '1800000': 90,
+ '2500000': 80,
+ '3100000': 70
+ },
+ none: 100
+ },
+ '201E': {
+ passenger: {
+ '650000': 125
+ },
+ cargo: {
+ '1200000': 100,
+ '3100000': 70
+ },
+ none: 125
+ },
+ ET41: {
+ passenger: {
+ '700000': 125
+ },
+ cargo: {
+ '4000000': 70,
+ '3500000': 80,
+ '2500000': 90,
+ '2000000': 100
+ },
+ none: 110
+ },
+ SM42: {
+ passenger: {
+ '95000': 90,
+ '200000': 80,
+ '300000': 70,
+ '450000': 60,
+ '750000': 50,
+ '1130000': 40,
+ '1720000': 30,
+ '2400000': 20
+ },
+ cargo: {
+ '95000': 90,
+ '200000': 80,
+ '300000': 70,
+ '450000': 60,
+ '750000': 50,
+ '1130000': 40,
+ '1720000': 30,
+ '2400000': 20
+ },
+ none: 90
+ },
+ M62: {
+ passenger: {
+ '500000': 100,
+ '800000': 80,
+ '1200000': 60,
+ '2000000': 40,
+ '3000000': 20
+ },
+ cargo: {
+ '500000': 100,
+ '800000': 80,
+ '1200000': 60,
+ '2000000': 40,
+ '3000000': 20
+ },
+ none: 100
+ },
+ ST44: {
+ passenger: {
+ '500000': 100,
+ '800000': 80,
+ '1200000': 60,
+ '2000000': 40,
+ '3000000': 20
+ },
+ cargo: {
+ '500000': 100,
+ '800000': 80,
+ '1200000': 60,
+ '2000000': 40,
+ '3000000': 20
+ },
+ none: 100
+ },
+ CTLR4C: {
+ passenger: {
+ '500000': 100,
+ '800000': 80,
+ '1200000': 60,
+ '2000000': 40,
+ '3000000': 20
+ },
+ cargo: {
+ '500000': 100,
+ '800000': 80,
+ '1200000': 60,
+ '2000000': 40,
+ '3000000': 20
+ },
+ none: 100
+ }
+};