3 <div v-if="!initialized">{{ $__("Loading") }}</div>
4 <div v-else id="titles_list">
11 <table :id="table_id"></table>
13 <div v-else class="dialog message">
14 {{ $__("There are no titles defined") }}
21 import Toolbar from "./EHoldingsLocalTitlesToolbar.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 AVStore = inject("AVStore")
30 const { av_title_publication_types } = storeToRefs(AVStore)
31 const { get_lib_from_av, map_av_dt_filter } = AVStore
33 const { setConfirmationDialog, setMessage } = inject("mainStore")
35 const table_id = "title_list"
36 useDataTable(table_id)
39 av_title_publication_types,
43 setConfirmationDialog,
52 publication_title: this.$route.query.publication_title || "",
53 publication_type: this.$route.query.publication_type || "",
58 beforeRouteEnter(to, from, next) {
60 vm.getTitleCount().then(() => vm.build_datatable())
64 async getTitleCount() {
65 const client = APIClient.erm
66 await client.localTitles.count().then(
68 this.title_count = count
69 this.initialized = true
74 show_title: function (title_id) {
76 "/cgi-bin/koha/erm/eholdings/local/titles/" + title_id
79 edit_title: function (title_id) {
81 "/cgi-bin/koha/erm/eholdings/local/titles/edit/" + title_id
84 delete_title: function (title_id, title_publication_title) {
85 this.setConfirmationDialog(
88 "Are you sure you want to remove this title?"
90 message: title_publication_title,
91 accept_label: this.$__("Yes, delete"),
92 cancel_label: this.$__("No, do not delete"),
95 const client = APIClient.erm
96 client.localTitles.delete(title_id).then(
99 this.$__("Local title %s deleted").format(
100 title_publication_title
104 $("#" + this.table_id)
106 .ajax.url("/api/v1/erm/eholdings/local/titles")
114 build_datatable: function () {
115 let show_title = this.show_title
116 let edit_title = this.edit_title
117 let delete_title = this.delete_title
118 let get_lib_from_av = this.get_lib_from_av
119 let map_av_dt_filter = this.map_av_dt_filter
120 let filters = this.filters
121 let table_id = this.table_id
123 window["av_title_publication_types"] = map_av_dt_filter(
124 "av_title_publication_types"
127 $("#" + table_id).kohaTable(
130 url: "/api/v1/erm/eholdings/local/titles",
132 embed: ["resources.package"],
136 { search: filters.publication_title },
138 { search: filters.publication_type },
144 data: "me.publication_title",
147 render: function (data, type, row, meta) {
148 // Rendering done in drawCallback
153 title: __("Contributors"),
154 data: "first_author:first_editor",
157 render: function (data, type, row, meta) {
159 escape_str(row.first_author) +
160 (row.first_author && row.first_editor
163 escape_str(row.first_editor)
168 title: __("Publication type"),
169 data: "publication_type",
172 render: function (data, type, row, meta) {
175 "av_title_publication_types",
182 title: __("Identifier"),
183 data: "print_identifier:online_identifier",
186 render: function (data, type, row, meta) {
187 let print_identifier = row.print_identifier
188 let online_identifier = row.online_identifier
192 _("ISBN (Print): %s").format(
199 _("ISBN (Online): %s").format(
208 title: __("Actions"),
209 data: function (row, type, val, meta) {
210 return '<div class="actions"></div>'
212 className: "actions noExport",
217 drawCallback: function (settings) {
218 var api = new $.fn.dataTable.Api(settings)
221 $(this).find("td .actions"),
222 function (index, e) {
223 let tr = $(this).parent().parent()
224 let title_id = api.row(tr).data().title_id
225 let title_publication_title = api
227 .data().publication_title
228 let editButton = createVNode(
231 class: "btn btn-default btn-xs",
239 class: "fa fa-pencil",
240 "aria-hidden": "true",
246 let deleteButton = createVNode(
249 class: "btn btn-default btn-xs",
254 title_publication_title
260 class: "fa fa-trash",
261 "aria-hidden": "true",
267 let n = createVNode("span", {}, [
277 $(this).find("tbody tr td:first-child"),
278 function (index, e) {
279 let tr = $(this).parent()
280 let row = api.row(tr).data()
281 if (!row) return // Happen if the table is empty
287 "/cgi-bin/koha/erm/eholdings/local/titles/" +
291 show_title(row.title_id)
294 `${row.publication_title} (#${row.title_id})`
300 preDrawCallback: function (settings) {
304 .attr("data-filter", "av_title_publication_types")
307 eholdings_titles_table_settings,
312 components: { Toolbar },
313 name: "EHoldingsLocalTitlesList",