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' : [
47 '/xul/server/circ/checkout.xul?session='
48 + window.escape( obj.session )
50 + window.escape( obj.patron.id() )
52 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
55 'cmd_patron_items' : [
58 obj.deck.set_iframe('data:text/html,<h1>Items Here</h1>');
59 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
62 'cmd_patron_holds' : [
65 obj.deck.set_iframe('data:text/html,<h1>Holds Here</h1>');
66 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
69 'cmd_patron_bills' : [
72 obj.deck.set_iframe('data:text/html,<h1>Bills Here</h1>');
73 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
79 obj.deck.set_iframe('data:text/html,<h1>Edit Here</h1>');
80 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
86 obj.deck.set_iframe('data:text/html,<h1>Info Here</h1>');
87 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
94 e.setAttribute('value',
95 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
97 e.setAttribute('style','background-color: lime');
98 //FIXME//bills should become a virtual field
99 if (obj.patron.bills.length > 0)
100 e.setAttribute('style','background-color: yellow');
101 if (obj.patron.standing() == 2)
102 e.setAttribute('style','background-color: lightred');
111 e.setAttribute('value',
112 obj.OpenILS.data.hash.pgt[
119 'patron_standing' : [
123 e.setAttribute('value',
124 obj.OpenILS.data.hash.cst[
125 obj.patron.standing()
135 JSAN.use('util.money');
136 e.setAttribute('value',
137 util.money.cents_as_dollars(
138 obj.patron.credit_forward_balance()
148 JSAN.use('util.money');
150 //FIXME//adjust when .bills becomes a virtual field
151 for (var i = 0; i < obj.patron.bills.length; i++) {
152 total += util.money.dollars_float_to_cents_integer(
153 obj.patron.bills[i].balance_owed()
156 e.setAttribute('value',
157 util.money.cents_as_dollars( total )
162 'patron_checkouts' : [
166 e.setAttribute('value',
167 obj.patron.checkouts().length
176 //FIXME//Get Bill to do this correctly on server side
177 JSAN.use('util.date');
179 for (var i = 0; i < obj.patron.checkouts().length; i++) {
180 var item = obj.patron.checkouts()[i];
181 var due_date = item.circ.due_date();
182 due_date = due_date.substr(0,4)
183 + due_date.substr(5,2) + due_date.substr(8,2);
184 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
185 if (today > due_date) total++;
187 e.setAttribute('value',
197 e.setAttribute('value',
198 obj.patron.hold_requests.length
203 'patron_holds_available' : [
208 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
209 var hold = obj.patron.hold_requests()[i];
210 if (hold.capture_time()) total++;
212 e.setAttribute('value',
222 e.setAttribute('value',
223 obj.patron.card().barcode()
228 'patron_ident_type_1' : [
232 var ident_string = '';
233 var ident = obj.OpenILS.data.hash.cit[
234 obj.patron.ident_type()
236 if (ident) ident_string = ident.name()
237 e.setAttribute('value',
243 'patron_ident_value_1' : [
247 e.setAttribute('value',
248 obj.patron.ident_value()
253 'patron_ident_type_2' : [
257 var ident_string = '';
258 var ident = obj.OpenILS.data.hash.cit[
259 obj.patron.ident_type2()
261 if (ident) ident_string = ident.name()
262 e.setAttribute('value',
268 'patron_ident_value_2' : [
272 e.setAttribute('value',
273 obj.patron.ident_value2()
278 'patron_date_of_birth' : [
282 e.setAttribute('value',
288 'patron_day_phone' : [
292 e.setAttribute('value',
293 obj.patron.day_phone()
298 'patron_evening_phone' : [
302 e.setAttribute('value',
303 obj.patron.evening_phone()
308 'patron_other_phone' : [
312 e.setAttribute('value',
313 obj.patron.other_phone()
322 e.setAttribute('value',
328 'patron_photo_url' : [
332 e.setAttribute('src',
333 obj.patron.photo_url()
342 e.setAttribute('value',
343 obj.OpenILS.data.hash.aou[
347 e.setAttribute('tooltiptext',
348 obj.OpenILS.data.hash.aou[
355 'patron_last_library' : [
359 e.setAttribute('value',
360 obj.OpenILS.data.hash.aou[
364 e.setAttribute('tooltiptext',
365 obj.OpenILS.data.hash.aou[
372 'patron_mailing_address_street1' : [
376 e.setAttribute('value',
377 obj.patron.mailing_address().street1()
382 'patron_mailing_address_street2' : [
386 e.setAttribute('value',
387 obj.patron.mailing_address().street2()
392 'patron_mailing_address_city' : [
396 e.setAttribute('value',
397 obj.patron.mailing_address().city()
402 'patron_mailing_address_state' : [
406 e.setAttribute('value',
407 obj.patron.mailing_address().state()
412 'patron_mailing_address_post_code' : [
416 e.setAttribute('value',
417 obj.patron.mailing_address().post_code()
422 'patron_physical_address_street1' : [
426 e.setAttribute('value',
427 obj.patron.billing_address().street1()
432 'patron_physical_address_street2' : [
436 e.setAttribute('value',
437 obj.patron.billing_address().street2()
442 'patron_physical_address_city' : [
446 e.setAttribute('value',
447 obj.patron.billing_address().city()
452 'patron_physical_address_state' : [
456 e.setAttribute('value',
457 obj.patron.billing_address().state()
462 'patron_physical_address_post_code' : [
466 e.setAttribute('value',
467 obj.patron.billing_address().post_code()
480 'retrieve' : function() {
489 // Retrieve the patron
493 var patron = obj.network.request(
495 'open-ils.actor.user.fleshed.retrieve_by_barcode',
496 [ obj.session, obj.barcode ]
500 if (instanceOf(patron,au)) {
506 throw('patron is not an au fm object');
510 throw('patron == false');
514 var error = ('patron.display.retrieve : ' + js2JSON(E));
515 obj.error.sdump('D_ERROR',error);
521 // Retrieve the bills
525 var bills = obj.network.request(
527 'open-ils.actor.user.transactions.have_balance',
528 [ obj.session, obj.patron.id() ]
530 //FIXME// obj.patron.bills( bills );
531 obj.patron.bills = bills;
533 var error = ('patron.display.retrieve : ' + js2JSON(E));
534 obj.error.sdump('D_ERROR',error);
540 // Retrieve the checkouts
544 var checkouts = obj.network.request(
546 'open-ils.circ.actor.user.checked_out',
547 [ obj.session, obj.patron.id() ]
549 obj.patron.checkouts( checkouts );
551 var error = ('patron.display.retrieve : ' + js2JSON(E));
552 obj.error.sdump('D_ERROR',error);
558 // Retrieve the holds
562 var holds = obj.network.request(
564 'open-ils.circ.holds.retrieve',
565 [ obj.session, obj.patron.id() ]
567 obj.patron.hold_requests( holds );
569 var error = ('patron.display.retrieve : ' + js2JSON(E));
570 obj.error.sdump('D_ERROR',error);
577 chain.push( function() { obj.controller.render(); } );
580 JSAN.use('util.exec'); obj.exec = new util.exec();
581 obj.exec.on_error = function(E) {
582 location.href = '/xul/server/patron/patron_barcode_entry.xul?session=' + window.escape(obj.session);
583 alert('FIXME: Need better alert and error handling.\nProblem with barcode.\n' + E);
585 this.exec.chain( chain );
588 var error = ('patron.display.retrieve : ' + js2JSON(E));
589 this.error.sdump('D_ERROR',error);
595 dump('exiting patron/display.js\n');