]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
refactor
[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_TIMEOUT','******** SETTING TIMEOUT\n');
40         setTimeout( 
41                 function() {
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, {
45                                         'horizontal' : true,
46                                         'onload' : patron_display_init_after_clamshell(p) 
47                                 }
48                         );
49                 }
50                 ,0
51         );
52         sdump('D_TIMEOUT','******** 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                                 sdump('D_TIMEOUT','******** timeout occurred (1) after clamshell in patron_display.js\n');
64                                 p.w.inner_clamshell = spawn_clamshell_vertical( 
65                                         clamshell_w.document, 
66                                         'new_iframe', 
67                                         clamshell_w.first_deck, {
68                                                 'vertical' : true,
69                                                 'onload' : patron_display_init_after_inner_clamshell(p)
70                                         }
71                                 );
72                         }, 0
73                 );
74                 /*
75                 setTimeout(
76                         function() {
77                                 sdump('D_TIMEOUT','******** timeout occurred (2) after clamshell in patron_display.js\n');
78                                 p.w.item_tree = spawn_circ_tree( 
79                                         clamshell_w.document, 
80                                         'new_iframe', 
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)
84                                         }
85                                 );
86                         }, 0
87                 );
88                 */
89                 return;
90         };
91
92 }
93
94 function patron_display_init_after_item_tree_paged_tree(p) {
95         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
96         return function (tree_win) {
97                 if (p.w._patron) {
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 ] );
101                         }
102                 }
103         };
104 };
105
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));
110                 setTimeout(
111                         function() {
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, 
115                                         'new_iframe', 
116                                         clamshell_w.first_deck, {
117                                                 'patron' : p.w._patron
118                                         }
119                                 );
120                         }, 0
121                 );
122                 setTimeout(
123                         function() {
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, 
127                                         'new_iframe', 
128                                         clamshell_w.second_deck, {
129                                                 'patron' : p.w._patron
130                                         }
131                                 );
132                         }, 0
133                 );
134                 return;
135         };
136 }
137
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(
143                         function (ev) {
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? */
147                         }
148                 );
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 );
156                         }
157                 );
158                 item_tree_w.register_context_builder(
159                         function (ev) {
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(
167                                         'command',
168                                         function (ev) {
169                                                 for (var i = 0; i < circs.length; i++) {
170                                                         spawn_circ_display(
171                                                                 p.w.app_shell,'new_tab','main_tabbox', 
172                                                                 { 
173                                                                         'circ' : retrieve_circ_by_id( 
174                                                                                 circs[i].getAttribute('record_id') 
175                                                                         )
176                                                                 }
177                                                         );
178                                                 }
179                                         },
180                                         false
181                                 );
182                         }
183                 );
184         };
185 }