3 <div v-if="!initialized">{{ $__("Loading") }}</div>
4 <div v-else-if="package_count" id="packages_list">
7 v-if="package_count > 0"
8 id="package_list_result"
11 <table :id="table_id"></table>
13 <div v-else-if="initialized" class="dialog message">
14 {{ $__("There are no packages defined") }}
21 import Toolbar from "./EHoldingsLocalPackagesToolbar.vue"
22 import { inject, createVNode, render } from "vue"
23 import { storeToRefs } from "pinia"
24 import { APIClient } from "../../fetch/api-client.js"
25 import { useDataTable } from "../../composables/datatables"
29 const vendorStore = inject("vendorStore")
30 const { vendors } = storeToRefs(vendorStore)
32 const AVStore = inject("AVStore")
33 const { get_lib_from_av, map_av_dt_filter } = AVStore
35 const { setConfirmationDialog, setMessage } = inject("mainStore")
37 const table_id = "package_list"
38 useDataTable(table_id)
45 setConfirmationDialog,
54 package_name: this.$route.query.package_name || "",
55 content_type: this.$route.query.content_type || "",
59 beforeRouteEnter(to, from, next) {
61 vm.getPackageCount().then(() => vm.build_datatable())
65 async getPackageCount() {
66 const client = APIClient.erm
67 await client.localPackages.count().then(
69 this.package_count = count
70 this.initialized = true
75 show_package: function (package_id) {
77 "/cgi-bin/koha/erm/eholdings/local/packages/" + package_id
80 edit_package: function (package_id) {
82 "/cgi-bin/koha/erm/eholdings/local/packages/edit/" + package_id
85 delete_package: function (package_id, package_name) {
86 this.setConfirmationDialog(
89 "Are you sure you want to remove this package?"
91 message: package_name,
92 accept_label: this.$__("Yes, delete"),
93 cancel_label: this.$__("No, do not delete"),
96 const client = APIClient.erm
97 client.localPackages.delete(package_id).then(
100 this.$__("Local package %s deleted").format(
105 $("#" + this.table_id)
108 "/api/v1/erm/eholdings/local/packages"
117 build_datatable: function () {
118 let show_package = this.show_package
119 let edit_package = this.edit_package
120 let delete_package = this.delete_package
121 let get_lib_from_av = this.get_lib_from_av
122 let map_av_dt_filter = this.map_av_dt_filter
123 let filters = this.filters
124 let table_id = this.table_id
126 window["vendors"] = this.vendors.map(e => {
128 e["_str"] = e["name"]
131 let avs = ["av_package_types", "av_package_content_types"]
132 avs.forEach(function (av_cat) {
133 window[av_cat] = map_av_dt_filter(av_cat)
136 $("#" + table_id).kohaTable(
139 url: "/api/v1/erm/eholdings/local/packages",
141 embed: ["resources+count", "vendor.name"],
145 { search: filters.package_name },
148 { search: filters.content_type },
155 data: "me.package_id:me.name",
158 render: function (data, type, row, meta) {
159 // Rendering done in drawCallback
168 render: function (data, type, row, meta) {
170 ? escape_str(row.vendor.name)
176 data: "package_type",
179 render: function (data, type, row, meta) {
189 title: __("Content type"),
190 data: "content_type",
193 render: function (data, type, row, meta) {
196 "av_package_content_types",
203 title: __("Created on"),
207 render: function (data, type, row, meta) {
208 return $date(row.created_on)
216 render: function (data, type, row, meta) {
221 title: __("Actions"),
222 data: function (row, type, val, meta) {
223 return '<div class="actions"></div>'
225 className: "actions noExport",
230 drawCallback: function (settings) {
231 var api = new $.fn.dataTable.Api(settings)
234 $(this).find("td .actions"),
235 function (index, e) {
236 let tr = $(this).parent().parent()
237 let package_id = api.row(tr).data().package_id
238 let package_name = api.row(tr).data().name
239 let editButton = createVNode(
242 class: "btn btn-default btn-xs",
245 edit_package(package_id)
250 class: "fa fa-pencil",
251 "aria-hidden": "true",
257 let deleteButton = createVNode(
260 class: "btn btn-default btn-xs",
271 class: "fa fa-trash",
272 "aria-hidden": "true",
278 let n = createVNode("span", {}, [
288 $(this).find("tbody tr td:first-child"),
289 function (index, e) {
290 let tr = $(this).parent()
291 let row = api.row(tr).data()
292 if (!row) return // Happen if the table is empty
298 "/cgi-bin/koha/erm/eholdings/local/packages/" +
302 show_package(row.package_id)
305 `${row.name} (#${row.package_id})`
311 preDrawCallback: function (settings) {
315 .attr("data-filter", "vendors")
319 .attr("data-filter", "av_package_types")
323 .attr("data-filter", "av_package_content_types")
326 eholdings_packages_table_settings,
331 components: { Toolbar },
332 name: "EHoldingsLocalPackagesList",