3 <div v-if="!this.initialized">{{ $t("Loading") }}</div>
4 <div v-else-if="this.packages" id="packages_list">
6 <div v-if="this.packages.length" id="package_list_result">
7 <table id="package_list"></table>
9 <div v-else-if="this.initialized" class="dialog message">
10 {{ $t("There are no packages defined") }}
17 import Toolbar from "./EHoldingsLocalPackagesToolbar.vue"
18 import { createVNode, render } from 'vue'
19 import { useVendorStore } from "../../stores/vendors"
20 import { useAVStore } from "../../stores/authorised_values"
21 import { storeToRefs } from "pinia"
22 import { fetchLocalPackages } from "../../fetch"
26 const vendorStore = useVendorStore() // FIXME We only need that for 'manual'
27 const { vendors } = storeToRefs(vendorStore)
29 const AVStore = useAVStore()
30 const { av_package_types, av_package_content_types } = storeToRefs(AVStore)
31 const { get_lib_from_av } = AVStore
36 av_package_content_types,
45 package_name: this.$route.query.package_name || "",
46 content_type: this.$route.query.content_type || "",
50 beforeRouteEnter(to, from, next) {
52 vm.getPackages().then(() => vm.build_datatable())
57 const packages = await fetchLocalPackages()
58 this.packages = packages
59 this.initialized = true
61 show_package: function (package_id) {
62 this.$router.push("/cgi-bin/koha/erm/eholdings/local/packages/" + package_id)
64 edit_package: function (package_id) {
65 this.$router.push("/cgi-bin/koha/erm/eholdings/local/packages/edit/" + package_id)
67 delete_package: function (package_id) {
68 this.$router.push("/cgi-bin/koha/erm/eholdings/local/packages/delete/" + package_id)
70 build_datatable: function () {
71 let show_package = this.show_package
72 let edit_package = this.edit_package
73 let delete_package = this.delete_package
74 let get_lib_from_av = this.get_lib_from_av
75 let filters = this.filters
77 window['vendors'] = this.vendors.map(e => {
82 window['av_package_types'] = this.av_package_types.map(e => {
83 e['_id'] = e['authorised_value']
87 window['av_package_content_types'] = this.av_package_content_types.map(e => {
88 e['_id'] = e['authorised_value']
93 $('#package_list').kohaTable({
95 url: "/api/v1/erm/eholdings/local/packages",
97 embed: ['resources+count', 'vendor.name'],
101 { search: filters.package_name },
104 { search: filters.content_type },
111 data: "me.package_id:me.name",
114 render: function (data, type, row, meta) {
115 // Rendering done in drawCallback
124 render: function (data, type, row, meta) {
125 return row.vendor ? escape_str(row.vendor.name) : ""
130 data: "package_type",
133 render: function (data, type, row, meta) {
134 return escape_str(get_lib_from_av("av_package_types", row.package_type))
137 title: __("Content type"),
138 data: "content_type",
141 render: function (data, type, row, meta) {
142 return escape_str(get_lib_from_av("av_package_content_types", row.content_type))
146 title: __("Created on"),
150 render: function (data, type, row, meta) {
151 return $date(row.created_on)
155 title: __("Actions"),
156 data: function (row, type, val, meta) {
157 return '<div class="actions"></div>'
159 className: "actions noExport",
164 drawCallback: function (settings) {
166 var api = new $.fn.dataTable.Api(settings)
168 $.each($(this).find("td .actions"), function (index, e) {
169 let package_id = api.row(index).data().package_id
170 let editButton = createVNode("a", {
171 class: "btn btn-default btn-xs", role: "button", onClick: () => {
172 edit_package(package_id)
175 [createVNode("i", { class: "fa fa-pencil", 'aria-hidden': "true" }), __("Edit")])
177 let deleteButton = createVNode("a", {
178 class: "btn btn-default btn-xs", role: "button", onClick: () => {
179 delete_package(package_id)
182 [createVNode("i", { class: "fa fa-trash", 'aria-hidden': "true" }), __("Delete")])
184 let n = createVNode('span', {}, [editButton, " ", deleteButton])
188 $.each($(this).find("tbody tr td:first-child"), function (index, e) {
189 let row = api.row(index).data()
190 if (!row) return // Happen if the table is empty
191 let n = createVNode("a", {
193 href: "/cgi-bin/koha/erm/eholdings/local/packages/" + row.package_id,
196 show_package(row.package_id)
199 `${row.name} (#${row.package_id})`
204 preDrawCallback: function (settings) {
205 var table_id = settings.nTable.id
206 $("#" + table_id).find("thead th").eq(1).attr('data-filter', 'vendors')
207 $("#" + table_id).find("thead th").eq(2).attr('data-filter', 'av_package_types')
208 $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'av_package_content_types')
210 }, eholdings_packages_table_settings, 1)
212 if (filters.package_name) {
213 //$("#package_list").DataTable().column(0).search(filters.package_name).draw()
215 //myTable.column(0).search(control_id).column(1).search(sample_id).draw();
218 components: { Toolbar },
219 name: "EHoldingsLocalPackagesList",