Lines 208-512
export default {
Link Here
|
208 |
} |
208 |
} |
209 |
this.$refs.table.redraw(this.table_url()) |
209 |
this.$refs.table.redraw(this.table_url()) |
210 |
}, |
210 |
}, |
211 |
build_datatable: function () { |
|
|
212 |
let show_agreement = this.show_agreement |
213 |
let edit_agreement = this.edit_agreement |
214 |
let delete_agreement = this.delete_agreement |
215 |
let select_agreement = this.select_agreement |
216 |
let get_lib_from_av = this.get_lib_from_av |
217 |
let map_av_dt_filter = this.map_av_dt_filter |
218 |
let datatable_url = this.datatable_url |
219 |
let default_search = this.$route.query.q |
220 |
let actions = this.before_route_entered ? "edit_delete" : "select" |
221 |
let filters = this.filters |
222 |
let table_id = this.table_id |
223 |
let logged_in_user = this.logged_in_user |
224 |
|
225 |
window["vendors"] = this.vendors.map(e => { |
226 |
e["_id"] = e["id"] |
227 |
e["_str"] = e["name"] |
228 |
return e |
229 |
}) |
230 |
let vendors_map = this.vendors.reduce((map, e) => { |
231 |
map[e.id] = e |
232 |
return map |
233 |
}, {}) |
234 |
let avs = [ |
235 |
"av_agreement_statuses", |
236 |
"av_agreement_closure_reasons", |
237 |
"av_agreement_renewal_priorities", |
238 |
] |
239 |
avs.forEach(function (av_cat) { |
240 |
window[av_cat] = map_av_dt_filter(av_cat) |
241 |
}) |
242 |
|
243 |
window["av_agreement_is_perpetual"] = [ |
244 |
{ _id: 0, _str: _("No") }, |
245 |
{ _id: 1, _str: _("Yes") }, |
246 |
] |
247 |
|
248 |
let additional_filters = { |
249 |
"user_roles.user_id": function () { |
250 |
return filters.by_mine ? logged_in_user.borrowernumber : "" |
251 |
}, |
252 |
} |
253 |
const table = $("#" + table_id).kohaTable( |
254 |
{ |
255 |
ajax: { |
256 |
url: datatable_url, |
257 |
}, |
258 |
embed: ["user_roles"], |
259 |
order: [[0, "asc"]], |
260 |
autoWidth: false, |
261 |
search: { search: default_search }, |
262 |
columnDefs: [ |
263 |
{ |
264 |
targets: [0, 2], |
265 |
render: function (data, type, row, meta) { |
266 |
if (type == "display") { |
267 |
return escape_str(data) |
268 |
} |
269 |
return data |
270 |
}, |
271 |
}, |
272 |
], |
273 |
columns: [ |
274 |
{ |
275 |
title: __("Name"), |
276 |
data: "me.agreement_id:me.name", |
277 |
searchable: true, |
278 |
orderable: true, |
279 |
render: function (data, type, row, meta) { |
280 |
// Rendering done in drawCallback |
281 |
return "" |
282 |
}, |
283 |
}, |
284 |
{ |
285 |
title: __("Vendor"), |
286 |
data: "vendor_id", |
287 |
searchable: true, |
288 |
orderable: true, |
289 |
render: function (data, type, row, meta) { |
290 |
return row.vendor_id != undefined |
291 |
? escape_str( |
292 |
vendors_map[row.vendor_id].name |
293 |
) |
294 |
: "" |
295 |
}, |
296 |
}, |
297 |
{ |
298 |
title: __("Description"), |
299 |
data: "description", |
300 |
searchable: true, |
301 |
orderable: true, |
302 |
}, |
303 |
{ |
304 |
title: __("Status"), |
305 |
data: "status", |
306 |
searchable: true, |
307 |
orderable: true, |
308 |
render: function (data, type, row, meta) { |
309 |
return escape_str( |
310 |
get_lib_from_av( |
311 |
"av_agreement_statuses", |
312 |
row.status |
313 |
) |
314 |
) |
315 |
}, |
316 |
}, |
317 |
{ |
318 |
title: __("Closure reason"), |
319 |
data: "closure_reason", |
320 |
searchable: true, |
321 |
orderable: true, |
322 |
render: function (data, type, row, meta) { |
323 |
return escape_str( |
324 |
get_lib_from_av( |
325 |
"av_agreement_closure_reasons", |
326 |
row.closure_reason |
327 |
) |
328 |
) |
329 |
}, |
330 |
}, |
331 |
{ |
332 |
title: __("Is perpetual"), |
333 |
data: "is_perpetual", |
334 |
searchable: true, |
335 |
orderable: true, |
336 |
render: function (data, type, row, meta) { |
337 |
return escape_str( |
338 |
row.is_perpetual ? _("Yes") : _("No") |
339 |
) |
340 |
}, |
341 |
}, |
342 |
{ |
343 |
title: __("Renewal priority"), |
344 |
data: "renewal_priority", |
345 |
searchable: true, |
346 |
orderable: true, |
347 |
render: function (data, type, row, meta) { |
348 |
return escape_str( |
349 |
get_lib_from_av( |
350 |
"av_agreement_renewal_priorities", |
351 |
row.renewal_priority |
352 |
) |
353 |
) |
354 |
}, |
355 |
}, |
356 |
{ |
357 |
title: __("Actions"), |
358 |
data: function (row, type, val, meta) { |
359 |
return '<div class="actions"></div>' |
360 |
}, |
361 |
className: "actions noExport", |
362 |
searchable: false, |
363 |
orderable: false, |
364 |
}, |
365 |
], |
366 |
drawCallback: function (settings) { |
367 |
var api = new $.fn.dataTable.Api(settings) |
368 |
|
369 |
if (actions == "edit_delete") { |
370 |
$.each( |
371 |
$(this).find("td .actions"), |
372 |
function (index, e) { |
373 |
let tr = $(this).parent().parent() |
374 |
let agreement_id = api |
375 |
.row(tr) |
376 |
.data().agreement_id |
377 |
let agreement_name = api.row(tr).data().name |
378 |
let editButton = createVNode( |
379 |
"a", |
380 |
{ |
381 |
class: "btn btn-default btn-xs", |
382 |
role: "button", |
383 |
onClick: () => { |
384 |
edit_agreement(agreement_id) |
385 |
}, |
386 |
}, |
387 |
[ |
388 |
createVNode("i", { |
389 |
class: "fa fa-pencil", |
390 |
"aria-hidden": "true", |
391 |
}), |
392 |
__("Edit"), |
393 |
] |
394 |
) |
395 |
|
396 |
let deleteButton = createVNode( |
397 |
"a", |
398 |
{ |
399 |
class: "btn btn-default btn-xs", |
400 |
role: "button", |
401 |
onClick: () => { |
402 |
delete_agreement( |
403 |
agreement_id, |
404 |
agreement_name |
405 |
) |
406 |
}, |
407 |
}, |
408 |
[ |
409 |
createVNode("i", { |
410 |
class: "fa fa-trash", |
411 |
"aria-hidden": "true", |
412 |
}), |
413 |
__("Delete"), |
414 |
] |
415 |
) |
416 |
|
417 |
let n = createVNode("span", {}, [ |
418 |
editButton, |
419 |
" ", |
420 |
deleteButton, |
421 |
]) |
422 |
render(n, e) |
423 |
} |
424 |
) |
425 |
} else { |
426 |
$.each( |
427 |
$(this).find("td .actions"), |
428 |
function (index, e) { |
429 |
let tr = $(this).parent().parent() |
430 |
let agreement_id = api |
431 |
.row(tr) |
432 |
.data().agreement_id |
433 |
let selectButton = createVNode( |
434 |
"a", |
435 |
{ |
436 |
class: "btn btn-default btn-xs", |
437 |
role: "button", |
438 |
onClick: () => { |
439 |
select_agreement(agreement_id) |
440 |
}, |
441 |
}, |
442 |
[ |
443 |
createVNode("i", { |
444 |
class: "fa fa-check", |
445 |
"aria-hidden": "true", |
446 |
}), |
447 |
__("Select"), |
448 |
] |
449 |
) |
450 |
|
451 |
let n = createVNode("span", {}, [ |
452 |
selectButton, |
453 |
]) |
454 |
render(n, e) |
455 |
} |
456 |
) |
457 |
} |
458 |
|
459 |
$.each( |
460 |
$(this).find("tbody tr td:first-child"), |
461 |
function (index, e) { |
462 |
let tr = $(this).parent() |
463 |
let row = api.row(tr).data() |
464 |
if (!row) return // Happen if the table is empty |
465 |
let n = createVNode( |
466 |
"a", |
467 |
{ |
468 |
role: "button", |
469 |
onClick: () => { |
470 |
show_agreement(row.agreement_id) |
471 |
}, |
472 |
}, |
473 |
`${row.name} (#${row.agreement_id})` |
474 |
) |
475 |
render(n, e) |
476 |
} |
477 |
) |
478 |
}, |
479 |
preDrawCallback: function (settings) { |
480 |
$("#" + table_id) |
481 |
.find("thead th") |
482 |
.eq(1) |
483 |
.attr("data-filter", "vendors") |
484 |
$("#" + table_id) |
485 |
.find("thead th") |
486 |
.eq(3) |
487 |
.attr("data-filter", "av_agreement_statuses") |
488 |
$("#" + table_id) |
489 |
.find("thead th") |
490 |
.eq(4) |
491 |
.attr("data-filter", "av_agreement_closure_reasons") |
492 |
$("#" + table_id) |
493 |
.find("thead th") |
494 |
.eq(5) |
495 |
.attr("data-filter", "av_agreement_is_perpetual") |
496 |
$("#" + table_id) |
497 |
.find("thead th") |
498 |
.eq(6) |
499 |
.attr( |
500 |
"data-filter", |
501 |
"av_agreement_renewal_priorities" |
502 |
) |
503 |
}, |
504 |
}, |
505 |
agreement_table_settings, |
506 |
1, |
507 |
additional_filters |
508 |
) |
509 |
}, |
510 |
getTableColumns: function () { |
211 |
getTableColumns: function () { |
511 |
let get_lib_from_av = this.get_lib_from_av |
212 |
let get_lib_from_av = this.get_lib_from_av |
512 |
let escape_str = this.escape_str |
213 |
let escape_str = this.escape_str |
513 |
- |
|
|