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 ) {
16 this.session = params['session'];
17 this.barcode = params['barcode'];
19 JSAN.use('OpenILS.data'); this.OpenILS = {};
20 this.OpenILS.data = new OpenILS.data( { 'session' : params.session } ); this.OpenILS.data.init(true);
23 obj.view = {}; obj.render_list = [];
28 function() { alert('Not Yet Implemented'); }
34 e.setAttribute('value',
35 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
37 e.setAttribute('style','background-color: lime');
38 //FIXME//bills should become a virtual field
39 if (obj.patron.bills.length > 0)
40 e.setAttribute('style','background-color: yellow');
41 if (obj.patron.standing() == 2)
42 e.setAttribute('style','background-color: lightred');
51 e.setAttribute('value',
52 obj.OpenILS.data.hash.pgt[
63 e.setAttribute('value',
64 obj.OpenILS.data.hash.cst[
75 JSAN.use('util.money');
76 e.setAttribute('value',
77 util.money.cents_as_dollars(
78 obj.patron.credit_forward_balance()
88 JSAN.use('util.money');
90 //FIXME//adjust when .bills becomes a virtual field
91 for (var i = 0; i < obj.patron.bills.length; i++) {
92 total += util.money.dollars_float_to_cents_integer(
93 obj.patron.bills[i].balance_owed()
96 e.setAttribute('value',
97 util.money.cents_as_dollars( total )
102 'patron_checkouts' : [
106 e.setAttribute('value',
107 obj.patron.checkouts.length
116 //FIXME//Get Bill to do this correctly on server side
117 JSAN.use('util.date');
119 for (var i = 0; i < obj.patron.checkouts().length; i++) {
120 var item = obj.patron.checkouts()[i];
121 var due_date = item.circ.due_date();
122 due_date = due_date.substr(0,4)
123 + due_date.substr(5,2) + due_date.substr(8,2);
124 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
125 if (today > due_date) total++;
127 e.setAttribute('value',
137 e.setAttribute('value',
138 obj.patron.hold_requests.length
143 'patron_holds_available' : [
148 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
149 var hold = obj.patron.hold_requests()[i];
150 if (hold.capture_time()) total++;
152 e.setAttribute('value',
162 e.setAttribute('value',
163 obj.patron.card().barcode()
168 'patron_ident_type_1' : [
172 var ident_string = '';
173 var ident = obj.OpenILS.data.hash.cit[
174 obj.patron.ident_type()
176 if (ident) ident_string = ident.name()
177 e.setAttribute('value',
183 'patron_ident_value_1' : [
187 e.setAttribute('value',
188 obj.patron.ident_value()
193 'patron_ident_type_2' : [
197 var ident_string = '';
198 var ident = obj.OpenILS.data.hash.cit[
199 obj.patron.ident_type2()
201 if (ident) ident_string = ident.name()
202 e.setAttribute('value',
208 'patron_ident_value_2' : [
212 e.setAttribute('value',
213 obj.patron.ident_value2()
218 'patron_date_of_birth' : [
222 e.setAttribute('value',
228 'patron_day_phone' : [
232 e.setAttribute('value',
233 obj.patron.day_phone()
238 'patron_evening_phone' : [
242 e.setAttribute('value',
243 obj.patron.evening_phone()
248 'patron_other_phone' : [
252 e.setAttribute('value',
253 obj.patron.other_phone()
262 e.setAttribute('value',
268 'patron_photo_url' : [
272 e.setAttribute('src',
273 obj.patron.photo_url()
282 e.setAttribute('value',
283 obj.OpenILS.data.hash.aou[
287 e.setAttribute('tooltiptext',
288 obj.OpenILS.data.hash.aou[
295 'patron_last_library' : [
299 e.setAttribute('value',
300 obj.OpenILS.data.hash.aou[
304 e.setAttribute('tooltiptext',
305 obj.OpenILS.data.hash.aou[
312 'patron_mailing_address_street1' : [
316 e.setAttribute('value',
317 obj.patron.mailing_address().street1()
322 'patron_mailing_address_street2' : [
326 e.setAttribute('value',
327 obj.patron.mailing_address().street2()
332 'patron_mailing_address_city' : [
336 e.setAttribute('value',
337 obj.patron.mailing_address().city()
342 'patron_mailing_address_state' : [
346 e.setAttribute('value',
347 obj.patron.mailing_address().state()
352 'patron_mailing_address_post_code' : [
356 e.setAttribute('value',
357 obj.patron.mailing_address().post_code()
362 'patron_physical_address_street1' : [
366 e.setAttribute('value',
367 obj.patron.billing_address().street1()
372 'patron_physical_address_street2' : [
376 e.setAttribute('value',
377 obj.patron.billing_address().street2()
382 'patron_physical_address_city' : [
386 e.setAttribute('value',
387 obj.patron.billing_address().city()
392 'patron_physical_address_state' : [
396 e.setAttribute('value',
397 obj.patron.billing_address().state()
402 'patron_physical_address_post_code' : [
406 e.setAttribute('value',
407 obj.patron.billing_address().post_code()
414 for (var i in control_map) {
415 var cmd = this.w.document.getElementById(i);
417 for (var j in control_map[i][0]) {
418 if (control_map[i][1]) {
419 var ev_type = control_map[i][0][j];
422 obj.render_list.push( control_map[i][1](cmd) );
424 default: cmd.addEventListener(ev_type,control_map[i][1],false);
436 'retrieve' : function() {
445 // Retrieve the patron
449 var patron = obj.network.request(
451 'open-ils.actor.user.fleshed.retrieve_by_barcode',
452 [ obj.session, obj.barcode ]
456 if (instanceOf(patron,au)) {
462 throw('patron is not an au fm object');
466 throw('patron == false');
470 var error = ('patron.display.retrieve : ' + js2JSON(E));
471 obj.error.sdump('D_ERROR',error);
473 //FIXME// abort the chain
478 // Retrieve the bills
482 var bills = obj.network.request(
484 'open-ils.actor.user.transactions.have_balance',
485 [ obj.session, obj.patron.id() ]
487 //FIXME// obj.patron.bills( bills );
488 obj.patron.bills = bills;
490 var error = ('patron.display.retrieve : ' + js2JSON(E));
491 obj.error.sdump('D_ERROR',error);
493 //FIXME// abort the chain
498 // Retrieve the checkouts
502 var checkouts = obj.network.request(
504 'open-ils.circ.actor.user.checked_out',
505 [ obj.session, obj.patron.id() ]
507 obj.patron.checkouts( checkouts );
509 var error = ('patron.display.retrieve : ' + js2JSON(E));
510 obj.error.sdump('D_ERROR',error);
512 //FIXME// abort the chain
517 // Retrieve the holds
521 var holds = obj.network.request(
523 'open-ils.circ.holds.retrieve',
524 [ obj.session, obj.patron.id() ]
526 obj.patron.hold_requests( holds );
528 var error = ('patron.display.retrieve : ' + js2JSON(E));
529 obj.error.sdump('D_ERROR',error);
531 //FIXME// abort the chain
537 chain.push( function() { obj.render(); } );
540 JSAN.use('util.exec');
541 util.exec.chain( chain );
544 var error = ('patron.display.retrieve : ' + js2JSON(E));
545 this.error.sdump('D_ERROR',error);
550 'render' : function() {
552 for (var i in this.render_list) {
554 this.render_list[i]();
556 var error = 'Problem in patron.display.render with\n' + this.render_list[i] + '\n\n' + js2JSON(E);
557 this.error.sdump('D_ERROR',error);
564 dump('exiting patron/display.js\n');