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 ) {
17 obj.view = {}; obj.render_list = [];
19 obj.session = params['session'];
20 obj.barcode = params['barcode'];
22 JSAN.use('OpenILS.data'); this.OpenILS = {};
23 obj.OpenILS.data = new OpenILS.data( { 'session' : params.session } ); obj.OpenILS.data.init(true);
25 JSAN.use('util.deck'); obj.deck = new util.deck('patron_deck');
30 function() { alert('Not Yet Implemented'); }
32 'cmd_patron_refresh' : [
35 obj.view.patron_name.setAttribute('value','Retrieving...');
39 'cmd_patron_checkout' : [
42 obj.deck.set_iframe('data:text/html,<h1>Checkout Here</h1>');
43 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
46 'cmd_patron_items' : [
49 obj.deck.set_iframe('data:text/html,<h1>Items Here</h1>');
50 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
53 'cmd_patron_holds' : [
56 obj.deck.set_iframe('data:text/html,<h1>Holds Here</h1>');
57 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
60 'cmd_patron_bills' : [
63 obj.deck.set_iframe('data:text/html,<h1>Bills Here</h1>');
64 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
70 obj.deck.set_iframe('data:text/html,<h1>Edit Here</h1>');
71 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
77 obj.deck.set_iframe('data:text/html,<h1>Info Here</h1>');
78 dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
85 e.setAttribute('value',
86 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
88 e.setAttribute('style','background-color: lime');
89 //FIXME//bills should become a virtual field
90 if (obj.patron.bills.length > 0)
91 e.setAttribute('style','background-color: yellow');
92 if (obj.patron.standing() == 2)
93 e.setAttribute('style','background-color: lightred');
102 e.setAttribute('value',
103 obj.OpenILS.data.hash.pgt[
110 'patron_standing' : [
114 e.setAttribute('value',
115 obj.OpenILS.data.hash.cst[
116 obj.patron.standing()
126 JSAN.use('util.money');
127 e.setAttribute('value',
128 util.money.cents_as_dollars(
129 obj.patron.credit_forward_balance()
139 JSAN.use('util.money');
141 //FIXME//adjust when .bills becomes a virtual field
142 for (var i = 0; i < obj.patron.bills.length; i++) {
143 total += util.money.dollars_float_to_cents_integer(
144 obj.patron.bills[i].balance_owed()
147 e.setAttribute('value',
148 util.money.cents_as_dollars( total )
153 'patron_checkouts' : [
157 e.setAttribute('value',
158 obj.patron.checkouts.length
167 //FIXME//Get Bill to do this correctly on server side
168 JSAN.use('util.date');
170 for (var i = 0; i < obj.patron.checkouts().length; i++) {
171 var item = obj.patron.checkouts()[i];
172 var due_date = item.circ.due_date();
173 due_date = due_date.substr(0,4)
174 + due_date.substr(5,2) + due_date.substr(8,2);
175 var today = util.date.formatted_date( new Date() , '%Y%m%d' );
176 if (today > due_date) total++;
178 e.setAttribute('value',
188 e.setAttribute('value',
189 obj.patron.hold_requests.length
194 'patron_holds_available' : [
199 for (var i = 0; i < obj.patron.hold_requests().length; i++) {
200 var hold = obj.patron.hold_requests()[i];
201 if (hold.capture_time()) total++;
203 e.setAttribute('value',
213 e.setAttribute('value',
214 obj.patron.card().barcode()
219 'patron_ident_type_1' : [
223 var ident_string = '';
224 var ident = obj.OpenILS.data.hash.cit[
225 obj.patron.ident_type()
227 if (ident) ident_string = ident.name()
228 e.setAttribute('value',
234 'patron_ident_value_1' : [
238 e.setAttribute('value',
239 obj.patron.ident_value()
244 'patron_ident_type_2' : [
248 var ident_string = '';
249 var ident = obj.OpenILS.data.hash.cit[
250 obj.patron.ident_type2()
252 if (ident) ident_string = ident.name()
253 e.setAttribute('value',
259 'patron_ident_value_2' : [
263 e.setAttribute('value',
264 obj.patron.ident_value2()
269 'patron_date_of_birth' : [
273 e.setAttribute('value',
279 'patron_day_phone' : [
283 e.setAttribute('value',
284 obj.patron.day_phone()
289 'patron_evening_phone' : [
293 e.setAttribute('value',
294 obj.patron.evening_phone()
299 'patron_other_phone' : [
303 e.setAttribute('value',
304 obj.patron.other_phone()
313 e.setAttribute('value',
319 'patron_photo_url' : [
323 e.setAttribute('src',
324 obj.patron.photo_url()
333 e.setAttribute('value',
334 obj.OpenILS.data.hash.aou[
338 e.setAttribute('tooltiptext',
339 obj.OpenILS.data.hash.aou[
346 'patron_last_library' : [
350 e.setAttribute('value',
351 obj.OpenILS.data.hash.aou[
355 e.setAttribute('tooltiptext',
356 obj.OpenILS.data.hash.aou[
363 'patron_mailing_address_street1' : [
367 e.setAttribute('value',
368 obj.patron.mailing_address().street1()
373 'patron_mailing_address_street2' : [
377 e.setAttribute('value',
378 obj.patron.mailing_address().street2()
383 'patron_mailing_address_city' : [
387 e.setAttribute('value',
388 obj.patron.mailing_address().city()
393 'patron_mailing_address_state' : [
397 e.setAttribute('value',
398 obj.patron.mailing_address().state()
403 'patron_mailing_address_post_code' : [
407 e.setAttribute('value',
408 obj.patron.mailing_address().post_code()
413 'patron_physical_address_street1' : [
417 e.setAttribute('value',
418 obj.patron.billing_address().street1()
423 'patron_physical_address_street2' : [
427 e.setAttribute('value',
428 obj.patron.billing_address().street2()
433 'patron_physical_address_city' : [
437 e.setAttribute('value',
438 obj.patron.billing_address().city()
443 'patron_physical_address_state' : [
447 e.setAttribute('value',
448 obj.patron.billing_address().state()
453 'patron_physical_address_post_code' : [
457 e.setAttribute('value',
458 obj.patron.billing_address().post_code()
465 for (var i in control_map) {
466 var cmd = obj.w.document.getElementById(i);
468 for (var j in control_map[i][0]) {
469 if (control_map[i][1]) {
470 var ev_type = control_map[i][0][j];
473 obj.render_list.push( control_map[i][1](cmd) );
475 default: cmd.addEventListener(ev_type,control_map[i][1],false);
487 'retrieve' : function() {
496 // Retrieve the patron
500 var patron = obj.network.request(
502 'open-ils.actor.user.fleshed.retrieve_by_barcode',
503 [ obj.session, obj.barcode ]
507 if (instanceOf(patron,au)) {
513 throw('patron is not an au fm object');
517 throw('patron == false');
521 var error = ('patron.display.retrieve : ' + js2JSON(E));
522 obj.error.sdump('D_ERROR',error);
524 //FIXME// abort the chain
529 // Retrieve the bills
533 var bills = obj.network.request(
535 'open-ils.actor.user.transactions.have_balance',
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);
544 //FIXME// abort the chain
549 // Retrieve the checkouts
553 var checkouts = obj.network.request(
555 'open-ils.circ.actor.user.checked_out',
556 [ obj.session, obj.patron.id() ]
558 obj.patron.checkouts( checkouts );
560 var error = ('patron.display.retrieve : ' + js2JSON(E));
561 obj.error.sdump('D_ERROR',error);
563 //FIXME// abort the chain
568 // Retrieve the holds
572 var holds = obj.network.request(
574 'open-ils.circ.holds.retrieve',
575 [ obj.session, obj.patron.id() ]
577 obj.patron.hold_requests( holds );
579 var error = ('patron.display.retrieve : ' + js2JSON(E));
580 obj.error.sdump('D_ERROR',error);
582 //FIXME// abort the chain
588 chain.push( function() { obj.render(); } );
591 JSAN.use('util.exec');
592 util.exec.chain( chain );
595 var error = ('patron.display.retrieve : ' + js2JSON(E));
596 this.error.sdump('D_ERROR',error);
601 'render' : function() {
603 for (var i in this.render_list) {
605 this.render_list[i]();
607 var error = 'Problem in patron.display.render with\n' + this.render_list[i] + '\n\n' + js2JSON(E);
608 this.error.sdump('D_ERROR',error);
615 dump('exiting patron/display.js\n');