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