|
Lines 68-239
Link Here
|
| 68 |
|
68 |
|
| 69 |
var table_settings = [% TablesSettings.GetTableSettings('cataloguing', 'concerns', 'table_concerns', 'json') | $raw %]; |
69 |
var table_settings = [% TablesSettings.GetTableSettings('cataloguing', 'concerns', 'table_concerns', 'json') | $raw %]; |
| 70 |
</script> |
70 |
</script> |
| 71 |
|
|
|
| 72 |
<script> |
71 |
<script> |
| 73 |
$(document).ready(function() { |
72 |
$(document).ready(function () { |
| 74 |
let additional_filters = { |
73 |
let additional_filters = { |
| 75 |
resolved_date: function(){ |
74 |
resolved_date: function () { |
| 76 |
if ( $("#hide_resolved_concerns").is(":checked") ) { |
75 |
if ($("#hide_resolved_concerns").is(":checked")) { |
| 77 |
return { "=": null }; |
76 |
return { "=": null }; |
| 78 |
} else { |
77 |
} else { |
| 79 |
return; |
78 |
return; |
| 80 |
} |
79 |
} |
| 81 |
}, |
80 |
}, |
| 82 |
source: 'catalog' |
81 |
source: "catalog", |
| 83 |
}; |
82 |
}; |
| 84 |
let external_filter_nodes = { |
83 |
let external_filter_nodes = { |
| 85 |
hide_resolved_concerns: "#hide_resolved_concerns", |
84 |
hide_resolved_concerns: "#hide_resolved_concerns", |
| 86 |
}; |
85 |
}; |
| 87 |
|
86 |
|
| 88 |
var tickets_url = '/api/v1/tickets'; |
87 |
var tickets_url = "/api/v1/tickets"; |
| 89 |
var tickets = $("#table_concerns").kohaTable({ |
88 |
var tickets = $("#table_concerns").kohaTable( |
| 90 |
ajax: { |
89 |
{ |
| 91 |
"url": tickets_url |
90 |
ajax: { |
| 92 |
}, |
91 |
url: tickets_url, |
| 93 |
embed: [ |
|
|
| 94 |
"assignee", |
| 95 |
"reporter", |
| 96 |
"resolver", |
| 97 |
"biblio", |
| 98 |
"updates+count", |
| 99 |
"+strings" |
| 100 |
], |
| 101 |
emptyTable: '<div class="alert alert-info">' + _("Congratulations, there are no catalog concerns.") + '</div>', |
| 102 |
columnDefs: [{ |
| 103 |
targets: [0, 1, 2, 3], |
| 104 |
render: function(data, type, row, meta) { |
| 105 |
if (type == 'display') { |
| 106 |
if (data != null) { |
| 107 |
return data.escapeHtml(); |
| 108 |
} else { |
| 109 |
return ""; |
| 110 |
} |
| 111 |
} |
| 112 |
return data; |
| 113 |
} |
| 114 |
}], |
| 115 |
columns: [{ |
| 116 |
data: "reported_date:reporter.firstname", |
| 117 |
render: function(data, type, row, meta) { |
| 118 |
let reported = '<div class="d-flex justify-content-between align-items-start">'; |
| 119 |
reported += '<span class="reporter">' + $patron_to_html(row.reporter, { |
| 120 |
display_cardnumber: false, |
| 121 |
url: true |
| 122 |
}) + '</span>'; |
| 123 |
reported += '<span class="date text-muted">' + $datetime(row.reported_date) + '</span>'; |
| 124 |
reported += '</div>'; |
| 125 |
return reported; |
| 126 |
}, |
| 127 |
searchable: true, |
| 128 |
orderable: true |
| 129 |
}, |
92 |
}, |
| 130 |
{ |
93 |
embed: ["assignee", "reporter", "resolver", "biblio", "updates+count", "+strings"], |
| 131 |
data: "title:body", |
94 |
emptyTable: '<div class="alert alert-info">' + _("Congratulations, there are no catalog concerns.") + "</div>", |
| 132 |
render: function(data, type, row, meta) { |
95 |
columnDefs: [ |
| 133 |
let result = '<div class="d-flex justify-content-between align-items-start">'; |
96 |
{ |
|
|
97 |
targets: [0, 1, 2, 3], |
| 98 |
render: function (data, type, row, meta) { |
| 99 |
if (type == "display") { |
| 100 |
if (data != null) { |
| 101 |
return data.escapeHtml(); |
| 102 |
} else { |
| 103 |
return ""; |
| 104 |
} |
| 105 |
} |
| 106 |
return data; |
| 107 |
}, |
| 108 |
}, |
| 109 |
], |
| 110 |
columns: [ |
| 111 |
{ |
| 112 |
data: "reported_date:reporter.firstname", |
| 113 |
render: function (data, type, row, meta) { |
| 114 |
let reported = '<div class="d-flex justify-content-between align-items-start">'; |
| 115 |
reported += |
| 116 |
'<span class="reporter">' + |
| 117 |
$patron_to_html(row.reporter, { |
| 118 |
display_cardnumber: false, |
| 119 |
url: true, |
| 120 |
}) + |
| 121 |
"</span>"; |
| 122 |
reported += '<span class="date text-muted">' + $datetime(row.reported_date) + "</span>"; |
| 123 |
reported += "</div>"; |
| 124 |
return reported; |
| 125 |
}, |
| 126 |
searchable: true, |
| 127 |
orderable: true, |
| 128 |
}, |
| 129 |
{ |
| 130 |
data: "title:body", |
| 131 |
render: function (data, type, row, meta) { |
| 132 |
let result = '<div class="d-flex justify-content-between align-items-start">'; |
| 134 |
|
133 |
|
| 135 |
// Title link on the left |
134 |
// Title link on the left |
| 136 |
result += '<a id="title_' + row.ticket_id + '" role="button" href="#" class="detail-trigger">' + row.title + '</a>'; |
135 |
result += '<a id="title_' + row.ticket_id + '" role="button" href="#" class="detail-trigger">' + row.title + "</a>"; |
| 137 |
|
136 |
|
| 138 |
// Updates count on the right, if it exists |
137 |
// Updates count on the right, if it exists |
| 139 |
if (row.updates_count) { |
138 |
if (row.updates_count) { |
| 140 |
result += '<span><a role="button" href="#" class="detail-trigger"><i class="fa fa-comment" aria-hidden="true"></i> ' + row.updates_count + '</a></span>'; |
139 |
result += '<span><a role="button" href="#" class="detail-trigger"><i class="fa fa-comment" aria-hidden="true"></i> ' + row.updates_count + "</a></span>"; |
| 141 |
} |
140 |
} |
| 142 |
|
141 |
|
| 143 |
// Hidden detail content |
142 |
// Hidden detail content |
| 144 |
result += '</div>'; |
143 |
result += "</div>"; |
| 145 |
result += '<div id="detail_' + row.ticket_id + '" style="display:none">' + row.body + '</div>'; |
144 |
result += '<div id="detail_' + row.ticket_id + '" style="display:none">' + row.body + "</div>"; |
| 146 |
|
145 |
|
| 147 |
return result; |
146 |
return result; |
|
|
147 |
}, |
| 148 |
searchable: true, |
| 149 |
orderable: true, |
| 148 |
}, |
150 |
}, |
| 149 |
searchable: true, |
151 |
{ |
| 150 |
orderable: true |
152 |
data: "biblio.title", |
| 151 |
}, |
153 |
render: function (data, type, row, meta) { |
| 152 |
{ |
154 |
return $biblio_to_html(row.biblio, { |
| 153 |
data: "biblio.title", |
155 |
link: 1, |
| 154 |
render: function(data, type, row, meta) { |
156 |
}); |
| 155 |
return $biblio_to_html(row.biblio, { |
157 |
}, |
| 156 |
link: 1 |
158 |
searchable: true, |
| 157 |
}); |
159 |
orderable: true, |
| 158 |
}, |
160 |
}, |
| 159 |
searchable: true, |
161 |
{ |
| 160 |
orderable: true |
162 |
data: "assignee.firstname:assignee.surname:resolver.firstname:resolver.surname:resolved_date:status", |
| 161 |
}, |
163 |
render: function (data, type, row, meta) { |
| 162 |
{ |
164 |
let result = ""; |
| 163 |
data: "assignee.firstname:assignee.surname:resolver.firstname:resolver.surname:resolved_date:status", |
165 |
if (row.resolved_date) { |
| 164 |
render: function(data, type, row, meta) { |
166 |
result += "<div>"; |
| 165 |
let result = ''; |
167 |
result += |
| 166 |
if (row.resolved_date) { |
168 |
_("Resolved by") + |
| 167 |
result += "<div>"; |
169 |
" <span>" + |
| 168 |
result += _("Resolved by") + ' <span>' + $patron_to_html(row.resolver, { |
170 |
$patron_to_html(row.resolver, { |
| 169 |
display_cardnumber: false, |
171 |
display_cardnumber: false, |
| 170 |
url: true |
172 |
url: true, |
| 171 |
}) + '</span>'; |
173 |
}) + |
| 172 |
result += "</div>"; |
174 |
"</span>"; |
| 173 |
if (row.status) { |
175 |
result += "</div>"; |
| 174 |
result += '<div>'; |
176 |
if (row.status) { |
| 175 |
result += ' ' + _("as") + ' '; |
177 |
result += "<div>"; |
| 176 |
result += row._strings.status ? escape_str(row._strings.status.str) : ""; |
178 |
result += " " + _("as") + " "; |
| 177 |
result += '</div>'; |
179 |
result += row._strings.status ? escape_str(row._strings.status.str) : ""; |
| 178 |
} |
180 |
result += "</div>"; |
| 179 |
result += '<div>' + $datetime(row.resolved_date) + '</div>'; |
181 |
} |
| 180 |
} else { |
182 |
result += "<div>" + $datetime(row.resolved_date) + "</div>"; |
| 181 |
result += '<div>'; |
|
|
| 182 |
if (row.status) { |
| 183 |
result += row._strings.status ? escape_str(row._strings.status.str) : ""; |
| 184 |
} else { |
183 |
} else { |
| 185 |
result += _("Open"); |
184 |
result += "<div>"; |
| 186 |
} |
185 |
if (row.status) { |
| 187 |
result += '</div>'; |
186 |
result += row._strings.status ? escape_str(row._strings.status.str) : ""; |
| 188 |
if (row.assignee) { |
187 |
} else { |
| 189 |
result += '<div>'; |
188 |
result += _("Open"); |
| 190 |
result += _("Assigned to: ") + ' <span>' + $patron_to_html(row.assignee, { |
189 |
} |
| 191 |
display_cardnumber: false, |
190 |
result += "</div>"; |
| 192 |
url: true |
191 |
if (row.assignee) { |
| 193 |
}) + '</span>'; |
192 |
result += "<div>"; |
| 194 |
result += '</div>'; |
193 |
result += |
|
|
194 |
_("Assigned to: ") + |
| 195 |
" <span>" + |
| 196 |
$patron_to_html(row.assignee, { |
| 197 |
display_cardnumber: false, |
| 198 |
url: true, |
| 199 |
}) + |
| 200 |
"</span>"; |
| 201 |
result += "</div>"; |
| 202 |
} |
| 195 |
} |
203 |
} |
| 196 |
} |
204 |
return result; |
| 197 |
return result; |
205 |
}, |
|
|
206 |
searchable: true, |
| 207 |
orderable: true, |
| 198 |
}, |
208 |
}, |
| 199 |
searchable: true, |
209 |
{ |
| 200 |
orderable: true |
210 |
data: function (row, type, val, meta) { |
| 201 |
}, |
211 |
let resolved = row.resolved_date ? true : false; |
| 202 |
{ |
212 |
let result = |
| 203 |
data: function(row, type, val, meta) { |
213 |
'<a class="btn btn-default btn-xs main-trigger" role="button" href="#" data-bs-toggle="modal" data-bs-target="#ticketDetailsModal" data-concern="' + |
| 204 |
let resolved = ( row.resolved_date ) ? true : false; |
214 |
encodeURIComponent(row.ticket_id) + |
| 205 |
let result = '<a class="btn btn-default btn-xs main-trigger" role="button" href="#" data-bs-toggle="modal" data-bs-target="#ticketDetailsModal" data-concern="' + encodeURIComponent(row.ticket_id) + '" data-resolved="'+resolved+'" data-assignee="'+$patron_to_html(row.assignee, { display_cardnumber: false, url: false })+'"><i class="fa-solid fa-eye" aria-hidden="true"></i> ' + _("Details") + '</a>'; |
215 |
'" data-resolved="' + |
| 206 |
return result; |
216 |
resolved + |
|
|
217 |
'" data-assignee="' + |
| 218 |
$patron_to_html(row.assignee, { display_cardnumber: false, url: false }) + |
| 219 |
'"><i class="fa-solid fa-eye" aria-hidden="true"></i> ' + |
| 220 |
_("Details") + |
| 221 |
"</a>"; |
| 222 |
return result; |
| 223 |
}, |
| 224 |
searchable: false, |
| 225 |
orderable: false, |
| 207 |
}, |
226 |
}, |
| 208 |
searchable: false, |
227 |
], |
| 209 |
orderable: false |
228 |
createdRow: function (row, data, dataIndex) { |
|
|
229 |
if (data.status) { |
| 230 |
$(row).addClass(data.status.toLowerCase()); |
| 231 |
} |
| 210 |
}, |
232 |
}, |
| 211 |
], |
|
|
| 212 |
createdRow: function (row, data, dataIndex) { |
| 213 |
if ( data.status ) { |
| 214 |
$(row).addClass(data.status.toLowerCase()); |
| 215 |
} |
| 216 |
}, |
233 |
}, |
| 217 |
}, table_settings, 1, additional_filters, undefined, external_filter_nodes); |
234 |
table_settings, |
|
|
235 |
1, |
| 236 |
additional_filters, |
| 237 |
undefined, |
| 238 |
external_filter_nodes |
| 239 |
); |
| 218 |
|
240 |
|
| 219 |
var txtActivefilter = _("Include resolved"); |
241 |
var txtActivefilter = _("Include resolved"); |
| 220 |
var txtInactivefilter = _("Filter resolved"); |
242 |
var txtInactivefilter = _("Filter resolved"); |
| 221 |
function adjust_filter_label(){ |
243 |
function adjust_filter_label() { |
| 222 |
if ($("#hide_resolved_concerns").is(":checked")){ |
244 |
if ($("#hide_resolved_concerns").is(":checked")) { |
| 223 |
$("#resolved_filter").html('<i class="fa fa-filter"></i> '+txtActivefilter); |
245 |
$("#resolved_filter").html('<i class="fa fa-filter"></i> ' + txtActivefilter); |
| 224 |
} else { |
246 |
} else { |
| 225 |
$("#resolved_filter").html('<i class="fa fa-bars"></i> '+txtInactivefilter); |
247 |
$("#resolved_filter").html('<i class="fa fa-bars"></i> ' + txtInactivefilter); |
| 226 |
} |
248 |
} |
| 227 |
} |
249 |
} |
| 228 |
$('#resolved_filter').on("click", function() { |
250 |
$("#resolved_filter").on("click", function () { |
| 229 |
$("#hide_resolved_concerns").prop("checked", !$("#hide_resolved_concerns").is(":checked")); |
251 |
$("#hide_resolved_concerns").prop("checked", !$("#hide_resolved_concerns").is(":checked")); |
| 230 |
adjust_filter_label() |
252 |
adjust_filter_label(); |
| 231 |
tickets.DataTable().draw(); |
253 |
tickets.DataTable().draw(); |
| 232 |
}); |
254 |
}); |
| 233 |
adjust_filter_label(); |
255 |
adjust_filter_label(); |
| 234 |
}); |
256 |
}); |
| 235 |
</script> |
257 |
</script> |
| 236 |
|
|
|
| 237 |
<script> |
258 |
<script> |
| 238 |
$(document).ready(function() { |
259 |
$(document).ready(function() { |
| 239 |
[% FOR st IN status %] |
260 |
[% FOR st IN status %] |
|
Lines 262-268
Link Here
|
| 262 |
[% END %] |
283 |
[% END %] |
| 263 |
}); |
284 |
}); |
| 264 |
</script> |
285 |
</script> |
| 265 |
|
|
|
| 266 |
[% INCLUDE 'select2.inc' %] |
286 |
[% INCLUDE 'select2.inc' %] |
| 267 |
[% Asset.js("js/modals/display_ticket.js") | $raw %] |
287 |
[% Asset.js("js/modals/display_ticket.js") | $raw %] |
| 268 |
[% END %] |
288 |
[% END %] |