1 dump('entering patron/display.js\n');
3 if (typeof patron == 'undefined') patron = {};
4 patron.display = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('main.window'); this.window = new main.window();
8 JSAN.use('main.network'); this.network = new main.network();
12 patron.display.prototype = {
14 'init' : function( params ) {
18 obj.session = params['session'];
19 obj.barcode = params['barcode'];
21 JSAN.use('OpenILS.data'); this.OpenILS = {};
22 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
24 JSAN.use('util.deck'); obj.deck = new util.deck('patron_deck');
26 JSAN.use('main.controller'); obj.controller = new main.controller();
32 function() { alert('Not Yet Implemented'); }
34 'cmd_patron_refresh' : [
37 obj.controller.view.patron_name.setAttribute(
38 'value','Retrieving...'
43 'cmd_patron_checkout' : [
48 + '?session=' + window.escape( obj.session )
49 + '&patron_id=' + window.escape( obj.patron.id() ),
52 'on_checkout' : function() {
54 obj.controller.render('patron_checkouts');
58 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
61 'cmd_patron_items' : [
64 obj.deck.set_iframe('data:text/html,<h1>Items Here</h1>');
65 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
68 'cmd_patron_holds' : [
71 obj.deck.set_iframe('data:text/html,<h1>Holds Here</h1>');
72 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
75 'cmd_patron_bills' : [
78 obj.deck.set_iframe('data:text/html,<h1>Bills Here</h1>');
79 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
85 obj.deck.set_iframe('data:text/html,<h1>Edit Here</h1>');
86 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
92 obj.deck.set_iframe('data:text/html,<h1>Info Here</h1>');
93 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
100 e.setAttribute('value',
101 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
103 e.setAttribute('style','background-color: lime');
104 //FIXME//bills should become a virtual field
105 if (obj.patron.bills.length > 0)
106 e.setAttribute('style','background-color: yellow');
107 if (obj.patron.standing() == 2)
108 e.setAttribute('style','background-color: lightred');
117 e.setAttribute('value',
118 obj.OpenILS.data.hash.pgt[
125 'patron_standing' : [
129 e.setAttribute('value',
130 obj.OpenILS.data.hash.cst[
131 obj.patron.standing()
141 JSAN.use('util.money');
142 e.setAttribute('value',
143 util.money.cents_as_dollars(
144 obj.patron.credit_forward_balance()
154 JSAN.use('util.money');
156 //FIXME//adjust when .bills becomes a virtual field
157 for (var i = 0; i < obj.patron.bills.length; i++) {
158 total += util.money.dollars_float_to_cents_integer(
159 obj.patron.bills[i].balance_owed()
162 e.setAttribute('value',
163 util.money.cents_as_dollars( total )
168 'patron_checkouts' : [
172 e.setAttribute('value',
173 obj.patron.checkouts().length
182 //FIXME//Get Bill to do this correctly on server side
183 JSAN.use('util.date');
185 for (var i = 0; i < obj.patron.checkouts().length; i++) {
186 var item = obj.patron.checkouts()[i];
187 var due_date = item.circ.due_date();
188 due_date = due_date.substr(0,4)
189 + due_date.substr(5,2) + due_date.substr(8,2);
190 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
191 if (today > due_date) total++;
193 e.setAttribute('value',
203 e.setAttribute('value',
204 obj.patron.hold_requests.length
209 'patron_holds_available' : [
214 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
215 var hold = obj.patron.hold_requests()[i];
216 if (hold.capture_time()) total++;
218 e.setAttribute('value',
228 e.setAttribute('value',
229 obj.patron.card().barcode()
234 'patron_ident_type_1' : [
238 var ident_string = '';
239 var ident = obj.OpenILS.data.hash.cit[
240 obj.patron.ident_type()
242 if (ident) ident_string = ident.name()
243 e.setAttribute('value',
249 'patron_ident_value_1' : [
253 e.setAttribute('value',
254 obj.patron.ident_value()
259 'patron_ident_type_2' : [
263 var ident_string = '';
264 var ident = obj.OpenILS.data.hash.cit[
265 obj.patron.ident_type2()
267 if (ident) ident_string = ident.name()
268 e.setAttribute('value',
274 'patron_ident_value_2' : [
278 e.setAttribute('value',
279 obj.patron.ident_value2()
284 'patron_date_of_birth' : [
288 e.setAttribute('value',
294 'patron_day_phone' : [
298 e.setAttribute('value',
299 obj.patron.day_phone()
304 'patron_evening_phone' : [
308 e.setAttribute('value',
309 obj.patron.evening_phone()
314 'patron_other_phone' : [
318 e.setAttribute('value',
319 obj.patron.other_phone()
328 e.setAttribute('value',
334 'patron_photo_url' : [
338 e.setAttribute('src',
339 obj.patron.photo_url()
348 e.setAttribute('value',
349 obj.OpenILS.data.hash.aou[
353 e.setAttribute('tooltiptext',
354 obj.OpenILS.data.hash.aou[
361 'patron_last_library' : [
365 e.setAttribute('value',
366 obj.OpenILS.data.hash.aou[
370 e.setAttribute('tooltiptext',
371 obj.OpenILS.data.hash.aou[
378 'patron_mailing_address_street1' : [
382 e.setAttribute('value',
383 obj.patron.mailing_address().street1()
388 'patron_mailing_address_street2' : [
392 e.setAttribute('value',
393 obj.patron.mailing_address().street2()
398 'patron_mailing_address_city' : [
402 e.setAttribute('value',
403 obj.patron.mailing_address().city()
408 'patron_mailing_address_state' : [
412 e.setAttribute('value',
413 obj.patron.mailing_address().state()
418 'patron_mailing_address_post_code' : [
422 e.setAttribute('value',
423 obj.patron.mailing_address().post_code()
428 'patron_physical_address_street1' : [
432 e.setAttribute('value',
433 obj.patron.billing_address().street1()
438 'patron_physical_address_street2' : [
442 e.setAttribute('value',
443 obj.patron.billing_address().street2()
448 'patron_physical_address_city' : [
452 e.setAttribute('value',
453 obj.patron.billing_address().city()
458 'patron_physical_address_state' : [
462 e.setAttribute('value',
463 obj.patron.billing_address().state()
468 'patron_physical_address_post_code' : [
472 e.setAttribute('value',
473 obj.patron.billing_address().post_code()
486 'retrieve' : function() {
495 // Retrieve the patron
499 var patron = obj.network.request(
500 api.fm_au_retrieve_via_barcode.app,
501 api.fm_au_retrieve_via_barcode.method,
502 [ obj.session, obj.barcode ]
506 if (instanceOf(patron,au)) {
512 throw('patron is not an au fm object');
516 throw('patron == false');
520 var error = ('patron.display.retrieve : ' + js2JSON(E));
521 obj.error.sdump('D_ERROR',error);
527 // Retrieve the bills
531 var bills = obj.network.request(
532 api.fm_mobts_having_balance.app,
533 api.fm_mobts_having_balance.method,
534 [ obj.session, obj.patron.id() ]
536 //FIXME// obj.patron.bills( bills );
537 obj.patron.bills = bills;
539 var error = ('patron.display.retrieve : ' + js2JSON(E));
540 obj.error.sdump('D_ERROR',error);
546 // Retrieve the checkouts
550 var checkouts = obj.network.request(
551 api.blob_checkouts_retrieve.app,
552 api.blob_checkouts_retrieve.method,
553 [ obj.session, obj.patron.id() ]
555 obj.patron.checkouts( checkouts );
557 var error = ('patron.display.retrieve : ' + js2JSON(E));
558 obj.error.sdump('D_ERROR',error);
564 // Retrieve the holds
568 var holds = obj.network.request(
569 api.fm_ahr_retrieve.app,
570 api.fm_ahr_retrieve.method,
571 [ obj.session, obj.patron.id() ]
573 obj.patron.hold_requests( holds );
575 var error = ('patron.display.retrieve : ' + js2JSON(E));
576 obj.error.sdump('D_ERROR',error);
583 chain.push( function() { obj.controller.render(); } );
586 JSAN.use('util.exec'); obj.exec = new util.exec();
587 obj.exec.on_error = function(E) {
588 location.href = urls.remote_patron_barcode_entry + '?session=' + window.escape(obj.session);
589 alert('FIXME: Need better alert and error handling.\nProblem with barcode.\n' + E);
591 this.exec.chain( chain );
594 var error = ('patron.display.retrieve : ' + js2JSON(E));
595 this.error.sdump('D_ERROR',error);
601 dump('exiting patron/display.js\n');