Bug 32030: more fixes
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / vue / components / ERM / AgreementsShow.vue
1 <template>
2     <h2>Agreement #{{ agreement.agreement_id }}</h2>
3     <div>
4         <fieldset class="rows">
5             <ol>
6                 <li>
7                     <label>Agreement name:</label>
8                     <span>
9                         {{ agreement.name }}
10                     </span>
11                 </li>
12                 <li>
13                     <label>Vendor:</label>
14                     <span v-if="agreement.vendor_id">
15                         {{
16                             vendors.find((e) => e.id == agreement.vendor_id)
17                                 .name
18                         }}
19                     </span>
20                 </li>
21                 <li>
22                     <label>Description: </label>
23                     <span>
24                         {{ agreement.description }}
25                     </span>
26                 </li>
27                 <li>
28                     <label>Status: </label>
29                     <span>{{
30                         get_lib_from_av(av_agreement_statuses, agreement.status)
31                     }}</span>
32                 </li>
33                 <li>
34                     <label>Closure reason:</label>
35                     <span>{{
36                         get_lib_from_av(
37                             av_agreement_closure_reasons,
38                             agreement.closure_reason
39                         )
40                     }}</span>
41                 </li>
42                 <li>
43                     <label>Is perpetual:</label>
44                     <span v-if="agreement.is_perpetual">Yes</span>
45                     <span v-else>No</span>
46                 </li>
47                 <li>
48                     <label>Renewal priority:</label>
49                     <span>{{
50                         get_lib_from_av(
51                             av_agreement_renewal_priorities,
52                             agreement.renewal_priority
53                         )
54                     }}</span>
55                 </li>
56                 <li>
57                     <label>License info: </label>
58                     <span>{{ agreement.license_info }}</span>
59                 </li>
60
61                 <li>
62                     <label>Periods</label>
63                     <table>
64                         <thead>
65                             <th>Period start</th>
66                             <th>Period end</th>
67                             <th>Cancellation deadline</th>
68                             <th>Period note</th>
69                         </thead>
70                         <tbody>
71                             <tr
72                                 v-for="(period, counter) in agreement.periods"
73                                 v-bind:key="counter"
74                             >
75                                 <td>{{ format_date(period.started_on) }}</td>
76                                 <td>{{ format_date(period.ended_on) }}</td>
77                                 <td>
78                                     {{
79                                         format_date(
80                                             period.cancellation_deadline
81                                         )
82                                     }}
83                                 </td>
84                                 <td>{{ period.notes }}</td>
85                             </tr>
86                         </tbody>
87                     </table>
88                 </li>
89
90                 <li>
91                     <label>Users</label>
92                     <table>
93                         <thead>
94                             <th>Name</th>
95                             <th>Role</th>
96                         </thead>
97                         <tbody>
98                             <tr
99                                 v-for="(role, counter) in agreement.user_roles"
100                                 v-bind:key="counter"
101                             >
102                                 <td>{{ patron_to_html(role.patron) }}</td>
103                                 <td>
104                                     {{ get_lib_from_av(av_agreement_user_roles, role.role) }}
105                                 </td>
106                             </tr>
107                         </tbody>
108                     </table>
109                 </li>
110
111                 <li>
112                     <label>Licenses</label>
113                     <table>
114                         <thead>
115                             <th>Name</th>
116                             <th>Status</th>
117                             <th>Physical location</th>
118                             <th>Notes</th>
119                             <th>URI</th>
120                         </thead>
121                         <tbody>
122                             <tr
123                                 v-for="(
124                                     agreement_license, counter
125                                 ) in agreement.agreement_licenses"
126                                 v-bind:key="counter"
127                             >
128                                 <td>{{ agreement_license.license.name }}</td>
129                                 <td>
130                                     {{
131                                         get_lib_from_av(
132                                             av_agreement_license_statuses,
133                                             agreement_license.status
134                                         )
135                                     }}
136                                 </td>
137                                 <td>
138                                     {{
139                                         get_lib_from_av(
140                                             av_agreement_license_location,
141                                             agreement_license.physical_location
142                                         )
143                                     }}
144                                 </td>
145                                 <td>{{ agreement_license.notes }}</td>
146                                 <td>{{ agreement_license.uri }}</td>
147                             </tr>
148                         </tbody>
149                     </table>
150                 </li>
151             </ol>
152         </fieldset>
153         <fieldset class="action">
154             <a
155                 role="button"
156                 class="cancel"
157                 @click="$emit('switch-view', 'list')"
158                 >Close</a
159             >
160         </fieldset>
161     </div>
162 </template>
163
164 <script>
165 import AgreementPeriods from './AgreementPeriods.vue'
166 import AgreementUserRoles from './AgreementUserRoles.vue'
167
168 export default {
169     setup() {
170         const format_date = $date
171         const patron_to_html = $patron_to_html
172         const get_lib_from_av = function (arr, av) {
173             let o = arr.find(
174                 (e) => e.authorised_value == av
175             )
176             return o ? o.lib : ""
177         }
178         return {
179             format_date,
180             patron_to_html,
181             get_lib_from_av
182         }
183     },
184     data() {
185         return {
186             agreement: {
187                 agreement_id: null,
188                 name: '',
189                 vendor_id: null,
190                 vendor: null,
191                 description: '',
192                 status: '',
193                 closure_reason: '',
194                 is_perpetual: false,
195                 renewal_priority: '',
196                 license_info: '',
197                 periods: [],
198                 user_roles: [],
199             }
200         }
201     },
202     created() {
203         if (!this.agreement_id) return
204         const apiUrl = '/api/v1/erm/agreements/' + this.agreement_id
205
206         fetch(apiUrl, {
207             headers: {
208                 'x-koha-embed': 'periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license'
209             }
210         })
211             .then(res => res.json())
212             .then(
213                 (result) => {
214                     this.agreement = result
215                 },
216                 (error) => {
217                     this.$emit('set-error', error)
218                 }
219             )
220     },
221     methods: {
222     },
223     emits: ['set-error', 'switch-view'],
224     props: {
225         agreement_id: Number,
226         vendors: Array,
227         av_agreement_statuses: Array,
228         av_agreement_closure_reasons: Array,
229         av_agreement_renewal_priorities: Array,
230         av_agreement_user_roles: Array,
231         av_agreement_license_statuses: Array,
232         av_agreement_license_location: Array,
233     },
234     components: {
235         AgreementPeriods,
236         AgreementUserRoles
237     },
238     name: "AgreementsShow",
239 }
240 </script>