3 <div v-if="!initialized">{{ $__("Loading") }}</div>
4 <div v-else-if="title_count" id="titles_list">
6 <div v-if="title_count" id="title_list_result" class="page-section">
7 <table v-if="title_count" :id="table_id"></table>
9 <div v-else-if="initialized" class="dialog message">
10 {{ $__("There are no titles defined") }}
17 import Toolbar from "./EHoldingsLocalTitlesToolbar.vue"
18 import { inject, createVNode, render } from "vue"
19 import { storeToRefs } from "pinia"
20 import { fetchLocalTitleCount } from "../../fetch"
21 import { useDataTable } from "../../composables/datatables"
25 const AVStore = inject("AVStore")
26 const { av_title_publication_types } = storeToRefs(AVStore)
27 const { get_lib_from_av, map_av_dt_filter } = AVStore
29 const table_id = "title_list"
30 useDataTable(table_id)
33 av_title_publication_types,
41 title_count: undefined,
44 publication_title: this.$route.query.publication_title || "",
45 publication_type: this.$route.query.publication_type || "",
50 beforeRouteEnter(to, from, next) {
52 vm.getTitleCount().then(() => vm.build_datatable())
56 async getTitleCount() {
57 this.title_count = await fetchLocalTitleCount()
58 this.initialized = true
60 show_title: function (title_id) {
62 "/cgi-bin/koha/erm/eholdings/local/titles/" + title_id
65 edit_title: function (title_id) {
67 "/cgi-bin/koha/erm/eholdings/local/titles/edit/" + title_id
70 delete_title: function (title_id) {
72 "/cgi-bin/koha/erm/eholdings/local/titles/delete/" + title_id
75 build_datatable: function () {
76 let show_title = this.show_title
77 let edit_title = this.edit_title
78 let delete_title = this.delete_title
79 let get_lib_from_av = this.get_lib_from_av
80 let map_av_dt_filter = this.map_av_dt_filter
81 let filters = this.filters
82 let table_id = this.table_id
84 window["av_title_publication_types"] = map_av_dt_filter(
85 "av_title_publication_types"
88 $("#" + table_id).kohaTable(
91 url: "/api/v1/erm/eholdings/local/titles",
93 embed: ["resources.package"],
97 { search: filters.publication_title },
99 { search: filters.publication_type },
105 data: "me.publication_title",
108 render: function (data, type, row, meta) {
109 // Rendering done in drawCallback
114 title: __("Contributors"),
115 data: "first_author:first_editor",
118 render: function (data, type, row, meta) {
120 escape_str(row.first_author) +
121 (row.first_author && row.first_editor
124 escape_str(row.first_editor)
129 title: __("Publication type"),
130 data: "publication_type",
133 render: function (data, type, row, meta) {
136 "av_title_publication_types",
143 title: __("Identifier"),
144 data: "print_identifier:online_identifier",
147 render: function (data, type, row, meta) {
148 let print_identifier = row.print_identifier
149 let online_identifier = row.online_identifier
153 _("ISBN (Print): %s").format(
160 _("ISBN (Online): %s").format(
169 title: __("Actions"),
170 data: function (row, type, val, meta) {
171 return '<div class="actions"></div>'
173 className: "actions noExport",
178 drawCallback: function (settings) {
179 var api = new $.fn.dataTable.Api(settings)
182 $(this).find("td .actions"),
183 function (index, e) {
184 let tr = $(this).parent().parent()
185 let title_id = api.row(tr).data().title_id
186 let editButton = createVNode(
189 class: "btn btn-default btn-xs",
197 class: "fa fa-pencil",
198 "aria-hidden": "true",
204 let deleteButton = createVNode(
207 class: "btn btn-default btn-xs",
210 delete_title(title_id)
215 class: "fa fa-trash",
216 "aria-hidden": "true",
222 let n = createVNode("span", {}, [
232 $(this).find("tbody tr td:first-child"),
233 function (index, e) {
234 let tr = $(this).parent()
235 let row = api.row(tr).data()
236 if (!row) return // Happen if the table is empty
242 "/cgi-bin/koha/erm/eholdings/local/titles/" +
246 show_title(row.title_id)
249 `${row.publication_title} (#${row.title_id})`
255 preDrawCallback: function (settings) {
259 .attr("data-filter", "av_title_publication_types")
262 eholdings_titles_table_settings,
267 components: { Toolbar },
268 name: "EHoldingsLocalTitlesList",