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="table_id"></table>
45 import { createVNode, render } from 'vue'
46 import { useDataTable } from "../../composables/datatables"
50 const table_id = "package_list"
51 useDataTable(table_id)
63 display_filters: false,
67 show_resource: function (resource_id) {
68 this.$router.push("/cgi-bin/koha/erm/eholdings/ebsco/resources/" + resource_id)
70 toggle_filters: function (e) {
71 this.display_filters = !this.display_filters
73 filter_table: function () {
74 $('#' + this.table_id).DataTable().draw()
76 build_datatable: function () {
77 let show_resource = this.show_resource
78 let resources = this.resources
79 let filters = this.filters
80 let table_id = this.table_id
82 $.fn.dataTable.ext.search = $.fn.dataTable.ext.search.filter((search) => search.name != 'apply_filter')
83 $('#' + table_id).dataTable($.extend(true, {}, dataTablesDefaults, {
85 embed: ['package.name'],
87 dom: '<"top pager"<"table_entries"ilp>>tr<"bottom pager"ip>',
88 aLengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
96 render: function (data, type, row, meta) {
97 // Rendering done in drawCallback
103 drawCallback: function (settings) {
105 var api = new $.fn.dataTable.Api(settings)
107 if (!api.rows({ search: 'applied' }).count()) return
109 $.each($(this).find("tbody tr td:first-child"), function (index, e) {
110 let row = api.row(index).data()
111 if (!row) return // Happen if the table is empty
112 let n = createVNode("a", {
114 href: "/cgi-bin/koha/erm/eholdings/ebsco/resources/" + row.resource_id,
117 show_resource(row.resource_id)
120 `${row.package.name}`
122 if (row.is_selected) {
123 n = createVNode('span', {}, [n, " ", createVNode("i", { class: "fa fa-check-square-o", style: { color: "green" }, title: __("Is selected") })])
128 initComplete: function () {
129 $.fn.dataTable.ext.search.push(
130 function apply_filter(settings, data, dataIndex, row) {
131 return row.package.name.match(new RegExp(filters.package_name, "i"))
132 && (filters.selection_type == 0
133 || filters.selection_type == 1 && row.is_selected
134 || filters.selection_type == 2 && !row.is_selected)
142 this.build_datatable()
147 name: 'EHoldingsEBSCOTitlePackagesList',
152 #package_list_result {