JSAN.use('OpenILS.data'); this.OpenILS = {};
obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
- JSAN.use('util.deck'); obj.deck = new util.deck('patron_deck');
+ JSAN.use('util.deck');
+ obj.right_deck = new util.deck('patron_right_deck');
+ obj.left_deck = new util.deck('patron_left_deck');
JSAN.use('main.controller'); obj.controller = new main.controller();
obj.controller.init(
'cmd_patron_checkout' : [
['command'],
function(ev) {
- obj.deck.set_iframe(
+ obj.right_deck.set_iframe(
urls.remote_checkout
+ '?session=' + window.escape( obj.session )
+ '&patron_id=' + window.escape( obj.patron.id() ),
}
}
);
- dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
+ dump('obj.right_deck.node.childNodes.length = ' + obj.right_deck.node.childNodes.length + '\n');
}
],
'cmd_patron_items' : [
['command'],
function(ev) {
- obj.deck.set_iframe(urls.remote_patron_items);
- dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
+ obj.right_deck.set_iframe(urls.remote_patron_items);
+ dump('obj.right_deck.node.childNodes.length = ' + obj.right_deck.node.childNodes.length + '\n');
}
],
'cmd_patron_holds' : [
['command'],
function(ev) {
- obj.deck.set_iframe(urls.remote_patron_holds);
- dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
+ obj.right_deck.set_iframe(urls.remote_patron_holds);
+ dump('obj.right_deck.node.childNodes.length = ' + obj.right_deck.node.childNodes.length + '\n');
}
],
'cmd_patron_bills' : [
['command'],
function(ev) {
- obj.deck.set_iframe(urls.remote_patron_bills);
- dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
+ obj.right_deck.set_iframe(urls.remote_patron_bills);
+ dump('obj.right_deck.node.childNodes.length = ' + obj.right_deck.node.childNodes.length + '\n');
}
],
'cmd_patron_edit' : [
['command'],
function(ev) {
- obj.deck.set_iframe(urls.remote_patron_edit);
- dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
+ obj.right_deck.set_iframe(urls.remote_patron_edit);
+ dump('obj.right_deck.node.childNodes.length = ' + obj.right_deck.node.childNodes.length + '\n');
}
],
'cmd_patron_info' : [
['command'],
function(ev) {
- obj.deck.set_iframe(urls.remote_patron_info);
- dump('obj.deck.node.childNodes.length = ' + obj.deck.node.childNodes.length + '\n');
+ obj.right_deck.set_iframe(urls.remote_patron_info);
+ dump('obj.right_deck.node.childNodes.length = ' + obj.right_deck.node.childNodes.length + '\n');
}
],
'patron_name' : [
};
}
],
- 'patron_profile' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.OpenILS.data.hash.pgt[
- obj.patron.profile()
- ].name()
- );
- };
- }
- ],
- 'patron_standing' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.OpenILS.data.hash.cst[
- obj.patron.standing()
- ].value()
- );
- };
- }
- ],
- 'patron_credit' : [
- ['render'],
- function(e) {
- return function() {
- JSAN.use('util.money');
- e.setAttribute('value',
- util.money.cents_as_dollars(
- obj.patron.credit_forward_balance()
- )
- );
- };
- }
- ],
- 'patron_bill' : [
- ['render'],
- function(e) {
- return function() {
- JSAN.use('util.money');
- var total = 0;
- //FIXME//adjust when .bills becomes a virtual field
- for (var i = 0; i < obj.patron.bills.length; i++) {
- total += util.money.dollars_float_to_cents_integer(
- obj.patron.bills[i].balance_owed()
- );
- }
- e.setAttribute('value',
- util.money.cents_as_dollars( total )
- );
- };
- }
- ],
- 'patron_checkouts' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.checkouts().length
- );
- };
- }
- ],
- 'patron_overdue' : [
- ['render'],
- function(e) {
- return function() {
- //FIXME//Get Bill to do this correctly on server side
- JSAN.use('util.date');
- var total = 0;
- for (var i = 0; i < obj.patron.checkouts().length; i++) {
- var item = obj.patron.checkouts()[i];
- var due_date = item.circ.due_date();
- due_date = due_date.substr(0,4)
- + due_date.substr(5,2) + due_date.substr(8,2);
- var today = util.date.formatted_date( new Date() , '%Y%m%d' );
- if (today > due_date) total++;
- }
- e.setAttribute('value',
- total
- );
- };
- }
- ],
- 'patron_holds' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.hold_requests.length
- );
- };
- }
- ],
- 'patron_holds_available' : [
- ['render'],
- function(e) {
- return function() {
- var total = 0;
- for (var i = 0; i < obj.patron.hold_requests().length; i++) {
- var hold = obj.patron.hold_requests()[i];
- if (hold.capture_time()) total++;
- }
- e.setAttribute('value',
- total
- );
- };
- }
- ],
- 'patron_card' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.card().barcode()
- );
- };
- }
- ],
- 'patron_ident_type_1' : [
- ['render'],
- function(e) {
- return function() {
- var ident_string = '';
- var ident = obj.OpenILS.data.hash.cit[
- obj.patron.ident_type()
- ];
- if (ident) ident_string = ident.name()
- e.setAttribute('value',
- ident_string
- );
- };
- }
- ],
- 'patron_ident_value_1' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.ident_value()
- );
- };
- }
- ],
- 'patron_ident_type_2' : [
- ['render'],
- function(e) {
- return function() {
- var ident_string = '';
- var ident = obj.OpenILS.data.hash.cit[
- obj.patron.ident_type2()
- ];
- if (ident) ident_string = ident.name()
- e.setAttribute('value',
- ident_string
- );
- };
- }
- ],
- 'patron_ident_value_2' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.ident_value2()
- );
- };
- }
- ],
- 'patron_date_of_birth' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.dob()
- );
- };
- }
- ],
- 'patron_day_phone' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.day_phone()
- );
- };
- }
- ],
- 'patron_evening_phone' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.evening_phone()
- );
- };
- }
- ],
- 'patron_other_phone' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.other_phone()
- );
- };
- }
- ],
- 'patron_email' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.email()
- );
- };
- }
- ],
- 'patron_photo_url' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('src',
- obj.patron.photo_url()
- );
- };
- }
- ],
- 'patron_library' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.OpenILS.data.hash.aou[
- obj.patron.home_ou()
- ].shortname()
- );
- e.setAttribute('tooltiptext',
- obj.OpenILS.data.hash.aou[
- obj.patron.home_ou()
- ].name()
- );
- };
- }
- ],
- 'patron_last_library' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.OpenILS.data.hash.aou[
- obj.patron.home_ou()
- ].shortname()
- );
- e.setAttribute('tooltiptext',
- obj.OpenILS.data.hash.aou[
- obj.patron.home_ou()
- ].name()
- );
- };
- }
- ],
- 'patron_mailing_address_street1' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.mailing_address().street1()
- );
- };
- }
- ],
- 'patron_mailing_address_street2' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.mailing_address().street2()
- );
- };
- }
- ],
- 'patron_mailing_address_city' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.mailing_address().city()
- );
- };
- }
- ],
- 'patron_mailing_address_state' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.mailing_address().state()
- );
- };
- }
- ],
- 'patron_mailing_address_post_code' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.mailing_address().post_code()
- );
- };
- }
- ],
- 'patron_physical_address_street1' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.billing_address().street1()
- );
- };
- }
- ],
- 'patron_physical_address_street2' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.billing_address().street2()
- );
- };
- }
- ],
- 'patron_physical_address_city' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.billing_address().city()
- );
- };
- }
- ],
- 'patron_physical_address_state' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.billing_address().state()
- );
- };
- }
- ],
- 'patron_physical_address_post_code' : [
- ['render'],
- function(e) {
- return function() {
- e.setAttribute('value',
- obj.patron.billing_address().post_code()
- );
- };
- }
- ]
}
}
);
- obj.retrieve();
-
- },
-
- 'retrieve' : function() {
-
- var patron;
- try {
-
- var obj = this;
-
- var chain = [];
-
- // Retrieve the patron
- chain.push(
- function() {
- try {
- var patron = obj.network.request(
- api.fm_au_retrieve_via_barcode.app,
- api.fm_au_retrieve_via_barcode.method,
- [ obj.session, obj.barcode ]
- );
- if (patron) {
-
- if (instanceOf(patron,au)) {
-
- obj.patron = patron;
-
- } else {
-
- throw('patron is not an au fm object');
- }
- } else {
-
- throw('patron == false');
- }
-
- } catch(E) {
- var error = ('patron.display.retrieve : ' + js2JSON(E));
- obj.error.sdump('D_ERROR',error);
- throw(error);
+ if (obj.barcode) {
+ obj.left_deck.set_iframe(
+ urls.remote_patron_summary
+ +'?session=' + window.escape(obj.session)
+ +'&barcode=' + window.escape(obj.barcode),
+ {},
+ {
+ 'on_finished' : function(patron) {
+ obj.patron = patron; obj.controller.render();
}
}
);
-
- // Retrieve the bills
- chain.push(
- function() {
- try {
- var bills = obj.network.request(
- api.fm_mobts_having_balance.app,
- api.fm_mobts_having_balance.method,
- [ obj.session, obj.patron.id() ]
- );
- //FIXME// obj.patron.bills( bills );
- obj.patron.bills = bills;
- } catch(E) {
- var error = ('patron.display.retrieve : ' + js2JSON(E));
- obj.error.sdump('D_ERROR',error);
- throw(error);
- }
- }
- );
-
- // Retrieve the checkouts
- chain.push(
- function() {
- try {
- var checkouts = obj.network.request(
- api.blob_checkouts_retrieve.app,
- api.blob_checkouts_retrieve.method,
- [ obj.session, obj.patron.id() ]
- );
- obj.patron.checkouts( checkouts );
- } catch(E) {
- var error = ('patron.display.retrieve : ' + js2JSON(E));
- obj.error.sdump('D_ERROR',error);
- throw(error);
- }
- }
- );
-
- // Retrieve the holds
- chain.push(
- function() {
- try {
- var holds = obj.network.request(
- api.fm_ahr_retrieve.app,
- api.fm_ahr_retrieve.method,
- [ obj.session, obj.patron.id() ]
- );
- obj.patron.hold_requests( holds );
- } catch(E) {
- var error = ('patron.display.retrieve : ' + js2JSON(E));
- obj.error.sdump('D_ERROR',error);
- throw(error);
- }
- }
- );
-
- // Update the screen
- chain.push( function() { obj.controller.render(); } );
-
- // Do it
- JSAN.use('util.exec'); obj.exec = new util.exec();
- obj.exec.on_error = function(E) {
- location.href = urls.remote_patron_barcode_entry + '?session=' + window.escape(obj.session);
- alert('FIXME: Need better alert and error handling.\nProblem with barcode.\n' + E);
- }
- this.exec.chain( chain );
-
- } catch(E) {
- var error = ('patron.display.retrieve : ' + js2JSON(E));
- this.error.sdump('D_ERROR',error);
- alert(error);
}
- }
+ },
}
dump('exiting patron/display.js\n');
<box id="patron_display_main" flex="1" orient="vertical" class="my_overflow">
<hbox id="PatronNavBar" flex="0"/>
<hbox id="PatronNotNavBar">
- <vbox id="patron_info_sidebar" />
- <deck id="patron_deck" />
+ <deck id="patron_left_deck" />
+ <deck id="patron_right_deck" />
</hbox>
</box>
-<vbox id="patron_info_sidebar" flex="0">
- <groupbox id="PatronDisplayStatus_groupbox" flex="0"/>
- <groupbox id="PatronDisplaySurvey_groupbox" flex="0">
- <caption id="pdsgbc" label="Surveys" />
- </groupbox>
- <groupbox id="PatronDisplayContact_groupbox" flex="1"/>
-</vbox>
-
-<deck id="patron_deck" flex="1">
+<deck id="patron_right_deck" flex="1">
+</deck>
+<deck id="patron_left_deck" flex="1">
</deck>
<hbox id="PatronNavBar">
label="&staff.patron_navbar.info;" accesskey="&staff.patron_navbar.info.accesskey;"/>
</hbox>
-<box id="PatronDisplayStatus_main" flex="1" orient="vertical">
- <groupbox id="PatronDisplayStatus_groupbox" />
-</box>
-
-<groupbox id="PatronDisplayStatus_groupbox" orient="vertical">
- <caption label="&staff.patron_display.status.caption;"/>
- <grid id="PatronDisplayStatus_grid" flex="1"/>
-</groupbox>
-
-<grid id="PatronDisplayStatus_grid">
- <columns id="pdsgc">
- <column id="pdsgc1" />
- <column id="pdsgc2" />
- <column id="pdsgc3" />
- <column id="pdsgc4" />
- </columns>
- <rows id="pdsgr" flex="1">
- <row id="pdsgr1">
- <label id="PatronDisplayStatus_profile_label" class="text_right"
- value="&staff.patron_display.profile.label;" />
- <label id="patron_profile" />
- <label id="PatronDisplayStatus_standing_label" class="text_right"
- value="&staff.patron_display.standing.label;" />
- <label id="patron_standing" />
- </row>
- <row id="pdsgr2">
- <label id="PatronDisplayStatus_credit_label" class="text_right"
- value="&staff.patron_display.credit.label;" />
- <label id="patron_credit" />
- <label id="PatronDisplayStatus_bills_label" class="text_right"
- value="&staff.patron_display.bills.label;" />
- <label id="patron_bill" />
- </row>
- <row id="pdsgr3">
- <label id="PatronDisplayStatus_checkouts_label" class="text_right"
- value="&staff.patron_display.checkouts.label;" />
- <label id="patron_checkouts" />
- <label id="PatronDisplayStatus_checkouts_overdue_label" class="text_right"
- value="&staff.patron_display.checkouts_overdue.label;" />
- <label id="patron_overdue" />
- </row>
- <row id="pdsgr4">
- <label id="PatronDisplayStatus_holds_label" class="text_right"
- value="&staff.patron_display.holds.label;" />
- <label id="patron_holds" />
- <label id="PatronDisplayStatus_holds_available_label" class="text_right"
- value="&staff.patron_display.holds_available.label;" />
- <label id="patron_holds_available" />
- </row>
- <row id="pdsgr5">
- <label id="pdsgr5l1" class="text_right" value="Home Lib:" />
- <label id="patron_library" />
- <label id="pdsgr5l2" class="text_right" value="Last Lib:" />
- <label id="patron_last_library" />
- </row>
-
- </rows>
-</grid>
-
-<groupbox id="PatronDisplayContact_groupbox" orient="vertical">
- <caption label="&staff.patron_display.contact.caption;"/>
- <hbox id="pdcgbhb1">
- <grid id="PatronDisplayContact_grid" />
- <spacer id="pdcgbhbs1" flex="1"/>
- <image id="patron_photo_url" />
- </hbox>
- <grid id="PatronDisplayContact_grid_phone" />
- <groupbox id="PatronDisplayContact_mailing_address" />
- <groupbox id="PatronDisplayContact_physical_address" />
-</groupbox>
-
-<grid id="PatronDisplayContact_grid">
- <columns id="pdsgc">
- <column id="pdsgc1" />
- <column id="pdsgc2" />
- </columns>
- <rows id="pdsgr" flex="1">
- <row id="pdsgr0">
- <label id="PatronDisplayContact_library_card_label" class="text_right"
- value="&staff.patron_display.library_card.label;"/>
- <label id="patron_card" />
- </row>
- <row id="pdsgr1">
- <label id="PatronDisplayContact_ident_label" class="text_right"
- value="&staff.patron_display.ident1.label;"/>
- <hbox id="pdsgr0h">
- <label id="patron_ident_type_1" />
- <label id="patron_ident_value_1" />
- </hbox>
- </row>
- <row id="pdsgr2">
- <label id="PatronDisplayContact_ident_label2" class="text_right"
- value="&staff.patron_display.ident2.label;"/>
- <hbox id="pdsgr0ah">
- <label id="patron_ident_type_2" />
- <label id="patron_ident_value_2" />
- </hbox>
- </row>
- <row id="pdsgr3">
- <label id="PatronDisplayContact_date_of_birth_label" class="text_right"
- value="&staff.patron_display.date_of_birth.label;"/>
- <label id="patron_date_of_birth" />
- </row>
- <row id="pdsgr4"><label id="pdsgr4l" value=" "/></row>
- </rows>
-</grid>
-
-<grid id="PatronDisplayContact_grid_phone">
- <columns id="pdcgpc">
- <column id="pdcgpc1" />
- <column id="pdcgpc2" />
- </columns>
- <rows id="pdcgpr" flex="1">
- <row id="pdcgpr1">
- <label id="PatronDisplayContact_day_phone_label" class="text_right"
- value="&staff.patron_display.day_phone.label;" />
- <label id="patron_day_phone" />
- </row>
- <row id="pdcgpr2">
- <label id="PatronDisplayContact_evening_phone_label" class="text_right"
- value="&staff.patron_display.evening_phone.label;" />
- <label id="patron_evening_phone" />
- </row>
- <row id="pdcgpr3">
- <label id="PatronDisplayContact_other_phone_label" class="text_right"
- value="&staff.patron_display.other_phone.label;" />
- <label id="patron_other_phone" />
- </row>
- <row id="pdsgpr4"><label id="pdsgpr4l" value=" "/></row>
- <row id="pdcgpr5">
- <label id="PatronDisplayContact_email_label" class="text_right"
- value="&staff.patron_display.email.label;" />
- <label id="patron_email" />
- </row>
- <row id="pdsgpr6"><label id="pdsgpr6l" value=" "/></row>
-
- </rows>
-</grid>
-
-<groupbox id="PatronDisplayContact_mailing_address" orient="vertical">
- <caption id="pdcmac" label="&staff.patron_display.mailing_address;"/>
- <label id="patron_mailing_address_street1" tooltiptext="&staff.patron_display.mailing.street1.label;" />
- <label id="patron_mailing_address_street2" tooltiptext="&staff.patron_display.mailing.street2.label;" />
- <hbox id="pdcmah">
- <label id="patron_mailing_address_city" tooltiptext="&staff.patron_display.mailing.city.label;" />
- <label id="patron_mailing_address_state" tooltiptext="&staff.patron_display.mailing.state.label;" />
- <label id="patron_mailing_address_post_code" tooltiptext="&staff.patron_display.mailing.post_code.label;" />
- </hbox>
-</groupbox>
-
-<groupbox id="PatronDisplayContact_physical_address" orient="vertical">
- <caption id="pdcpac" label="&staff.patron_display.physical_address;"/>
- <label id="patron_physical_address_street1" tooltiptext="&staff.patron_display.physical.street1.label;" />
- <label id="patron_physical_address_street2" tooltiptext="&staff.patron_display.physical.street2.label;" />
- <hbox id="pdcpah">
- <label id="patron_physical_address_city" tooltiptext="&staff.patron_display.physical.city.label;" />
- <label id="patron_physical_address_state" tooltiptext="&staff.patron_display.physical.state.label;" />
- <label id="patron_physical_address_post_code" tooltiptext="&staff.patron_display.physical.post_code.label;" />
- </hbox>
-</groupbox>
-
</overlay>