3 <div v-if="!initialized">{{ $__("Loading") }}</div>
4 <div v-else-if="packages" id="packages_list">
6 <div v-if="packages.length" id="package_list_result">
7 <table :id="table_id"></table>
9 <div v-else-if="initialized" class="dialog message">
10 {{ $__("There are no packages defined") }}
17 import Toolbar from "./EHoldingsLocalPackagesToolbar.vue"
18 import { inject, createVNode, render } from "vue"
19 import { storeToRefs } from "pinia"
20 import { fetchLocalPackages } from "../../fetch"
21 import { useDataTable } from "../../composables/datatables"
25 const vendorStore = inject("vendorStore")
26 const { vendors } = storeToRefs(vendorStore)
28 const AVStore = inject("AVStore")
29 const { get_lib_from_av, map_av_dt_filter } = AVStore
31 const table_id = "package_list"
32 useDataTable(table_id)
46 package_name: this.$route.query.package_name || "",
47 content_type: this.$route.query.content_type || "",
51 beforeRouteEnter(to, from, next) {
53 vm.getPackages().then(() => vm.build_datatable())
58 const packages = await fetchLocalPackages()
59 this.packages = packages
60 this.initialized = true
62 show_package: function (package_id) {
64 "/cgi-bin/koha/erm/eholdings/local/packages/" + package_id
67 edit_package: function (package_id) {
69 "/cgi-bin/koha/erm/eholdings/local/packages/edit/" + package_id
72 delete_package: function (package_id) {
74 "/cgi-bin/koha/erm/eholdings/local/packages/delete/" +
78 build_datatable: function () {
79 let show_package = this.show_package
80 let edit_package = this.edit_package
81 let delete_package = this.delete_package
82 let get_lib_from_av = this.get_lib_from_av
83 let map_av_dt_filter = this.map_av_dt_filter
84 let filters = this.filters
85 let table_id = this.table_id
87 window["vendors"] = this.vendors.map(e => {
92 let avs = ["av_package_types", "av_package_content_types"]
93 avs.forEach(function (av_cat) {
94 window[av_cat] = map_av_dt_filter(av_cat)
97 $("#" + table_id).kohaTable(
100 url: "/api/v1/erm/eholdings/local/packages",
102 embed: ["resources+count", "vendor.name"],
106 { search: filters.package_name },
109 { search: filters.content_type },
116 data: "me.package_id:me.name",
119 render: function (data, type, row, meta) {
120 // Rendering done in drawCallback
129 render: function (data, type, row, meta) {
131 ? escape_str(row.vendor.name)
137 data: "package_type",
140 render: function (data, type, row, meta) {
150 title: __("Content type"),
151 data: "content_type",
154 render: function (data, type, row, meta) {
157 "av_package_content_types",
164 title: __("Created on"),
168 render: function (data, type, row, meta) {
169 return $date(row.created_on)
177 render: function (data, type, row, meta) {
182 title: __("Actions"),
183 data: function (row, type, val, meta) {
184 return '<div class="actions"></div>'
186 className: "actions noExport",
191 drawCallback: function (settings) {
192 var api = new $.fn.dataTable.Api(settings)
195 $(this).find("td .actions"),
196 function (index, e) {
197 let tr = $(this).parent().parent()
198 let package_id = api.row(tr).data().package_id
199 let editButton = createVNode(
202 class: "btn btn-default btn-xs",
205 edit_package(package_id)
210 class: "fa fa-pencil",
211 "aria-hidden": "true",
217 let deleteButton = createVNode(
220 class: "btn btn-default btn-xs",
223 delete_package(package_id)
228 class: "fa fa-trash",
229 "aria-hidden": "true",
235 let n = createVNode("span", {}, [
245 $(this).find("tbody tr td:first-child"),
246 function (index, e) {
247 let tr = $(this).parent()
248 let row = api.row(tr).data()
249 if (!row) return // Happen if the table is empty
255 "/cgi-bin/koha/erm/eholdings/local/packages/" +
259 show_package(row.package_id)
262 `${row.name} (#${row.package_id})`
268 preDrawCallback: function (settings) {
272 .attr("data-filter", "vendors")
276 .attr("data-filter", "av_package_types")
280 .attr("data-filter", "av_package_content_types")
283 eholdings_packages_table_settings,
288 components: { Toolbar },
289 name: "EHoldingsLocalPackagesList",