]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
trying to improve performance
[working/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                 p.w.inner_clamshell = spawn_clamshell_vertical( 
62                         clamshell_w.document, 
63                         'new_iframe', 
64                         clamshell_w.first_deck, {
65                                 'vertical' : true,
66                                 'onload' : patron_display_init_after_inner_clamshell(p)
67                         }
68                 );
69                 p.w.item_tree = spawn_circ_tree( 
70                         clamshell_w.document, 
71                         'new_iframe', 
72                         clamshell_w.second_deck, {
73                                 'paged_tree_onload' : patron_display_init_after_item_tree_paged_tree(p),
74                                 'onload' : patron_display_init_after_item_tree(p)
75                         }
76                 );
77
78
79                 return;
80         };
81
82 }
83
84 function patron_display_init_after_item_tree_paged_tree(p) {
85         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
86         return function (tree_win) {
87                 sdump('D_TRACE','<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n');
88                 if (p.w._patron) {
89                         sdump('D_TRACE','>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n');
90                         if (!p.w._patron.checkouts()) patron_get_checkouts( p.w._patron );
91                         for (var i = 0; i < p.w._patron.checkouts().length; i++) {
92                                 p.w.item_tree.add_circs( [ i ] );
93                         }
94                 }
95         };
96 };
97
98 function patron_display_init_after_inner_clamshell(p) {
99         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
100         return function (clamshell_w) {
101                 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
102                 p.w.status_w = spawn_patron_display_status(
103                         clamshell_w.document, 
104                         'new_iframe', 
105                         clamshell_w.first_deck, {
106                                 'patron' : p.w._patron
107                         }
108                 );
109                 p.w.contact_w = spawn_patron_display_contact(
110                         clamshell_w.document, 
111                         'new_iframe', 
112                         clamshell_w.second_deck, {
113                                 'patron' : p.w._patron
114                         }
115                 );
116                 return;
117         };
118 }
119
120 function patron_display_init_after_item_tree(p) {
121         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
122         return function (item_tree_w) {
123                 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
124                 item_tree_w.register_circ_select_callback(
125                         function (ev) {
126                                 sdump('D_PATRON_DISPLAY','Firing circ_select_callback\n');
127                                 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
128                                 /* grab cover art for selected item? */
129                         }
130                 );
131                 item_tree_w.register_flesh_circ_function(
132                         function (treeitem) {
133                                 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
134                                 /* A little kludgy if the patron's checkouts change while the list is being navigated, but since
135                                 there is no network traffic, it may be worth clearing and rebuilding the tree when updating */
136                                 var record_id = treeitem.getAttribute('record_id'); 
137                                 item_tree_w.map_circ_to_cols( p.w._patron.checkouts()[ record_id ], treeitem );
138                         }
139                 );
140                 item_tree_w.register_context_builder(
141                         function (ev) {
142                                 /* add check-in and renew options */
143                                 empty_widget(item_tree_w.tree_win.popup);
144                                 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
145                                 var menuitem = item_tree_w.tree_win.document.createElement('menuitem');
146                                 item_tree_w.tree_win.popup.appendChild( menuitem );
147                                 menuitem.setAttribute('label','Open in OPAC');
148                                 menuitem.addEventListener(
149                                         'command',
150                                         function (ev) {
151                                                 for (var i = 0; i < circs.length; i++) {
152                                                         spawn_circ_display(
153                                                                 p.w.app_shell,'new_tab','main_tabbox', 
154                                                                 { 
155                                                                         'circ' : retrieve_circ_by_id( 
156                                                                                 circs[i].getAttribute('record_id') 
157                                                                         )
158                                                                 }
159                                                         );
160                                                 }
161                                         },
162                                         false
163                                 );
164                         }
165                 );
166         };
167 }