|
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 |