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