3 <table v-if="agreements.length" id="agreement_list"></table>
4 <div v-else-if="this.initialized" class="dialog message">
5 There are no agreements defined.
7 <div v-else>Loading...</div>
12 import ButtonEdit from "./ButtonEdit.vue"
13 import ButtonDelete from "./ButtonDelete.vue"
14 import { createVNode, defineComponent, render, resolveComponent } from 'vue'
17 const apiUrl = '/api/v1/erm/agreements'
20 .then(res => res.json())
23 this.agreements = result
24 this.initialized = true
28 this.$emit('set-error', error)
33 let show_agreement = this.show_agreement
34 let edit_agreement = this.edit_agreement
35 let delete_agreement = this.delete_agreement
36 window['vendors'] = this.vendors.map(e => {
41 let vendors_map = this.vendors.reduce((map, e) => {
45 window['av_agreement_statuses'] = this.av_agreement_statuses.map(e => {
46 e['_id'] = e['authorised_value']
50 let av_agreement_statuses_map = this.av_agreement_statuses.reduce((map, e) => {
51 map[e.authorised_value] = e
54 window['av_agreement_closure_reasons'] = this.av_agreement_closure_reasons.map(e => {
55 e['_id'] = e['authorised_value']
59 let av_agreement_closure_reasons_map = this.av_agreement_closure_reasons.reduce((map, e) => {
60 map[e.authorised_value] = e
63 window['av_agreement_renewal_priorities'] = this.av_agreement_renewal_priorities.map(e => {
64 e['_id'] = e['authorised_value']
68 let av_agreement_renewal_priorities_map = this.av_agreement_renewal_priorities.reduce((map, e) => {
69 map[e.authorised_value] = e
72 window['av_agreement_is_perpetual'] = [{ _id: 0, _str: _('No') }, { _id: 1, _str: _("Yes") }]
74 $('#agreement_list').kohaTable({
76 "url": agreements_table_url,
78 "order": [[1, "asc"]],
81 "render": function (data, type, row, meta) {
82 if (type == 'display') {
83 return escape_str(data)
91 "data": ["me.agreement_id", "me.name"],
94 // Rendering done in drawCallback
97 "title": __("Vendor"),
101 "render": function (data, type, row, meta) {
102 return row.vendor_id != undefined ? escape_str(vendors_map[row.vendor_id].name) : ""
106 "title": __("Description"),
107 "data": "description",
112 "title": __("Status"),
116 "render": function (data, type, row, meta) {
117 return escape_str(av_agreement_statuses_map[row.status].lib)
121 "title": __("Closure reason"),
122 "data": "closure_reason",
125 "render": function (data, type, row, meta) {
126 return row.closure_reason != undefined && row.closure_reason != "" ? escape_str(av_agreement_closure_reasons_map[row.closure_reason].lib) : ""
130 "title": __("Is perpetual"),
131 "data": "is_perpetual",
134 "render": function (data, type, row, meta) {
135 return escape_str(row.is_perpetual ? _("Yes") : _("No"))
139 "title": __("Renewal priority"),
140 "data": "renewal_priority",
143 "render": function (data, type, row, meta) {
144 return row.renewal_priority != undefined && row.renewal_priority != "" ? escape_str(av_agreement_renewal_priorities_map[row.renewal_priority].lib) : ""
148 "title": __("Actions"),
149 "data": function (row, type, val, meta) {
150 return '<div class="actions"></div>'
152 "className": "actions noExport",
157 drawCallback: function (settings) {
159 var api = new $.fn.dataTable.Api(settings)
161 $.each($(this).find("td .actions"), function (index, e) {
162 let agreement_id = api.row(index).data().agreement_id
163 let editButton = createVNode(ButtonEdit, {
165 edit_agreement(agreement_id)
168 let deleteButton = createVNode(ButtonDelete, {
170 delete_agreement(agreement_id)
173 let n = createVNode('span', {}, [editButton, " ", deleteButton])
177 $.each($(this).find("tbody tr td:first-child"), function (index, e) {
178 let row = api.row(index).data()
179 if (!row) return // Happen if the table is empty
180 let n = createVNode("a", {
183 show_agreement(row.agreement_id)
186 escape_str(`${row.name} (#${row.agreement_id})`)
191 preDrawCallback: function (settings) {
192 var table_id = settings.nTable.id
193 $("#" + table_id).find("thead th").eq(1).attr('data-filter', 'vendors')
194 $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'av_agreement_statuses')
195 $("#" + table_id).find("thead th").eq(4).attr('data-filter', 'av_agreement_closure_reasons')
196 $("#" + table_id).find("thead th").eq(5).attr('data-filter', 'av_agreement_is_perpetual')
197 $("#" + table_id).find("thead th").eq(6).attr('data-filter', 'av_agreement_renewal_priorities')
200 }, table_settings, 1)
214 show_agreement: function (agreement_id) {
215 this.$emit('set-current-agreement-id', agreement_id)
216 this.$emit('switch-view', 'show')
218 edit_agreement: function (agreement_id) {
219 this.$emit('set-current-agreement-id', agreement_id)
220 this.$emit('switch-view', 'add-form')
222 delete_agreement: function (agreement_id) {
223 this.$emit('set-current-agreement-id', agreement_id)
224 this.$emit('switch-view', 'confirm-delete-form')
229 av_agreement_statuses: Array,
230 av_agreement_closure_reasons: Array,
231 av_agreement_renewal_priorities: Array,
233 name: "AgreementsList",