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