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(checkout) {
53 var c = obj.patron.checkouts();
55 obj.patron.checkouts( c );
56 obj.controller.render('patron_checkouts');
60 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
63 'cmd_patron_items' : [
66 obj.deck.set_iframe(urls.remote_patron_items);
67 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
70 'cmd_patron_holds' : [
73 obj.deck.set_iframe(urls.remote_patron_holds);
74 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
77 'cmd_patron_bills' : [
80 obj.deck.set_iframe(urls.remote_patron_bills);
81 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
87 obj.deck.set_iframe(urls.remote_patron_edit);
88 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
94 obj.deck.set_iframe(urls.remote_patron_info);
95 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
102 e.setAttribute('value',
103 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
105 e.setAttribute('style','background-color: lime');
106 //FIXME//bills should become a virtual field
107 if (obj.patron.bills.length > 0)
108 e.setAttribute('style','background-color: yellow');
109 if (obj.patron.standing() == 2)
110 e.setAttribute('style','background-color: lightred');
119 e.setAttribute('value',
120 obj.OpenILS.data.hash.pgt[
127 'patron_standing' : [
131 e.setAttribute('value',
132 obj.OpenILS.data.hash.cst[
133 obj.patron.standing()
143 JSAN.use('util.money');
144 e.setAttribute('value',
145 util.money.cents_as_dollars(
146 obj.patron.credit_forward_balance()
156 JSAN.use('util.money');
158 //FIXME//adjust when .bills becomes a virtual field
159 for (var i = 0; i < obj.patron.bills.length; i++) {
160 total += util.money.dollars_float_to_cents_integer(
161 obj.patron.bills[i].balance_owed()
164 e.setAttribute('value',
165 util.money.cents_as_dollars( total )
170 'patron_checkouts' : [
174 e.setAttribute('value',
175 obj.patron.checkouts().length
184 //FIXME//Get Bill to do this correctly on server side
185 JSAN.use('util.date');
187 for (var i = 0; i < obj.patron.checkouts().length; i++) {
188 var item = obj.patron.checkouts()[i];
189 var due_date = item.circ.due_date();
190 due_date = due_date.substr(0,4)
191 + due_date.substr(5,2) + due_date.substr(8,2);
192 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
193 if (today > due_date) total++;
195 e.setAttribute('value',
205 e.setAttribute('value',
206 obj.patron.hold_requests.length
211 'patron_holds_available' : [
216 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
217 var hold = obj.patron.hold_requests()[i];
218 if (hold.capture_time()) total++;
220 e.setAttribute('value',
230 e.setAttribute('value',
231 obj.patron.card().barcode()
236 'patron_ident_type_1' : [
240 var ident_string = '';
241 var ident = obj.OpenILS.data.hash.cit[
242 obj.patron.ident_type()
244 if (ident) ident_string = ident.name()
245 e.setAttribute('value',
251 'patron_ident_value_1' : [
255 e.setAttribute('value',
256 obj.patron.ident_value()
261 'patron_ident_type_2' : [
265 var ident_string = '';
266 var ident = obj.OpenILS.data.hash.cit[
267 obj.patron.ident_type2()
269 if (ident) ident_string = ident.name()
270 e.setAttribute('value',
276 'patron_ident_value_2' : [
280 e.setAttribute('value',
281 obj.patron.ident_value2()
286 'patron_date_of_birth' : [
290 e.setAttribute('value',
296 'patron_day_phone' : [
300 e.setAttribute('value',
301 obj.patron.day_phone()
306 'patron_evening_phone' : [
310 e.setAttribute('value',
311 obj.patron.evening_phone()
316 'patron_other_phone' : [
320 e.setAttribute('value',
321 obj.patron.other_phone()
330 e.setAttribute('value',
336 'patron_photo_url' : [
340 e.setAttribute('src',
341 obj.patron.photo_url()
350 e.setAttribute('value',
351 obj.OpenILS.data.hash.aou[
355 e.setAttribute('tooltiptext',
356 obj.OpenILS.data.hash.aou[
363 'patron_last_library' : [
367 e.setAttribute('value',
368 obj.OpenILS.data.hash.aou[
372 e.setAttribute('tooltiptext',
373 obj.OpenILS.data.hash.aou[
380 'patron_mailing_address_street1' : [
384 e.setAttribute('value',
385 obj.patron.mailing_address().street1()
390 'patron_mailing_address_street2' : [
394 e.setAttribute('value',
395 obj.patron.mailing_address().street2()
400 'patron_mailing_address_city' : [
404 e.setAttribute('value',
405 obj.patron.mailing_address().city()
410 'patron_mailing_address_state' : [
414 e.setAttribute('value',
415 obj.patron.mailing_address().state()
420 'patron_mailing_address_post_code' : [
424 e.setAttribute('value',
425 obj.patron.mailing_address().post_code()
430 'patron_physical_address_street1' : [
434 e.setAttribute('value',
435 obj.patron.billing_address().street1()
440 'patron_physical_address_street2' : [
444 e.setAttribute('value',
445 obj.patron.billing_address().street2()
450 'patron_physical_address_city' : [
454 e.setAttribute('value',
455 obj.patron.billing_address().city()
460 'patron_physical_address_state' : [
464 e.setAttribute('value',
465 obj.patron.billing_address().state()
470 'patron_physical_address_post_code' : [
474 e.setAttribute('value',
475 obj.patron.billing_address().post_code()
488 'retrieve' : function() {
497 // Retrieve the patron
501 var patron = obj.network.request(
502 api.fm_au_retrieve_via_barcode.app,
503 api.fm_au_retrieve_via_barcode.method,
504 [ obj.session, obj.barcode ]
508 if (instanceOf(patron,au)) {
514 throw('patron is not an au fm object');
518 throw('patron == false');
522 var error = ('patron.display.retrieve : ' + js2JSON(E));
523 obj.error.sdump('D_ERROR',error);
529 // Retrieve the bills
533 var bills = obj.network.request(
534 api.fm_mobts_having_balance.app,
535 api.fm_mobts_having_balance.method,
536 [ obj.session, obj.patron.id() ]
538 //FIXME// obj.patron.bills( bills );
539 obj.patron.bills = bills;
541 var error = ('patron.display.retrieve : ' + js2JSON(E));
542 obj.error.sdump('D_ERROR',error);
548 // Retrieve the checkouts
552 var checkouts = obj.network.request(
553 api.blob_checkouts_retrieve.app,
554 api.blob_checkouts_retrieve.method,
555 [ obj.session, obj.patron.id() ]
557 obj.patron.checkouts( checkouts );
559 var error = ('patron.display.retrieve : ' + js2JSON(E));
560 obj.error.sdump('D_ERROR',error);
566 // Retrieve the holds
570 var holds = obj.network.request(
571 api.fm_ahr_retrieve.app,
572 api.fm_ahr_retrieve.method,
573 [ obj.session, obj.patron.id() ]
575 obj.patron.hold_requests( holds );
577 var error = ('patron.display.retrieve : ' + js2JSON(E));
578 obj.error.sdump('D_ERROR',error);
585 chain.push( function() { obj.controller.render(); } );
588 JSAN.use('util.exec'); obj.exec = new util.exec();
589 obj.exec.on_error = function(E) {
590 location.href = urls.remote_patron_barcode_entry + '?session=' + window.escape(obj.session);
591 alert('FIXME: Need better alert and error handling.\nProblem with barcode.\n' + E);
593 this.exec.chain( chain );
596 var error = ('patron.display.retrieve : ' + js2JSON(E));
597 this.error.sdump('D_ERROR',error);
603 dump('exiting patron/display.js\n');