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.q || "",
49 beforeRouteEnter(to, from, next) {
51 vm.getPackages().then(() => vm.build_datatable())
56 const packages = await fetchLocalPackages()
57 this.packages = packages
58 this.initialized = true
60 show_package: function (package_id) {
61 this.$router.push("/cgi-bin/koha/erm/eholdings/local/packages/" + package_id)
63 edit_package: function (package_id) {
64 this.$router.push("/cgi-bin/koha/erm/eholdings/local/packages/edit/" + package_id)
66 delete_package: function (package_id) {
67 this.$router.push("/cgi-bin/koha/erm/eholdings/local/packages/delete/" + package_id)
69 build_datatable: function () {
70 let show_package = this.show_package
71 let edit_package = this.edit_package
72 let delete_package = this.delete_package
73 let get_lib_from_av = this.get_lib_from_av
74 let filters = this.filters
76 window['vendors'] = this.vendors.map(e => {
81 window['av_package_types'] = this.av_package_types.map(e => {
82 e['_id'] = e['authorised_value']
86 window['av_package_content_types'] = this.av_package_content_types.map(e => {
87 e['_id'] = e['authorised_value']
92 $('#package_list').kohaTable({
94 url: "/api/v1/erm/eholdings/local/packages",
96 embed: ['resources+count', 'vendor.name'],
98 search: { search: filters.package_name },
103 data: "me.package_id:me.name",
106 render: function (data, type, row, meta) {
107 // Rendering done in drawCallback
116 render: function (data, type, row, meta) {
117 return row.vendor ? escape_str(row.vendor.name) : ""
122 data: "package_type",
125 render: function (data, type, row, meta) {
126 return escape_str(get_lib_from_av("av_package_types", row.package_type))
129 title: __("Content type"),
130 data: "content_type",
133 render: function (data, type, row, meta) {
134 return escape_str(get_lib_from_av("av_package_content_types", row.content_type))
138 title: __("Created on"),
142 render: function (data, type, row, meta) {
143 return $date(row.created_on)
147 title: __("Actions"),
148 data: function (row, type, val, meta) {
149 return '<div class="actions"></div>'
151 className: "actions noExport",
156 drawCallback: function (settings) {
158 var api = new $.fn.dataTable.Api(settings)
160 $.each($(this).find("td .actions"), function (index, e) {
161 let package_id = api.row(index).data().package_id
162 let editButton = createVNode("a", {
163 class: "btn btn-default btn-xs", role: "button", onClick: () => {
164 edit_package(package_id)
167 [createVNode("i", { class: "fa fa-pencil", 'aria-hidden': "true" }), __("Edit")])
169 let deleteButton = createVNode("a", {
170 class: "btn btn-default btn-xs", role: "button", onClick: () => {
171 delete_package(package_id)
174 [createVNode("i", { class: "fa fa-trash", 'aria-hidden': "true" }), __("Delete")])
176 let n = createVNode('span', {}, [editButton, " ", deleteButton])
180 $.each($(this).find("tbody tr td:first-child"), function (index, e) {
181 let row = api.row(index).data()
182 if (!row) return // Happen if the table is empty
183 let n = createVNode("a", {
185 href: "/cgi-bin/koha/erm/eholdings/local/packages/" + row.package_id,
188 show_package(row.package_id)
191 `${row.name} (#${row.package_id})`
196 preDrawCallback: function (settings) {
197 var table_id = settings.nTable.id
198 $("#" + table_id).find("thead th").eq(1).attr('data-filter', 'vendors')
199 $("#" + table_id).find("thead th").eq(2).attr('data-filter', 'av_package_types')
200 $("#" + table_id).find("thead th").eq(3).attr('data-filter', 'av_package_content_types')
202 }, eholdings_packages_table_settings, 1)
205 components: { Toolbar },
206 name: "EHoldingsLocalPackagesList",