Bug 32030: Proxy with HoldingsIQ
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / vue / components / ERM / AgreementsShow.vue
1 <template>
2     <div v-if="!this.initialized">{{ $t("Loading") }}</div>
3     <div v-else id="agreements_show">
4         <h2>
5             {{ $t("Agreement .id", { id: agreement.agreement_id }) }}
6             <span class="action_links">
7                 <router-link
8                     :to="`/cgi-bin/koha/erm/agreements/edit/${agreement.agreement_id}`"
9                     :title="$t('Edit')"
10                     ><i class="fa fa-pencil"></i
11                 ></router-link>
12
13                 <router-link
14                     :to="`/cgi-bin/koha/erm/agreements/delete/${agreement.agreement_id}`"
15                     :title="$t('Delete')"
16                     ><i class="fa fa-trash"></i
17                 ></router-link>
18             </span>
19         </h2>
20         <div>
21             <fieldset class="rows">
22                 <ol>
23                     <li>
24                         <label>{{ $t("Agreement name") }}:</label>
25                         <span>
26                             {{ agreement.name }}
27                         </span>
28                     </li>
29                     <li>
30                         <label>{{ $t("Vendor") }}:</label>
31                         <span v-if="agreement.vendor_id">
32                             {{
33                                 vendors.find((e) => e.id == agreement.vendor_id)
34                                     .name
35                             }}
36                         </span>
37                     </li>
38                     <li>
39                         <label>{{ $t("Description") }}:</label>
40                         <span>
41                             {{ agreement.description }}
42                         </span>
43                     </li>
44                     <li>
45                         <label>{{ $t("Status") }}:</label>
46                         <span>{{
47                             get_lib_from_av(
48                                 "av_agreement_statuses",
49                                 agreement.status
50                             )
51                         }}</span>
52                     </li>
53                     <li>
54                         <label>{{ $t("Closure reason") }}:</label>
55                         <span>{{
56                             get_lib_from_av(
57                                 "av_agreement_closure_reasons",
58                                 agreement.closure_reason
59                             )
60                         }}</span>
61                     </li>
62                     <li>
63                         <label>{{ $t("Is perpetual") }}:</label>
64                         <span v-if="agreement.is_perpetual">Yes</span>
65                         <span v-else>No</span>
66                     </li>
67                     <li>
68                         <label>{{ $t("Renewal priority") }}:</label>
69                         <span>{{
70                             get_lib_from_av(
71                                 "av_agreement_renewal_priorities",
72                                 agreement.renewal_priority
73                             )
74                         }}</span>
75                     </li>
76                     <li>
77                         <label>{{ $t("License info") }}:</label>
78                         <span>{{ agreement.license_info }}</span>
79                     </li>
80
81                     <li>
82                         <label>{{ $t("Periods") }}</label>
83                         <table>
84                             <thead>
85                                 <th>{{ $t("Period start") }}</th>
86                                 <th>{{ $t("Period end") }}</th>
87                                 <th>{{ $t("Cancellation deadline") }}</th>
88                                 <th>{{ $t("Period note") }}</th>
89                             </thead>
90                             <tbody>
91                                 <tr
92                                     v-for="(
93                                         period, counter
94                                     ) in agreement.periods"
95                                     v-bind:key="counter"
96                                 >
97                                     <td>
98                                         {{ format_date(period.started_on) }}
99                                     </td>
100                                     <td>{{ format_date(period.ended_on) }}</td>
101                                     <td>
102                                         {{
103                                             format_date(
104                                                 period.cancellation_deadline
105                                             )
106                                         }}
107                                     </td>
108                                     <td>{{ period.notes }}</td>
109                                 </tr>
110                             </tbody>
111                         </table>
112                     </li>
113
114                     <li>
115                         <label>{{ $t("Users") }}</label>
116                         <table>
117                             <thead>
118                                 <th>{{ $t("Name") }}</th>
119                                 <th>{{ $t("Role") }}</th>
120                             </thead>
121                             <tbody>
122                                 <tr
123                                     v-for="(
124                                         role, counter
125                                     ) in agreement.user_roles"
126                                     v-bind:key="counter"
127                                 >
128                                     <td>{{ patron_to_html(role.patron) }}</td>
129                                     <td>
130                                         {{
131                                             get_lib_from_av(
132                                                 "av_agreement_user_roles",
133                                                 role.role
134                                             )
135                                         }}
136                                     </td>
137                                 </tr>
138                             </tbody>
139                         </table>
140                     </li>
141
142                     <li>
143                         <label>{{ $t("Licenses") }}</label>
144                         <table>
145                             <thead>
146                                 <th>{{ $t("Name") }}</th>
147                                 <th>{{ $t("Status") }}</th>
148                                 <th>{{ $t("Physical location") }}</th>
149                                 <th>{{ $t("Notes") }}</th>
150                                 <th>{{ $t("URI") }}</th>
151                             </thead>
152                             <tbody>
153                                 <tr
154                                     v-for="(
155                                         agreement_license, counter
156                                     ) in agreement.agreement_licenses"
157                                     v-bind:key="counter"
158                                 >
159                                     <td>
160                                         <router-link
161                                             :to="`/cgi-bin/koha/erm/licenses/${agreement_license.license_id}`"
162                                         >
163                                             {{ agreement_license.license.name }}
164                                         </router-link>
165                                     </td>
166                                     <td>
167                                         {{
168                                             get_lib_from_av(
169                                                 "av_agreement_license_statuses",
170                                                 agreement_license.status
171                                             )
172                                         }}
173                                     </td>
174                                     <td>
175                                         {{
176                                             get_lib_from_av(
177                                                 "av_agreement_license_location",
178                                                 agreement_license.physical_location
179                                             )
180                                         }}
181                                     </td>
182                                     <td>{{ agreement_license.notes }}</td>
183                                     <td>{{ agreement_license.uri }}</td>
184                                 </tr>
185                             </tbody>
186                         </table>
187                     </li>
188
189                     <li>
190                         <label>{{ $t("Related agreements") }}</label>
191                         <div
192                             v-for="relationship in agreement.agreement_relationships"
193                             v-bind:key="relationship.related_agreement_id"
194                         >
195                             <span
196                                 ><router-link
197                                     :to="`/cgi-bin/koha/erm/agreements/${relationship.related_agreement.agreement_id}`"
198                                     >{{
199                                         relationship.related_agreement.name
200                                     }}</router-link
201                                 ></span
202                             >
203                             {{
204                                 get_lib_from_av(
205                                     "av_agreement_relationships",
206                                     relationship.relationship
207                                 )
208                             }}
209                             {{ agreement.name }}
210                         </div>
211                     </li>
212                 </ol>
213             </fieldset>
214             <fieldset class="action">
215                 <router-link
216                     to="/cgi-bin/koha/erm/agreements"
217                     role="button"
218                     class="cancel"
219                     >{{ $t("Close") }}</router-link
220                 >
221             </fieldset>
222         </div>
223     </div>
224 </template>
225
226 <script>
227 import { useVendorStore } from "../../stores/vendors"
228 import { useAVStore } from "../../stores/authorised_values"
229 import { fetchAgreement } from "../../fetch"
230 import { storeToRefs } from "pinia"
231
232 export default {
233     setup() {
234         const format_date = $date
235         const patron_to_html = $patron_to_html
236
237         const vendorStore = useVendorStore()
238         const { vendors } = storeToRefs(vendorStore)
239
240         const AVStore = useAVStore()
241         const { get_lib_from_av } = AVStore
242
243         return {
244             format_date,
245             patron_to_html,
246             get_lib_from_av,
247             vendors,
248         }
249     },
250     data() {
251         return {
252             agreement: {
253                 agreement_id: null,
254                 name: '',
255                 vendor_id: null,
256                 vendor: null,
257                 description: '',
258                 status: '',
259                 closure_reason: '',
260                 is_perpetual: false,
261                 renewal_priority: '',
262                 license_info: '',
263                 periods: [],
264                 user_roles: [],
265             },
266             initialized: false,
267         }
268     },
269     beforeRouteEnter(to, from, next) {
270         next(vm => {
271             vm.getAgreement(to.params.agreement_id)
272         })
273     },
274     beforeRouteUpdate(to, from) {
275         this.agreement = this.getAgreement(to.params.agreement_id)
276     },
277     methods: {
278         async getAgreement(agreement_id) {
279             const agreement = await fetchAgreement(agreement_id)
280             this.agreement = agreement
281             this.initialized = true
282         },
283     },
284     name: "AgreementsShow",
285 }
286 </script>
287 <style scoped>
288 .action_links a {
289     padding-left: 0.2em;
290     font-size: 11px;
291 }
292 </style>