2 <div v-if="!initialized">{{ $__("Loading") }}</div>
3 <div v-else id="trains_add">
4 <h2 v-if="train.train_id">
5 {{ $__("Edit train #%s").format(train.train_id) }}
7 <h2 v-else>{{ $__("New train") }}</h2>
9 <form @submit="onSubmit($event)">
10 <fieldset class="rows">
13 <label class="required" for="train_name"
14 >{{ $__("name") }}:</label
19 :placeholder="$__('Name')"
22 <span class="required">{{ $__("Required") }}</span>
25 <label class="required" for="train_description"
26 >{{ $__("Description") }}:
29 id="train_description"
30 v-model="train.description"
31 :placeholder="$__('Description')"
36 <span class="required">{{ $__("Required") }}</span>
39 <label for="not_for_loan_waiting_list_in"
41 $__("Status for item added to this train")
45 :disabled="train.train_id ? true : false"
47 v-model="train.not_for_loan"
49 :reduce="av => av.value"
50 :options="av_notforloan"
56 for="train_default_processing"
57 >{{ $__("Default processing") }}:
60 id="train_default_processing"
62 v-model="train.default_processing_id"
63 :reduce="p => p.processing_id"
64 :options="processings"
65 :required="!train.default_processing_id"
67 <template #search="{ attributes, events }">
69 :required="!train.default_processing_id"
79 <fieldset class="action">
80 <input type="submit" value="Submit" />
82 :to="{ name: 'TrainsList' }"
85 >{{ $__("Cancel") }}</router-link
94 import { inject } from "vue"
95 import { storeToRefs } from "pinia"
96 import { APIClient } from "../../fetch/api-client.js"
100 const AVStore = inject("AVStore")
101 const { av_notforloan } = storeToRefs(AVStore)
103 const { setMessage, setWarning } = inject("mainStore")
105 const PreservationStore = inject("PreservationStore")
106 const { config } = PreservationStore
108 return { av_notforloan, setMessage, setWarning, config }
117 this.config.settings.not_for_loan_default_train_in,
118 default_processing_id: null,
128 beforeRouteEnter(to, from, next) {
130 if (to.params.train_id) {
131 vm.train = vm.getTrain(to.params.train_id)
133 vm.initialized = true
138 const client = APIClient.preservation
139 client.processings.getAll().then(
141 this.processings = processings
147 async getTrain(train_id) {
148 const client = APIClient.preservation
149 client.trains.get(train_id).then(train => {
151 this.initialized = true
157 errors.forEach(function (e) {
160 return !errors.length
165 let train = JSON.parse(JSON.stringify(this.train)) // copy
166 let train_id = train.train_id
167 if (!this.checkForm(train)) {
171 delete train.train_id
172 delete train.default_processing
175 const client = APIClient.preservation
177 client.trains.update(train, train_id).then(
179 this.setMessage(this.$__("Train updated"))
180 this.$router.push({ name: "TrainsList" })
185 client.trains.create(train).then(
187 this.setMessage(this.$__("Train created"))
188 this.$router.push({ name: "TrainsList" })
196 name: "TrainsFormAdd",