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_TIMEOUT','******** SETTING TIMEOUT\n');
42 sdump('D_TIMEOUT','******** timeout occurred in patron_display.js\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_TIMEOUT','******** 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 sdump('D_TIMEOUT','******** timeout occurred (1) after clamshell in patron_display.js\n');
64 p.w.inner_clamshell = spawn_clamshell_vertical(
67 clamshell_w.first_deck, {
69 'onload' : patron_display_init_after_inner_clamshell(p)
77 sdump('D_TIMEOUT','******** timeout occurred (2) after clamshell in patron_display.js\n');
78 p.w.item_tree = spawn_circ_tree(
81 clamshell_w.second_deck, {
82 'paged_tree_onload' : patron_display_init_after_item_tree_paged_tree(p),
83 'onload' : patron_display_init_after_item_tree(p)
94 function patron_display_init_after_item_tree_paged_tree(p) {
95 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
96 return function (tree_win) {
98 if (!p.w._patron.checkouts()) patron_get_checkouts( p.w._patron );
99 for (var i = 0; i < p.w._patron.checkouts().length; i++) {
100 p.w.item_tree.add_circs( [ i ] );
106 function patron_display_init_after_inner_clamshell(p) {
107 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
108 return function (clamshell_w) {
109 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
112 sdump('D_TIMEOUT','******** timeout occurred (1) after inner clamshell in patron_display.js\n');
113 p.w.status_w = spawn_patron_display_status(
114 clamshell_w.document,
116 clamshell_w.first_deck, {
117 'patron' : p.w._patron
124 sdump('D_TIMEOUT','******** timeout occurred (2) after inner clamshell in patron_display.js\n');
125 p.w.contact_w = spawn_patron_display_contact(
126 clamshell_w.document,
128 clamshell_w.second_deck, {
129 'patron' : p.w._patron
138 function patron_display_init_after_item_tree(p) {
139 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
140 return function (item_tree_w) {
141 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
142 item_tree_w.register_circ_select_callback(
144 sdump('D_PATRON_DISPLAY','Firing circ_select_callback\n');
145 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
146 /* grab cover art for selected item? */
149 item_tree_w.register_flesh_circ_function(
150 function (treeitem) {
151 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
152 /* A little kludgy if the patron's checkouts change while the list is being navigated, but since
153 there is no network traffic, it may be worth clearing and rebuilding the tree when updating */
154 var record_id = treeitem.getAttribute('record_id');
155 item_tree_w.map_circ_to_cols( p.w._patron.checkouts()[ record_id ], treeitem );
158 item_tree_w.register_context_builder(
160 /* add check-in and renew options */
161 empty_widget(item_tree_w.tree_win.popup);
162 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
163 var menuitem = item_tree_w.tree_win.document.createElement('menuitem');
164 item_tree_w.tree_win.popup.appendChild( menuitem );
165 menuitem.setAttribute('label','Open in OPAC');
166 menuitem.addEventListener(
169 for (var i = 0; i < circs.length; i++) {
171 p.w.app_shell,'new_tab','main_tabbox',
173 'circ' : retrieve_circ_by_id(
174 circs[i].getAttribute('record_id')