2 <div v-if="!initialized">{{ $__("Loading") }}</div>
3 <div v-else id="packages_add">
4 <h2 v-if="erm_package.package_id">
5 {{ $__("Edit package #%s").format(erm_package.package_id) }}
7 <h2 v-else>{{ $__("New package") }}</h2>
9 <form @submit="onSubmit($event)">
10 <fieldset class="rows">
13 <label class="required" for="package_name"
14 >{{ $__("Package name") }}:</label
18 v-model="erm_package.name"
19 :placeholder="$__('Package name')"
22 <span class="required">{{ $__("Required") }}</span>
25 <label for="package_vendor_id"
26 >{{ $__("Vendor") }}:</label
29 id="package_vendor_id"
30 v-model="erm_package.vendor_id"
32 :reduce="vendor => vendor.id"
37 <label for="package_type">{{ $__("Type") }}:</label>
40 v-model="erm_package.package_type"
42 :reduce="av => av.authorised_value"
43 :options="av_package_types"
47 <label for="package_content_type">{{
51 id="package_content_type"
52 v-model="erm_package.content_type"
54 :reduce="av => av.authorised_value"
55 :options="av_package_content_types"
59 <label for="package_notes"
60 >{{ $__("Notes") }}:</label
64 v-model="erm_package.notes"
68 <EHoldingsPackageAgreements
69 :package_agreements="erm_package.package_agreements"
73 <fieldset class="action">
74 <input type="submit" value="Submit" />
76 to="/cgi-bin/koha/erm/eholdings/local/packages"
79 >{{ $__("Cancel") }}</router-link
88 import { inject } from "vue"
89 import EHoldingsPackageAgreements from "./EHoldingsLocalPackageAgreements.vue"
90 import { setMessage, setError, setWarning } from "../../messages"
91 import { fetchLocalPackage, createPackage, editPackage } from "../../fetch"
92 import { storeToRefs } from "pinia"
96 const vendorStore = inject("vendorStore")
97 const { vendors } = storeToRefs(vendorStore)
98 const AVStore = inject("AVStore")
99 const { av_package_types, av_package_content_types } =
105 av_package_content_types,
120 package_agreements: [],
125 beforeRouteEnter(to, from, next) {
127 if (to.params.package_id) {
128 vm.erm_package = vm.getPackage(to.params.package_id)
130 vm.initialized = true
135 async getPackage(package_id) {
136 const erm_package = await fetchLocalPackage(package_id)
137 this.erm_package = erm_package
138 this.initialized = true
140 checkForm(erm_package) {
142 let package_agreements = erm_package.package_agreements
143 const agreement_ids = package_agreements.map(pa => pa.agreement_id)
144 const duplicate_agreement_ids = agreement_ids.filter(
145 (id, i) => agreement_ids.indexOf(id) !== i
148 if (duplicate_agreement_ids.length) {
149 errors.push(this.$__("An agreement is used several times"))
152 errors.forEach(function (e) {
155 return !errors.length
160 let erm_package = JSON.parse(JSON.stringify(this.erm_package)) // copy
162 if (!this.checkForm(erm_package)) {
166 if (erm_package.package_id) {
167 editPackage(erm_package).then(response => {
168 if (response.status == 200) {
170 "/cgi-bin/koha/erm/eholdings/local/packages"
172 setMessage(this.$__("Package updated"))
174 setError(response.message || response.statusText)
178 createPackage(erm_package).then(response => {
179 if (response.status == 201) {
181 "/cgi-bin/koha/erm/eholdings/local/packages"
183 setMessage(this.$__("Package created"))
185 setError(response.message || response.statusText)
192 EHoldingsPackageAgreements,
194 name: "EHoldingsEBSCOPackagesFormAdd",