4 {{ $__("Package name") }}:
7 id="package_name_filter"
8 v-model="filters.package_name"
9 @keyup.enter="filter_table"
11 {{ $__("Content type") }}:
12 <select id="content_type_filter" v-model="filters.content_type">
13 <option value="">{{ $__("All") }}</option>
15 v-for="type in av_package_content_types"
16 :key="type.authorised_values"
17 :value="type.authorised_value"
22 {{ $__("Selection status") }}:
23 <select id="selection_type_filter" v-model="filters.selection_type">
24 <option value="0">{{ $__("All") }}</option>
25 <option value="1">{{ $__("Selected") }}</option>
26 <option value="2">{{ $__("Not selected") }}</option>
32 :value="$__('Submit')"
36 <!-- We need to display the table element to initiate DataTable -->
38 id="package_list_result"
39 :style="show_table ? 'display: block' : 'display: none'"
43 local_count_packages !== undefined &&
44 local_count_packages !== null
47 <router-link :to="local_packages_url">
49 $__("%s packages found locally").format(
55 <div id="package_list_result">
56 <table :id="table_id"></table>
63 import { inject, createVNode, render } from "vue"
64 import { storeToRefs } from "pinia"
65 import { fetchCountLocalPackages } from "./../../fetch"
70 } from "../../composables/datatables"
74 const vendorStore = inject("vendorStore")
75 const { vendors } = storeToRefs(vendorStore)
77 const AVStore = inject("AVStore")
78 const { av_package_types, av_package_content_types } =
80 const { get_lib_from_av, map_av_dt_filter } = AVStore
82 const table_id = "package_list"
83 useDataTable(table_id)
88 av_package_content_types,
100 package_name: this.$route.query.package_name || "",
101 content_type: this.$route.query.content_type || "",
102 selection_type: this.$route.query.selection_type || "",
105 local_count_packages: null,
109 local_packages_url() {
111 "/cgi-bin/koha/erm/eholdings/local/packages",
116 beforeRouteEnter(to, from, next) {
122 show_package: function (package_id) {
124 "/cgi-bin/koha/erm/eholdings/ebsco/packages/" + package_id
127 filter_table: async function () {
128 let new_route = build_url(
129 "/cgi-bin/koha/erm/eholdings/ebsco/packages",
132 this.$router.push(new_route)
133 this.show_table = true
134 this.local_count_packages = null
135 $("#" + this.table_id)
138 if (this.erm_providers.includes("local")) {
139 this.local_count_packages = await fetchCountLocalPackages(
144 build_datatable: function () {
145 let show_package = this.show_package
146 let get_lib_from_av = this.get_lib_from_av
147 let map_av_dt_filter = this.map_av_dt_filter
149 if (!this.show_table) {
150 this.show_table = build_url_params(this.filters).length
154 let filters = this.filters
155 let show_table = this.show_table
156 let table_id = this.table_id
158 window["vendors"] = this.vendors.map(e => {
160 e["_str"] = e["name"]
163 let avs = ["av_package_types", "av_package_content_types"]
164 avs.forEach(function (av_cat) {
165 window[av_cat] = map_av_dt_filter(av_cat)
168 let additional_filters = {
170 return filters.package_name || ""
172 content_type: function () {
173 return filters.content_type || ""
175 selection_type: function () {
176 return filters.selection_type || ""
180 $("#" + table_id).kohaTable(
183 url: "/api/v1/erm/eholdings/ebsco/packages",
185 embed: ["resources+count", "vendor.name"],
187 dom: '<"top pager"<"table_entries"ilp>>tr<"bottom pager"ip>',
192 deferLoading: show_table ? false : true,
197 data: "me.package_id:me.name",
200 render: function (data, type, row, meta) {
201 // Rendering done in drawCallback
210 render: function (data, type, row, meta) {
212 ? escape_str(row.vendor.name)
218 data: "package_type",
221 render: function (data, type, row, meta) {
231 title: __("Content type"),
234 render: function (data, type, row, meta) {
237 "av_package_content_types",
244 drawCallback: function (settings) {
245 var api = new $.fn.dataTable.Api(settings)
248 $(this).find("tbody tr td:first-child"),
249 function (index, e) {
250 let tr = $(this).parent()
251 let row = api.row(tr).data()
252 if (!row) return // Happen if the table is empty
258 "/cgi-bin/koha/erm/eholdings/ebsco/packages/" +
262 show_package(row.package_id)
265 `${row.name} (#${row.package_id})`
267 if (row.is_selected) {
268 n = createVNode("span", {}, [
272 class: "fa fa-check-square-o",
277 title: __("Is selected"),
291 if (filters.package_name.length) {
296 name: "EHoldingsEBSCOPackagesList",