]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
aggressive use of timeouts. The patron display is indeed more responsive, but still...
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_display.js
1 sdump('D_TRACE','Loading patron_display.js\n');
2
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));
6
7         p.w.set_patron = function (au) {
8                 return p.w._patron = au;
9         }
10         p.w.display_patron = function (au) {
11                 if (au) p.w.set_patron(au);
12                 if (p.w.status_w)
13                         p.w.status_w.display_patron();
14                 if (p.w.contact_w)
15                         p.w.contact_w.display_patron();
16                 return render_fm(p.w.document, { 'au' : p.w._patron });
17         };
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();
22         }
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();
26         }
27         p.w.refresh = function() {
28                 p.w.retrieve_patron_via_id( p.w._patron.id() );
29         }
30
31         if (p.patron) {
32                 if (typeof(p.patron) == 'object') {
33                         p.w._patron = p.patron;
34                         p.w.display_patron();
35                 } else
36                         p.w.retrieve_patron_via_barcode( p.patron );
37         }
38
39         sdump('D_TRACE','******** SETTING TIMEOUT\n');
40         setTimeout( 
41                 function() {
42                         sdump('D_TRACE','******** TIMEOUT OCCURRED\n');
43                         p.w.clamshell = spawn_clamshell( 
44                                 p.w.document, 'new_iframe', p.clamshell, {
45                                         'horizontal' : true,
46                                         'onload' : patron_display_init_after_clamshell(p) 
47                                 }
48                         );
49                 }
50                 ,0
51         );
52         sdump('D_TRACE','******** AFTER SETTING TIMEOUT\n');
53
54         sdump('D_TRACE_EXIT',arg_dump(arguments));
55         return;
56 }
57
58 function patron_display_init_after_clamshell(p) {
59         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
60         return function (clamshell_w) {
61                 setTimeout(
62                         function() {
63                                 p.w.inner_clamshell = spawn_clamshell_vertical( 
64                                         clamshell_w.document, 
65                                         'new_iframe', 
66                                         clamshell_w.first_deck, {
67                                                 'vertical' : true,
68                                                 'onload' : patron_display_init_after_inner_clamshell(p)
69                                         }
70                                 );
71                         }, 0
72                 );
73                 setTimeout(
74                         function() {
75                                 p.w.item_tree = spawn_circ_tree( 
76                                         clamshell_w.document, 
77                                         'new_iframe', 
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)
81                                         }
82                                 );
83                         }, 0
84                 );
85                 return;
86         };
87
88 }
89
90 function patron_display_init_after_item_tree_paged_tree(p) {
91         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
92         return function (tree_win) {
93                 if (p.w._patron) {
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 ] );
97                         }
98                 }
99         };
100 };
101
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));
106                 setTimeout(
107                         function() {
108                                 p.w.status_w = spawn_patron_display_status(
109                                         clamshell_w.document, 
110                                         'new_iframe', 
111                                         clamshell_w.first_deck, {
112                                                 'patron' : p.w._patron
113                                         }
114                                 );
115                         }, 0
116                 );
117                 setTimeout(
118                         function() {
119                                 p.w.contact_w = spawn_patron_display_contact(
120                                         clamshell_w.document, 
121                                         'new_iframe', 
122                                         clamshell_w.second_deck, {
123                                                 'patron' : p.w._patron
124                                         }
125                                 );
126                         }, 0
127                 );
128                 return;
129         };
130 }
131
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(
137                         function (ev) {
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? */
141                         }
142                 );
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 );
150                         }
151                 );
152                 item_tree_w.register_context_builder(
153                         function (ev) {
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(
161                                         'command',
162                                         function (ev) {
163                                                 for (var i = 0; i < circs.length; i++) {
164                                                         spawn_circ_display(
165                                                                 p.w.app_shell,'new_tab','main_tabbox', 
166                                                                 { 
167                                                                         'circ' : retrieve_circ_by_id( 
168                                                                                 circs[i].getAttribute('record_id') 
169                                                                         )
170                                                                 }
171                                                         );
172                                                 }
173                                         },
174                                         false
175                                 );
176                         }
177                 );
178         };
179 }