2 <div id="package_list_result">
4 <a href="#" @click.prevent="toggle_filters($event)"
5 ><i class="fa fa-search"></i>
6 {{ display_filters ? $t("Hide filters") : $t("Show filters") }}
8 <fieldset v-if="display_filters" id="filters">
11 <label>{{ $t("Package name") }}:</label>
14 id="package_name_filter"
15 v-model="this.filters.package_name"
16 @keyup.enter="filter_table"
20 <label>{{ $t("Selection status") }}:</label>
22 id="selection_type_filter"
23 v-model="this.filters.selection_type"
25 <option value="0">{{ $t("All") }}</option>
26 <option value="1">{{ $t("Selected") }}</option>
27 <option value="2">{{ $t("Not selected") }}</option>
39 <table id="package_list"></table>
45 import { createVNode, render } from 'vue'
58 display_filters: false,
62 show_resource: function (resource_id) {
63 this.$router.push("/cgi-bin/koha/erm/eholdings/ebsco/resources/" + resource_id)
65 toggle_filters: function (e) {
66 this.display_filters = !this.display_filters
68 filter_table: function () {
69 $("#package_list").DataTable().draw()
71 build_datatable: function () {
72 let show_resource = this.show_resource
73 let resources = this.resources
74 let filters = this.filters
76 $.fn.dataTable.ext.search = $.fn.dataTable.ext.search.filter((search) => search.name != 'apply_filter')
77 $('#package_list').dataTable($.extend(true, {}, dataTablesDefaults, {
79 embed: ['package.name'],
81 dom: '<"top pager"<"table_entries"ilp>>tr<"bottom pager"ip>',
82 aLengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
90 render: function (data, type, row, meta) {
91 // Rendering done in drawCallback
97 drawCallback: function (settings) {
99 var api = new $.fn.dataTable.Api(settings)
101 if (!api.rows({ search: 'applied' }).count()) return
103 $.each($(this).find("tbody tr td:first-child"), function (index, e) {
104 let row = api.row(index).data()
105 if (!row) return // Happen if the table is empty
106 let n = createVNode("a", {
108 href: "/cgi-bin/koha/erm/eholdings/ebsco/resources/" + row.resource_id,
111 show_resource(row.resource_id)
114 `${row.package.name}`
116 if (row.is_selected) {
117 n = createVNode('span', {}, [n, " ", createVNode("i", { class: "fa fa-check-square-o", style: { color: "green" }, title: __("Is selected") })])
122 initComplete: function () {
123 $.fn.dataTable.ext.search.push(
124 function apply_filter(settings, data, dataIndex, row) {
125 return row.package.name.match(new RegExp(filters.package_name, "i"))
126 && (filters.selection_type == 0
127 || filters.selection_type == 1 && row.is_selected
128 || filters.selection_type == 2 && !row.is_selected)
136 this.build_datatable()
146 name: 'EHoldingsEBSCOTitlePackagesList',
151 #package_list_result {