1 dump('entering patron.summary.js\n');
3 if (typeof patron == 'undefined') patron = {};
4 patron.summary = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.window'); this.window = new util.window();
8 JSAN.use('util.network'); this.network = new util.network();
12 patron.summary.prototype = {
14 'init' : function( params ) {
18 obj.session = params['session'];
19 obj.barcode = params['barcode'];
20 obj.id = params['id'];
22 JSAN.use('OpenILS.data'); this.OpenILS = {};
23 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
25 JSAN.use('util.controller'); obj.controller = new util.controller();
31 function() { alert('Not Yet Implemented'); }
37 JSAN.use('util.widgets');
38 util.widgets.remove_children( e );
39 if (obj.patron.alert_message()) {
41 document.createTextNode(
42 obj.patron.alert_message()
45 e.parentNode.hidden = false;
47 e.parentNode.hidden = true;
56 e.setAttribute('value',obj.patron.usrname());
64 e.setAttribute('value',
65 obj.patron.family_name() + ', ' + obj.patron.first_given_name()
67 e.setAttribute('style','background-color: lime');
68 //FIXME//bills should become a virtual field
69 if (obj.patron.bills > 0)
70 e.setAttribute('style','background-color: yellow');
71 if (obj.patron.standing() == 2)
72 e.setAttribute('style','background-color: lightred');
81 e.setAttribute('value',
82 obj.OpenILS.data.hash.pgt[
93 e.setAttribute('value',
94 obj.OpenILS.data.hash.cst[
98 var e2 = document.getElementById('patron_standing_penalties');
99 JSAN.use('util.widgets');
100 util.widgets.remove_children(e2);
101 var penalties = obj.patron.standing_penalties();
102 for (var i = 0; i < penalties.length; i++) {
103 var x = document.createElement('label');
104 x.setAttribute('value',penalties[i].penalty_type());
114 JSAN.use('util.money');
115 e.setAttribute('value',
117 obj.patron.credit_forward_balance()
127 e.setAttribute('value','...');
128 obj.network.simple_request(
129 'FM_MOBTS_TOTAL_HAVING_BALANCE',
130 [ obj.session, obj.patron.id() ],
132 JSAN.use('util.money');
133 e.setAttribute('value',
135 req.getResultObject()
143 'patron_checkouts' : [
147 e.setAttribute('value','...');
148 var e2 = document.getElementById(
151 if (e2) e2.setAttribute('value','...');
152 obj.network.simple_request(
153 'FM_CIRC_COUNT_RETRIEVE_VIA_USER',
154 [ obj.session, obj.patron.id() ],
156 e.setAttribute('value',
157 req.getResultObject().total
159 if (e2) e2.setAttribute('value',
160 req.getResultObject().overdue
171 /* handled by 'patron_checkouts' */
179 e.setAttribute('value','...');
180 var e2 = document.getElementById('patron_holds_available');
181 if (e2) e2.setAttribute('value','...');
182 obj.network.simple_request(
183 'FM_AHR_COUNT_RETRIEVE',
184 [ obj.session, obj.patron.id() ],
186 e.setAttribute('value',
187 req.getResultObject().total
189 if (e2) e2.setAttribute('value',
190 req.getResultObject().ready
197 'patron_holds_available' : [
201 /* handled by 'patron_holds' */
209 e.setAttribute('value',
210 obj.patron.card().barcode()
215 'patron_ident_type_1' : [
219 var ident_string = '';
220 var ident = obj.OpenILS.data.hash.cit[
221 obj.patron.ident_type()
223 if (ident) ident_string = ident.name()
224 e.setAttribute('value',
230 'patron_ident_value_1' : [
234 e.setAttribute('value',
235 obj.patron.ident_value()
240 'patron_ident_type_2' : [
244 var ident_string = '';
245 var ident = obj.OpenILS.data.hash.cit[
246 obj.patron.ident_type2()
248 if (ident) ident_string = ident.name()
249 e.setAttribute('value',
255 'patron_ident_value_2' : [
259 e.setAttribute('value',
260 obj.patron.ident_value2()
265 'patron_date_of_birth' : [
269 e.setAttribute('value',
275 'patron_day_phone' : [
279 e.setAttribute('value',
280 obj.patron.day_phone()
285 'patron_evening_phone' : [
289 e.setAttribute('value',
290 obj.patron.evening_phone()
295 'patron_other_phone' : [
299 e.setAttribute('value',
300 obj.patron.other_phone()
309 e.setAttribute('value',
315 'patron_photo_url' : [
319 e.setAttribute('src',
320 obj.patron.photo_url()
329 e.setAttribute('value',
330 obj.OpenILS.data.hash.aou[
334 e.setAttribute('tooltiptext',
335 obj.OpenILS.data.hash.aou[
342 'patron_last_library' : [
346 e.setAttribute('value',
347 obj.OpenILS.data.hash.aou[
351 e.setAttribute('tooltiptext',
352 obj.OpenILS.data.hash.aou[
359 'patron_mailing_address_street1' : [
363 e.setAttribute('value',
364 obj.patron.mailing_address().street1()
369 'patron_mailing_address_street2' : [
373 e.setAttribute('value',
374 obj.patron.mailing_address().street2()
379 'patron_mailing_address_city' : [
383 e.setAttribute('value',
384 obj.patron.mailing_address().city()
389 'patron_mailing_address_state' : [
393 e.setAttribute('value',
394 obj.patron.mailing_address().state()
399 'patron_mailing_address_post_code' : [
403 e.setAttribute('value',
404 obj.patron.mailing_address().post_code()
409 'patron_physical_address_street1' : [
413 e.setAttribute('value',
414 obj.patron.billing_address().street1()
419 'patron_physical_address_street2' : [
423 e.setAttribute('value',
424 obj.patron.billing_address().street2()
429 'patron_physical_address_city' : [
433 e.setAttribute('value',
434 obj.patron.billing_address().city()
439 'patron_physical_address_state' : [
443 e.setAttribute('value',
444 obj.patron.billing_address().state()
449 'patron_physical_address_post_code' : [
453 e.setAttribute('value',
454 obj.patron.billing_address().post_code()
467 'retrieve' : function() {
475 // Retrieve the patron
480 if (obj.barcode && obj.barcode != 'null') {
481 robj = obj.network.request(
482 api.FM_AU_RETRIEVE_VIA_BARCODE.app,
483 api.FM_AU_RETRIEVE_VIA_BARCODE.method,
484 [ obj.session, obj.barcode ]
486 } else if (obj.id && obj.id != 'null') {
487 robj = obj.network.simple_request(
488 'FM_AU_RETRIEVE_VIA_ID',
489 [ obj.session, obj.id ]
492 throw('summary: No barcode or id');
496 if (instanceOf(robj,au)) {
499 JSAN.use('patron.util');
500 patron.util.set_penalty_css(obj.patron);
502 } else if (typeof robj.ilsevent != 'undefined') {
504 if (robj.ilsevent == 0) {
506 // are we moving toward a payload here?
509 var error = robj.ilsevent + ' : '
510 + obj.error.get_ilsevent( robj.ilsevent );
515 throw('result is not an au fm object');
519 throw('result == false');
523 var error = ('patron.summary.retrieve : ' + js2JSON(E));
524 obj.error.sdump('D_ERROR',error);
531 // Retrieve the survey responses for required surveys
535 var surveys = obj.OpenILS.data.list.my_asv;
536 var survey_responses = {};
537 for (var i = 0; i < surveys.length; i++) {
538 var s = obj.network.request(
539 api.FM_ASVR_RETRIEVE.app,
540 api.FM_ASVR_RETRIEVE.method,
541 [ obj.session, surveys[i].id(), obj.patron.id() ]
543 survey_responses[ surveys[i].id() ] = s;
545 obj.patron.survey_responses( survey_responses );
547 var error = ('patron.summary.retrieve : ' + js2JSON(E));
548 obj.error.sdump('D_ERROR',error);
556 chain.push( function() { obj.controller.render(); } );
560 chain.push( function() {
562 if (typeof window.xulG == 'object' && typeof window.xulG.on_finished == 'function') {
563 obj.error.sdump('D_PATRON_SUMMARY',
564 'patron.summary: Calling external .on_finished()\n');
565 window.xulG.on_finished(obj.patron);
567 obj.error.sdump('D_PATRON_SUMMARY','patron.summary: No external .on_finished()\n');
573 JSAN.use('util.exec'); obj.exec = new util.exec();
574 obj.exec.on_error = function(E) {
575 //location.href = urls.XUL_PATRON_BARCODE_ENTRY + '?session=' + window.escape(obj.session);
576 obj.patron = new au();
577 obj.patron.checkouts( [] );
578 obj.patron.hold_requests( [] );
579 obj.patron.bills = [];
580 var home_ou = new aou();
581 obj.patron.home_ou( home_ou );
582 var card = new ac(); card.barcode( obj.barcode );
583 obj.patron.card( card );
584 obj.patron.family_name( 'Could not retrieve patron' );
585 var error = ('FIXME: Need better alert and error handling.\nProblem with barcode: '
586 + obj.barcode + '\n' + E);
588 if (typeof window.xulG == 'object' && typeof window.xulG.on_error == 'function') {
589 obj.error.sdump('D_PATRON_SUMMARY',
590 'patron.summary: Calling external .on_error()\n');
591 window.xulG.on_error(error);
593 obj.error.sdump('D_PATRON_SUMMARY','patron.summary: No external .on_error()\n');
597 this.exec.chain( chain );
600 var error = ('patron.summary.retrieve : ' + js2JSON(E));
601 this.error.sdump('D_ERROR',error);
602 if (typeof window.xulG == 'object' && typeof window.xulG.on_error == 'function') {
603 window.xulG.on_error(error);
611 dump('exiting patron.summary.js\n');