1 sdump('D_TRACE','Loading patron_display.js\n');
3 function patron_display_init(p) {
4 sdump('D_PATRON_DISPLAY',"TESTING: patron_display.js: " + mw.G['main_test_variable'] + '\n');
5 sdump('D_TRACE_ENTER',arg_dump(arguments));
7 p.w.set_patron = function (au) {
8 return p.w._patron = au;
10 p.w.display_patron = function (au) {
11 if (au) p.w.set_patron(au);
13 p.w.status_w.display_patron();
15 p.w.contact_w.display_patron();
16 return render_fm(p.w.document, { 'au' : p.w._patron });
18 p.w.retrieve_patron_via_barcode = function (barcode) {
19 if (!barcode) barcode = patron_get_barcode( p.w._patron );
20 p.w.set_patron( retrieve_patron_by_barcode( barcode ) );
21 return p.w.display_patron();
23 p.w.retrieve_patron_via_id = function (id) {
24 p.w.set_patron( retrieve_patron_by_id( id ) );
25 return p.w.display_patron();
27 p.w.refresh = function() {
28 p.w.retrieve_patron_via_id( p.w._patron.id() );
32 if (typeof(p.patron) == 'object') {
33 p.w._patron = p.patron;
36 p.w.retrieve_patron_via_barcode( p.patron );
39 sdump('D_TRACE','******** SETTING TIMEOUT\n');
42 sdump('D_TRACE','******** TIMEOUT OCCURRED\n');
43 p.w.clamshell = spawn_clamshell(
44 p.w.document, 'new_iframe', p.clamshell, {
46 'onload' : patron_display_init_after_clamshell(p)
52 sdump('D_TRACE','******** AFTER SETTING TIMEOUT\n');
54 sdump('D_TRACE_EXIT',arg_dump(arguments));
58 function patron_display_init_after_clamshell(p) {
59 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
60 return function (clamshell_w) {
63 p.w.inner_clamshell = spawn_clamshell_vertical(
66 clamshell_w.first_deck, {
68 'onload' : patron_display_init_after_inner_clamshell(p)
75 p.w.item_tree = spawn_circ_tree(
78 clamshell_w.second_deck, {
79 'paged_tree_onload' : patron_display_init_after_item_tree_paged_tree(p),
80 'onload' : patron_display_init_after_item_tree(p)
90 function patron_display_init_after_item_tree_paged_tree(p) {
91 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
92 return function (tree_win) {
94 if (!p.w._patron.checkouts()) patron_get_checkouts( p.w._patron );
95 for (var i = 0; i < p.w._patron.checkouts().length; i++) {
96 p.w.item_tree.add_circs( [ i ] );
102 function patron_display_init_after_inner_clamshell(p) {
103 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
104 return function (clamshell_w) {
105 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
108 p.w.status_w = spawn_patron_display_status(
109 clamshell_w.document,
111 clamshell_w.first_deck, {
112 'patron' : p.w._patron
119 p.w.contact_w = spawn_patron_display_contact(
120 clamshell_w.document,
122 clamshell_w.second_deck, {
123 'patron' : p.w._patron
132 function patron_display_init_after_item_tree(p) {
133 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
134 return function (item_tree_w) {
135 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
136 item_tree_w.register_circ_select_callback(
138 sdump('D_PATRON_DISPLAY','Firing circ_select_callback\n');
139 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
140 /* grab cover art for selected item? */
143 item_tree_w.register_flesh_circ_function(
144 function (treeitem) {
145 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
146 /* A little kludgy if the patron's checkouts change while the list is being navigated, but since
147 there is no network traffic, it may be worth clearing and rebuilding the tree when updating */
148 var record_id = treeitem.getAttribute('record_id');
149 item_tree_w.map_circ_to_cols( p.w._patron.checkouts()[ record_id ], treeitem );
152 item_tree_w.register_context_builder(
154 /* add check-in and renew options */
155 empty_widget(item_tree_w.tree_win.popup);
156 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
157 var menuitem = item_tree_w.tree_win.document.createElement('menuitem');
158 item_tree_w.tree_win.popup.appendChild( menuitem );
159 menuitem.setAttribute('label','Open in OPAC');
160 menuitem.addEventListener(
163 for (var i = 0; i < circs.length; i++) {
165 p.w.app_shell,'new_tab','main_tabbox',
167 'circ' : retrieve_circ_by_id(
168 circs[i].getAttribute('record_id')