mirror of
https://github.com/Spythere/pojazdownik.git
synced 2026-05-03 11:45:34 +00:00
93 lines
2.8 KiB
TypeScript
93 lines
2.8 KiB
TypeScript
import { defineComponent } from 'vue';
|
|
import { useStore } from '../store';
|
|
import { ICarWagon, ILocomotive, IStock, Vehicle } from '../types';
|
|
|
|
export default defineComponent({
|
|
setup() {
|
|
return {
|
|
store: useStore(),
|
|
};
|
|
},
|
|
|
|
computed: {
|
|
locoOptions() {
|
|
return this.store.locoDataList
|
|
.sort((a, b) => (a.type > b.type ? 1 : -1))
|
|
.filter((loco) => loco.power == this.store.chosenLocoPower);
|
|
},
|
|
|
|
carOptions() {
|
|
return this.store.carDataList
|
|
.sort((a, b) => (a.type > b.type ? 1 : -1))
|
|
.filter((car) => car.useType == this.store.chosenCarUseType);
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
selectLocoType(locoTypeId: string) {
|
|
this.store.chosenLocoPower = locoTypeId;
|
|
this.store.chosenVehicle = this.locoOptions[0];
|
|
this.store.chosenLoco = this.locoOptions[0];
|
|
},
|
|
|
|
selectCarWagonType(carWagonTypeId: string) {
|
|
this.store.chosenCarUseType = carWagonTypeId;
|
|
this.store.chosenVehicle = this.carOptions[0];
|
|
this.store.chosenCar = this.carOptions[0];
|
|
this.store.chosenCargo = null;
|
|
},
|
|
|
|
previewVehicleByType(type: 'loco' | 'car' | 'cargo') {
|
|
this.$nextTick(() => {
|
|
if (!this.store.chosenLoco && !this.store.chosenCar) return;
|
|
|
|
this.store.chosenVehicle = type == 'loco' ? this.store.chosenLoco : this.store.chosenCar;
|
|
|
|
this.store.chosenCargo =
|
|
this.store.chosenCar?.cargoList.find((cargo) => cargo.id == this.store.chosenCargo?.id) || null;
|
|
});
|
|
},
|
|
|
|
previewStock(stock: IStock) {
|
|
if (this.store.chosenVehicle?.imageSrc != stock.imgSrc) this.store.imageLoading = true;
|
|
|
|
if (stock.isLoco) {
|
|
const chosenLoco = this.store.locoDataList.find((v) => v.type == stock.type) || null;
|
|
this.store.chosenVehicle = chosenLoco;
|
|
this.store.chosenLoco = chosenLoco;
|
|
this.store.chosenCargo = null;
|
|
this.store.chosenLocoPower = stock.useType;
|
|
} else {
|
|
const chosenCar = this.store.carDataList.find((v) => v.type == stock.type) || null;
|
|
this.store.chosenVehicle = chosenCar;
|
|
this.store.chosenCar = chosenCar;
|
|
|
|
this.store.chosenCargo = stock.cargo || null;
|
|
this.store.chosenCarUseType = stock.useType;
|
|
}
|
|
},
|
|
|
|
previewLocomotive(loco: ILocomotive) {
|
|
this.store.chosenLoco = loco;
|
|
this.store.chosenVehicle = loco;
|
|
this.store.chosenLocoPower = loco.power;
|
|
},
|
|
|
|
previewCarWagon(carWagon: ICarWagon) {
|
|
this.store.chosenCar = carWagon;
|
|
this.store.chosenCarUseType = carWagon.useType;
|
|
this.store.chosenVehicle = carWagon;
|
|
|
|
this.store.chosenCargo = null;
|
|
},
|
|
|
|
resetPreview() {
|
|
this.store.chosenVehicle = null;
|
|
this.store.chosenCar = null;
|
|
this.store.chosenCargo = null;
|
|
this.store.chosenLoco = null;
|
|
},
|
|
},
|
|
});
|
|
|