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' : [
49 + window.escape( obj.session )
51 + window.escape( obj.patron.id() )
53 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
56 'cmd_patron_items' : [
59 obj.deck.set_iframe('data:text/html,<h1>Items Here</h1>');
60 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
63 'cmd_patron_holds' : [
66 obj.deck.set_iframe('data:text/html,<h1>Holds Here</h1>');
67 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
70 'cmd_patron_bills' : [
73 obj.deck.set_iframe('data:text/html,<h1>Bills Here</h1>');
74 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
80 obj.deck.set_iframe('data:text/html,<h1>Edit Here</h1>');
81 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
87 obj.deck.set_iframe('data:text/html,<h1>Info Here</h1>');
88 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
95 e.setAttribute('value',
96 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
98 e.setAttribute('style','background-color: lime');
99 //FIXME//bills should become a virtual field
100 if (obj.patron.bills.length > 0)
101 e.setAttribute('style','background-color: yellow');
102 if (obj.patron.standing() == 2)
103 e.setAttribute('style','background-color: lightred');
112 e.setAttribute('value',
113 obj.OpenILS.data.hash.pgt[
120 'patron_standing' : [
124 e.setAttribute('value',
125 obj.OpenILS.data.hash.cst[
126 obj.patron.standing()
136 JSAN.use('util.money');
137 e.setAttribute('value',
138 util.money.cents_as_dollars(
139 obj.patron.credit_forward_balance()
149 JSAN.use('util.money');
151 //FIXME//adjust when .bills becomes a virtual field
152 for (var i = 0; i < obj.patron.bills.length; i++) {
153 total += util.money.dollars_float_to_cents_integer(
154 obj.patron.bills[i].balance_owed()
157 e.setAttribute('value',
158 util.money.cents_as_dollars( total )
163 'patron_checkouts' : [
167 e.setAttribute('value',
168 obj.patron.checkouts().length
177 //FIXME//Get Bill to do this correctly on server side
178 JSAN.use('util.date');
180 for (var i = 0; i < obj.patron.checkouts().length; i++) {
181 var item = obj.patron.checkouts()[i];
182 var due_date = item.circ.due_date();
183 due_date = due_date.substr(0,4)
184 + due_date.substr(5,2) + due_date.substr(8,2);
185 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
186 if (today > due_date) total++;
188 e.setAttribute('value',
198 e.setAttribute('value',
199 obj.patron.hold_requests.length
204 'patron_holds_available' : [
209 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
210 var hold = obj.patron.hold_requests()[i];
211 if (hold.capture_time()) total++;
213 e.setAttribute('value',
223 e.setAttribute('value',
224 obj.patron.card().barcode()
229 'patron_ident_type_1' : [
233 var ident_string = '';
234 var ident = obj.OpenILS.data.hash.cit[
235 obj.patron.ident_type()
237 if (ident) ident_string = ident.name()
238 e.setAttribute('value',
244 'patron_ident_value_1' : [
248 e.setAttribute('value',
249 obj.patron.ident_value()
254 'patron_ident_type_2' : [
258 var ident_string = '';
259 var ident = obj.OpenILS.data.hash.cit[
260 obj.patron.ident_type2()
262 if (ident) ident_string = ident.name()
263 e.setAttribute('value',
269 'patron_ident_value_2' : [
273 e.setAttribute('value',
274 obj.patron.ident_value2()
279 'patron_date_of_birth' : [
283 e.setAttribute('value',
289 'patron_day_phone' : [
293 e.setAttribute('value',
294 obj.patron.day_phone()
299 'patron_evening_phone' : [
303 e.setAttribute('value',
304 obj.patron.evening_phone()
309 'patron_other_phone' : [
313 e.setAttribute('value',
314 obj.patron.other_phone()
323 e.setAttribute('value',
329 'patron_photo_url' : [
333 e.setAttribute('src',
334 obj.patron.photo_url()
343 e.setAttribute('value',
344 obj.OpenILS.data.hash.aou[
348 e.setAttribute('tooltiptext',
349 obj.OpenILS.data.hash.aou[
356 'patron_last_library' : [
360 e.setAttribute('value',
361 obj.OpenILS.data.hash.aou[
365 e.setAttribute('tooltiptext',
366 obj.OpenILS.data.hash.aou[
373 'patron_mailing_address_street1' : [
377 e.setAttribute('value',
378 obj.patron.mailing_address().street1()
383 'patron_mailing_address_street2' : [
387 e.setAttribute('value',
388 obj.patron.mailing_address().street2()
393 'patron_mailing_address_city' : [
397 e.setAttribute('value',
398 obj.patron.mailing_address().city()
403 'patron_mailing_address_state' : [
407 e.setAttribute('value',
408 obj.patron.mailing_address().state()
413 'patron_mailing_address_post_code' : [
417 e.setAttribute('value',
418 obj.patron.mailing_address().post_code()
423 'patron_physical_address_street1' : [
427 e.setAttribute('value',
428 obj.patron.billing_address().street1()
433 'patron_physical_address_street2' : [
437 e.setAttribute('value',
438 obj.patron.billing_address().street2()
443 'patron_physical_address_city' : [
447 e.setAttribute('value',
448 obj.patron.billing_address().city()
453 'patron_physical_address_state' : [
457 e.setAttribute('value',
458 obj.patron.billing_address().state()
463 'patron_physical_address_post_code' : [
467 e.setAttribute('value',
468 obj.patron.billing_address().post_code()
481 'retrieve' : function() {
490 // Retrieve the patron
494 var patron = obj.network.request(
495 api.fm_au_retrieve_via_barcode.app,
496 api.fm_au_retrieve_via_barcode.method,
497 [ obj.session, obj.barcode ]
501 if (instanceOf(patron,au)) {
507 throw('patron is not an au fm object');
511 throw('patron == false');
515 var error = ('patron.display.retrieve : ' + js2JSON(E));
516 obj.error.sdump('D_ERROR',error);
522 // Retrieve the bills
526 var bills = obj.network.request(
527 api.fm_mobts_having_balance.app,
528 api.fm_mobts_having_balance.method,
529 [ obj.session, obj.patron.id() ]
531 //FIXME// obj.patron.bills( bills );
532 obj.patron.bills = bills;
534 var error = ('patron.display.retrieve : ' + js2JSON(E));
535 obj.error.sdump('D_ERROR',error);
541 // Retrieve the checkouts
545 var checkouts = obj.network.request(
546 api.blob_checkouts_retrieve.app,
547 api.blob_checkouts_retrieve.method,
548 [ obj.session, obj.patron.id() ]
550 obj.patron.checkouts( checkouts );
552 var error = ('patron.display.retrieve : ' + js2JSON(E));
553 obj.error.sdump('D_ERROR',error);
559 // Retrieve the holds
563 var holds = obj.network.request(
564 api.fm_ahr_retrieve.app,
565 api.fm_ahr_retrieve.method,
566 [ obj.session, obj.patron.id() ]
568 obj.patron.hold_requests( holds );
570 var error = ('patron.display.retrieve : ' + js2JSON(E));
571 obj.error.sdump('D_ERROR',error);
578 chain.push( function() { obj.controller.render(); } );
581 JSAN.use('util.exec'); obj.exec = new util.exec();
582 obj.exec.on_error = function(E) {
583 location.href = urls.remote_patron_barcode_entry + '?session=' + window.escape(obj.session);
584 alert('FIXME: Need better alert and error handling.\nProblem with barcode.\n' + E);
586 this.exec.chain( chain );
589 var error = ('patron.display.retrieve : ' + js2JSON(E));
590 this.error.sdump('D_ERROR',error);
596 dump('exiting patron/display.js\n');