Lines 126-366
$(document).ready(function() {
Link Here
|
126 |
|
126 |
|
127 |
var ymd = $.datepicker.formatDate('yy-mm-dd', new Date()); |
127 |
var ymd = $.datepicker.formatDate('yy-mm-dd', new Date()); |
128 |
|
128 |
|
129 |
var issuesTable; |
129 |
$('#issues-table').hide(); |
130 |
var drawn = 0; |
130 |
$('#issues-table-actions').hide(); |
131 |
issuesTable = $("#issues-table").dataTable({ |
131 |
$('#issues-table-load-now-button').click(function(){ |
132 |
"oLanguage": { |
132 |
LoadIssuesTable(); |
133 |
"sEmptyTable" : MSG_DT_LOADING_RECORDS, |
133 |
return false; |
134 |
}, |
134 |
}); |
135 |
"bAutoWidth": false, |
135 |
|
136 |
"sDom": "<'row-fluid'<'span6'><'span6'>r>t<'row-fluid'>t", |
136 |
if ( $.cookie("issues-table-load-immediately-" + script) == "true" ) { |
137 |
"aoColumns": [ |
137 |
LoadIssuesTable(); |
138 |
{ |
138 |
$('#issues-table-load-immediately').prop('checked', true); |
139 |
"mDataProp": function( oObj ) { |
139 |
} |
140 |
if ( oObj.issued_today ) { |
140 |
$('#issues-table-load-immediately').on( "change", function(){ |
141 |
return "0"; |
141 |
$.cookie("issues-table-load-immediately-" + script, $(this).is(':checked')); |
142 |
} else { |
142 |
}); |
143 |
return "100"; |
143 |
|
144 |
} |
144 |
function LoadIssuesTable() { |
145 |
} |
145 |
$('#issues-table-loading-message').hide(); |
|
|
146 |
$('#issues-table').show(); |
147 |
$('#issues-table-actions').show(); |
148 |
|
149 |
issuesTable = $("#issues-table").dataTable({ |
150 |
"oLanguage": { |
151 |
"sEmptyTable" : MSG_DT_LOADING_RECORDS, |
146 |
}, |
152 |
}, |
147 |
{ |
153 |
"bAutoWidth": false, |
148 |
"mDataProp": function( oObj ) { |
154 |
"sDom": "<'row-fluid'<'span6'><'span6'>r>t<'row-fluid'>t", |
149 |
if ( oObj.issued_today ) { |
155 |
"aoColumns": [ |
150 |
return "<strong>" + TODAYS_CHECKOUTS + "</strong>"; |
156 |
{ |
151 |
} else { |
157 |
"mDataProp": function( oObj ) { |
152 |
return "<strong>" + PREVIOUS_CHECKOUTS + "</strong>"; |
158 |
if ( oObj.issued_today ) { |
|
|
159 |
return "0"; |
160 |
} else { |
161 |
return "100"; |
162 |
} |
153 |
} |
163 |
} |
154 |
} |
164 |
}, |
155 |
}, |
165 |
{ |
156 |
{ |
166 |
"mDataProp": function( oObj ) { |
157 |
"mDataProp": "date_due", |
167 |
if ( oObj.issued_today ) { |
158 |
"bVisible": false, |
168 |
return "<strong>" + TODAYS_CHECKOUTS + "</strong>"; |
159 |
}, |
169 |
} else { |
160 |
{ |
170 |
return "<strong>" + PREVIOUS_CHECKOUTS + "</strong>"; |
161 |
"iDataSort": 1, // Sort on hidden unformatted date due column |
171 |
} |
162 |
"mDataProp": function( oObj ) { |
|
|
163 |
if ( oObj.date_due_overdue ) { |
164 |
return "<span class='overdue'>" + oObj.date_due_formatted + "</span>"; |
165 |
} else { |
166 |
return oObj.date_due_formatted; |
167 |
} |
172 |
} |
168 |
} |
173 |
}, |
169 |
}, |
174 |
{ |
170 |
{ |
175 |
"mDataProp": "date_due", |
171 |
"mDataProp": function ( oObj ) { |
176 |
"bVisible": false, |
172 |
title = "<span class='strong'><a href='/cgi-bin/koha/catalogue/detail.pl?biblionumber=" |
177 |
}, |
173 |
+ oObj.biblionumber |
178 |
{ |
174 |
+ "'>" |
179 |
"iDataSort": 1, // Sort on hidden unformatted date due column |
175 |
+ oObj.title; |
180 |
"mDataProp": function( oObj ) { |
176 |
|
181 |
if ( oObj.date_due_overdue ) { |
177 |
$.each(oObj.subtitle, function( index, value ) { |
182 |
return "<span class='overdue'>" + oObj.date_due_formatted + "</span>"; |
178 |
title += " " + value.subfield; |
183 |
} else { |
179 |
}); |
184 |
return oObj.date_due_formatted; |
|
|
185 |
} |
186 |
} |
187 |
}, |
188 |
{ |
189 |
"mDataProp": function ( oObj ) { |
190 |
title = "<span class='strong'><a href='/cgi-bin/koha/catalogue/detail.pl?biblionumber=" |
191 |
+ oObj.biblionumber |
192 |
+ "'>" |
193 |
+ oObj.title; |
180 |
|
194 |
|
181 |
title += "</a></span>"; |
195 |
$.each(oObj.subtitle, function( index, value ) { |
|
|
196 |
title += " " + value.subfield; |
197 |
}); |
182 |
|
198 |
|
183 |
if ( oObj.author ) { |
199 |
title += "</a></span>"; |
184 |
title += " " + BY.replace( "_AUTHOR_", " " + oObj.author ); |
|
|
185 |
} |
186 |
|
200 |
|
187 |
if ( oObj.itemnotes ) { |
201 |
if ( oObj.author ) { |
188 |
var span_class = ""; |
202 |
title += " " + BY.replace( "_AUTHOR_", " " + oObj.author ); |
189 |
if ( $.datepicker.formatDate('yy-mm-dd', new Date(oObj.issuedate) ) == ymd ) { |
|
|
190 |
span_class = "circ-hlt"; |
191 |
} |
203 |
} |
192 |
title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>" |
|
|
193 |
} |
194 |
|
204 |
|
195 |
title += " " |
205 |
if ( oObj.itemnotes ) { |
196 |
+ "<a href='/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=" |
206 |
var span_class = ""; |
197 |
+ oObj.biblionumber |
207 |
if ( $.datepicker.formatDate('yy-mm-dd', new Date(oObj.issuedate) ) == ymd ) { |
198 |
+ "&itemnumber=" |
208 |
span_class = "circ-hlt"; |
199 |
+ oObj.itemnumber |
209 |
} |
200 |
+ "#" |
210 |
title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>" |
201 |
+ oObj.itemnumber |
211 |
} |
202 |
+ "'>" |
|
|
203 |
+ oObj.barcode |
204 |
+ "</a>"; |
205 |
|
206 |
return title; |
207 |
} |
208 |
}, |
209 |
{ "mDataProp": "itemtype" }, |
210 |
{ "mDataProp": "issuedate_formatted" }, |
211 |
{ "mDataProp": "branchname" }, |
212 |
{ "mDataProp": "itemcallnumber" }, |
213 |
{ |
214 |
"mDataProp": function ( oObj ) { |
215 |
if ( ! oObj.charge ) oObj.charge = 0; |
216 |
return parseFloat(oObj.charge).toFixed(2); |
217 |
} |
218 |
}, |
219 |
{ |
220 |
"mDataProp": function ( oObj ) { |
221 |
if ( ! oObj.price ) oObj.price = 0; |
222 |
return parseFloat(oObj.price).toFixed(2); |
223 |
} |
224 |
}, |
225 |
{ |
226 |
"bSortable": false, |
227 |
"mDataProp": function ( oObj ) { |
228 |
var content = ""; |
229 |
var span_style = ""; |
230 |
var span_class = ""; |
231 |
|
232 |
content += "<span>"; |
233 |
content += "<span style='padding: 0 1em;'>" + oObj.renewals_count + "</span>"; |
234 |
|
235 |
if ( oObj.can_renew ) { |
236 |
// Do nothing |
237 |
} else if ( oObj.can_renew_error == "on_reserve" ) { |
238 |
content += "<span class='renewals-disabled'>" |
239 |
+ "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>" |
240 |
+ "</span>"; |
241 |
|
242 |
span_style = "display: none"; |
243 |
span_class = "renewals-allowed"; |
244 |
} else if ( oObj.can_renew_error == "too_many" ) { |
245 |
content += "<span class='renewals-disabled'>" |
246 |
+ NOT_RENEWABLE |
247 |
+ "</span>"; |
248 |
|
249 |
span_style = "display: none"; |
250 |
span_class = "renewals-allowed"; |
251 |
} else if ( oObj.can_renew_error == "too_soon" ) { |
252 |
content += "<span class='renewals-disabled'>" |
253 |
+ NOT_RENEWABLE_TOO_SOON.format( oObj.can_renew_date ) |
254 |
+ "</span>"; |
255 |
|
256 |
span_style = "display: none"; |
257 |
span_class = "renewals-allowed"; |
258 |
} else if ( oObj.can_renew_error == "auto_too_soon" ) { |
259 |
content += "<span class='renewals-disabled'>" |
260 |
+ NOT_RENEWABLE_AUTO_TOO_SOON |
261 |
+ "</span>"; |
262 |
|
263 |
span_style = "display: none"; |
264 |
span_class = "renewals-allowed"; |
265 |
} else if ( oObj.can_renew_error == "auto_renew" ) { |
266 |
content += "<span class='renewals-disabled'>" |
267 |
+ NOT_RENEWABLE_AUTO_RENEW |
268 |
+ "</span>"; |
269 |
|
270 |
span_style = "display: none"; |
271 |
span_class = "renewals-allowed"; |
272 |
} else { |
273 |
content += "<span class='renewals-disabled'>" |
274 |
+ oObj.can_renew_error |
275 |
+ "</span>"; |
276 |
|
212 |
|
277 |
span_style = "display: none"; |
213 |
title += " " |
278 |
span_class = "renewals-allowed"; |
214 |
+ "<a href='/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=" |
|
|
215 |
+ oObj.biblionumber |
216 |
+ "&itemnumber=" |
217 |
+ oObj.itemnumber |
218 |
+ "#" |
219 |
+ oObj.itemnumber |
220 |
+ "'>" |
221 |
+ oObj.barcode |
222 |
+ "</a>"; |
223 |
|
224 |
return title; |
225 |
} |
226 |
}, |
227 |
{ "mDataProp": "itemtype" }, |
228 |
{ "mDataProp": "issuedate_formatted" }, |
229 |
{ "mDataProp": "branchname" }, |
230 |
{ "mDataProp": "itemcallnumber" }, |
231 |
{ |
232 |
"mDataProp": function ( oObj ) { |
233 |
if ( ! oObj.charge ) oObj.charge = 0; |
234 |
return parseFloat(oObj.charge).toFixed(2); |
279 |
} |
235 |
} |
|
|
236 |
}, |
237 |
{ |
238 |
"mDataProp": function ( oObj ) { |
239 |
if ( ! oObj.price ) oObj.price = 0; |
240 |
return parseFloat(oObj.price).toFixed(2); |
241 |
} |
242 |
}, |
243 |
{ |
244 |
"bSortable": false, |
245 |
"mDataProp": function ( oObj ) { |
246 |
var content = ""; |
247 |
var span_style = ""; |
248 |
var span_class = ""; |
280 |
|
249 |
|
281 |
content += "<span class='" + span_class + "' style='" + span_style + "'>" |
250 |
content += "<span>"; |
282 |
+ "<input type='checkbox' class='renew' id='renew_" + oObj.itemnumber + "' name='renew' value='" + oObj.itemnumber +"'/>" |
251 |
content += "<span style='padding: 0 1em;'>" + oObj.renewals_count + "</span>"; |
283 |
+ "</span>"; |
252 |
|
|
|
253 |
if ( oObj.can_renew ) { |
254 |
// Do nothing |
255 |
} else if ( oObj.can_renew_error == "on_reserve" ) { |
256 |
content += "<span class='renewals-disabled'>" |
257 |
+ "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>" |
258 |
+ "</span>"; |
259 |
|
260 |
span_style = "display: none"; |
261 |
span_class = "renewals-allowed"; |
262 |
} else if ( oObj.can_renew_error == "too_many" ) { |
263 |
content += "<span class='renewals-disabled'>" |
264 |
+ NOT_RENEWABLE |
265 |
+ "</span>"; |
266 |
|
267 |
span_style = "display: none"; |
268 |
span_class = "renewals-allowed"; |
269 |
} else if ( oObj.can_renew_error == "too_soon" ) { |
270 |
content += "<span class='renewals-disabled'>" |
271 |
+ NOT_RENEWABLE_TOO_SOON.format( oObj.can_renew_date ) |
272 |
+ "</span>"; |
273 |
|
274 |
span_style = "display: none"; |
275 |
span_class = "renewals-allowed"; |
276 |
} else if ( oObj.can_renew_error == "auto_too_soon" ) { |
277 |
content += "<span class='renewals-disabled'>" |
278 |
+ NOT_RENEWABLE_AUTO_TOO_SOON |
279 |
+ "</span>"; |
280 |
|
281 |
span_style = "display: none"; |
282 |
span_class = "renewals-allowed"; |
283 |
} else if ( oObj.can_renew_error == "auto_renew" ) { |
284 |
content += "<span class='renewals-disabled'>" |
285 |
+ NOT_RENEWABLE_AUTO_RENEW |
286 |
+ "</span>"; |
287 |
|
288 |
span_style = "display: none"; |
289 |
span_class = "renewals-allowed"; |
290 |
} else { |
291 |
content += "<span class='renewals-disabled'>" |
292 |
+ oObj.can_renew_error |
293 |
+ "</span>"; |
294 |
|
295 |
span_style = "display: none"; |
296 |
span_class = "renewals-allowed"; |
297 |
} |
284 |
|
298 |
|
285 |
if ( oObj.renewals_remaining ) { |
299 |
content += "<span class='" + span_class + "' style='" + span_style + "'>" |
286 |
content += "<span class='renewals'>(" |
300 |
+ "<input type='checkbox' class='renew' id='renew_" + oObj.itemnumber + "' name='renew' value='" + oObj.itemnumber +"'/>" |
287 |
+ RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed ) |
301 |
+ "</span>"; |
288 |
+ ")</span>"; |
302 |
|
289 |
} |
303 |
if ( oObj.renewals_remaining ) { |
|
|
304 |
content += "<span class='renewals'>(" |
305 |
+ RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed ) |
306 |
+ ")</span>"; |
307 |
} |
290 |
|
308 |
|
291 |
content += "</span>"; |
309 |
content += "</span>"; |
292 |
|
310 |
|
293 |
|
311 |
|
294 |
return content; |
312 |
return content; |
|
|
313 |
} |
314 |
}, |
315 |
{ |
316 |
"bSortable": false, |
317 |
"mDataProp": function ( oObj ) { |
318 |
if ( oObj.can_renew_error == "on_reserve" ) { |
319 |
return "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>"; |
320 |
} else { |
321 |
return "<input type='checkbox' class='checkin' id='checkin_" + oObj.itemnumber + "' name='checkin' value='" + oObj.itemnumber +"'></input>"; |
322 |
} |
323 |
} |
324 |
}, |
325 |
{ |
326 |
"bVisible": exports_enabled ? true : false, |
327 |
"bSortable": false, |
328 |
"mDataProp": function ( oObj ) { |
329 |
return "<input type='checkbox' class='export' id='export_" + oObj.biblionumber + "' name='biblionumbers' value='" + oObj.biblionumber + "' />"; |
330 |
} |
295 |
} |
331 |
} |
|
|
332 |
], |
333 |
"fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) { |
334 |
var total_charge = 0; |
335 |
var total_price = 0; |
336 |
for ( var i=0; i < aaData.length; i++ ) { |
337 |
total_charge += aaData[i]['charge'] * 1; |
338 |
total_price += aaData[i]['price'] * 1; |
339 |
} |
340 |
var nCells = nRow.getElementsByTagName('td'); |
341 |
nCells[1].innerHTML = total_charge.toFixed(2); |
342 |
nCells[2].innerHTML = total_price.toFixed(2); |
296 |
}, |
343 |
}, |
297 |
{ |
344 |
"bPaginate": false, |
298 |
"bSortable": false, |
345 |
"bProcessing": true, |
299 |
"mDataProp": function ( oObj ) { |
346 |
"bServerSide": false, |
300 |
if ( oObj.can_renew_error == "on_reserve" ) { |
347 |
"sAjaxSource": '/cgi-bin/koha/svc/checkouts', |
301 |
return "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>"; |
348 |
"fnServerData": function ( sSource, aoData, fnCallback ) { |
302 |
} else { |
349 |
aoData.push( { "name": "borrowernumber", "value": borrowernumber } ); |
303 |
return "<input type='checkbox' class='checkin' id='checkin_" + oObj.itemnumber + "' name='checkin' value='" + oObj.itemnumber +"'></input>"; |
350 |
|
|
|
351 |
$.getJSON( sSource, aoData, function (json) { |
352 |
fnCallback(json) |
353 |
} ); |
354 |
}, |
355 |
"fnInitComplete": function(oSettings) { |
356 |
// Disable rowGrouping plugin after first use |
357 |
// so any sorting on the table doesn't use it |
358 |
var oSettings = issuesTable.fnSettings(); |
359 |
|
360 |
for (f = 0; f < oSettings.aoDrawCallback.length; f++) { |
361 |
if (oSettings.aoDrawCallback[f].sName == 'fnRowGrouping') { |
362 |
oSettings.aoDrawCallback.splice(f, 1); |
363 |
break; |
304 |
} |
364 |
} |
305 |
} |
365 |
} |
|
|
366 |
|
367 |
oSettings.aaSortingFixed = null; |
306 |
}, |
368 |
}, |
|
|
369 |
}).rowGrouping( |
307 |
{ |
370 |
{ |
308 |
"bVisible": exports_enabled ? true : false, |
371 |
iGroupingColumnIndex: 1, |
309 |
"bSortable": false, |
372 |
iGroupingOrderByColumnIndex: 0, |
310 |
"mDataProp": function ( oObj ) { |
373 |
sGroupingColumnSortDirection: "asc" |
311 |
return "<input type='checkbox' class='export' id='export_" + oObj.biblionumber + "' name='biblionumbers' value='" + oObj.biblionumber + "' />"; |
|
|
312 |
} |
313 |
} |
314 |
], |
315 |
"fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) { |
316 |
var total_charge = 0; |
317 |
var total_price = 0; |
318 |
for ( var i=0; i < aaData.length; i++ ) { |
319 |
total_charge += aaData[i]['charge'] * 1; |
320 |
total_price += aaData[i]['price'] * 1; |
321 |
} |
322 |
var nCells = nRow.getElementsByTagName('td'); |
323 |
nCells[1].innerHTML = total_charge.toFixed(2); |
324 |
nCells[2].innerHTML = total_price.toFixed(2); |
325 |
}, |
326 |
"bPaginate": false, |
327 |
"bProcessing": true, |
328 |
"bServerSide": false, |
329 |
"sAjaxSource": '/cgi-bin/koha/svc/checkouts', |
330 |
"fnServerData": function ( sSource, aoData, fnCallback ) { |
331 |
aoData.push( { "name": "borrowernumber", "value": borrowernumber } ); |
332 |
|
333 |
$.getJSON( sSource, aoData, function (json) { |
334 |
fnCallback(json) |
335 |
} ); |
336 |
}, |
337 |
"fnInitComplete": function(oSettings) { |
338 |
// Disable rowGrouping plugin after first use |
339 |
// so any sorting on the table doesn't use it |
340 |
var oSettings = issuesTable.fnSettings(); |
341 |
|
342 |
for (f = 0; f < oSettings.aoDrawCallback.length; f++) { |
343 |
if (oSettings.aoDrawCallback[f].sName == 'fnRowGrouping') { |
344 |
oSettings.aoDrawCallback.splice(f, 1); |
345 |
break; |
346 |
} |
347 |
} |
374 |
} |
|
|
375 |
); |
348 |
|
376 |
|
349 |
oSettings.aaSortingFixed = null; |
377 |
if ( $("#issues-table").length ) { |
350 |
}, |
378 |
$("#issues-table_processing").position({ |
351 |
}).rowGrouping( |
379 |
of: $( "#issues-table" ), |
352 |
{ |
380 |
collision: "none" |
353 |
iGroupingColumnIndex: 1, |
381 |
}); |
354 |
iGroupingOrderByColumnIndex: 0, |
|
|
355 |
sGroupingColumnSortDirection: "asc" |
356 |
} |
382 |
} |
357 |
); |
|
|
358 |
|
359 |
if ( $("#issues-table").length ) { |
360 |
$("#issues-table_processing").position({ |
361 |
of: $( "#issues-table" ), |
362 |
collision: "none" |
363 |
}); |
364 |
} |
383 |
} |
365 |
|
384 |
|
366 |
// Don't load relatives' issues table unless it is clicked on |
385 |
// Don't load relatives' issues table unless it is clicked on |