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_CONSTRUCTOR',arg_dump(arguments));
8 // gives: p.clamshell, p.right_panel, p.left_panel
9 patron_display_clamshell_init(p);
11 // gives: p.patron_items, p.redraw_patron_items
12 patron_display_patron_items_init(p);
14 // gives: p.patron_checkout_items, p.redraw_patron_checkout_items
15 patron_display_patron_checkout_items_init(p);
17 p.set_patron = function (au) {
18 return p._patron = au;
21 p.display_patron = function (au) {
22 if (au) p.set_patron(au);
23 p.redraw_patron_items();
24 p.redraw_patron_checkout_items();
25 return render_fm(p.w.document, { 'au' : p._patron });
28 p.retrieve_patron_via_barcode = function (barcode) {
29 if (!barcode) barcode = patron_get_barcode( p._patron );
30 p.set_patron( retrieve_patron_by_barcode( barcode ) );
31 return p.display_patron();
34 p.retrieve_patron_via_id = function (id) {
35 p.set_patron( retrieve_patron_by_id( id ) );
36 return p.display_patron();
39 p.refresh = function() {
40 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
43 set_patron_display_widgets(p);
46 if (typeof(p.patron) == 'object') {
50 p.retrieve_patron_via_barcode( p.patron );
53 sdump('D_TRACE_EXIT',arg_dump(arguments));
57 function set_patron_display_widgets(p) {
58 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
66 function gen_func(i) {
67 // because otherwise i would be 5 for each closure
69 p.clamshell.set_second_deck(i);
72 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
73 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
75 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
81 p.commandset_node.getElementsByAttribute('id','cmd_patron_checkout')[0].addEventListener(
84 focus_widget( p.w.document, 'patron_checkout_barcode_entry_textbox' );
92 function patron_display_clamshell_init(p) {
93 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
94 p.left_panel = p.clamshell.first_deck;
95 p.right_panel = p.clamshell.second_deck;
98 function patron_display_patron_items_init(p) {
99 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
101 p.redraw_patron_items = function() {
102 p.patron_items.clear_patron_items();
103 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
104 for (var i = 0; i < p._patron.checkouts().length; i++) {
105 p.patron_items.add_patron_items( [ i ] );
109 p.patron_items.register_patron_items_select_callback(
111 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
112 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
113 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
114 /* grab cover art for selected item? */
117 p.patron_items.register_flesh_patron_items_function(
118 function (treeitem) {
119 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
120 var record_id = treeitem.getAttribute('record_id');
121 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
124 p.patron_items.register_item_context_builder(
126 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_items\n');
127 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_items.paged_tree.popup = ' + p.patron_items.paged_tree.popup + '\n');
128 empty_widget(p.patron_items.paged_tree.popup);
129 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
130 sdump('D_PATRON_DISPLAY','patron_items.length = ' + patron_items.length + '\n');
133 var menuitem_pi_r = p.patron_items.paged_tree.w.document.createElement('menuitem');
134 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_r );
135 menuitem_pi_r.setAttribute('label',getString('circ.context_renew'));
136 menuitem_pi_r.addEventListener(
139 sdump('D_PATRON_DISPLAY','Firing renew context for patron_items\n');
140 for (var i = 0; i < patron_items.length; i++) {
142 var idx = patron_items[i].getAttribute('record_id');
143 var circ = p._patron.checkouts()[ idx ].circ;
144 alert( js2JSON(renew_by_circ_id( circ.id() )) );
155 var menuitem_pi_c = p.patron_items.paged_tree.w.document.createElement('menuitem');
156 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_c );
157 menuitem_pi_c.setAttribute('label',getString('circ.context_checkin'));
158 menuitem_pi_c.addEventListener(
161 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_items\n');
162 for (var i = 0; i < patron_items.length; i++) {
164 var idx = patron_items[i].getAttribute('record_id');
165 var copy = p._patron.checkouts()[ idx ].copy;
166 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
177 var menuitem_pi_s = p.patron_items.paged_tree.w.document.createElement('menuseparator');
178 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_s );
181 /*** COPY EDITOR ***/
182 var menuitem_pi_ce = p.patron_items.paged_tree.w.document.createElement('menuitem');
183 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_ce );
184 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
185 menuitem_pi_ce.addEventListener(
188 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_items\n');
189 for (var i = 0; i < patron_items.length; i++) {
190 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
197 var menuitem_pi_o = p.patron_items.paged_tree.w.document.createElement('menuitem');
198 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_o );
199 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
200 menuitem_pi_o.addEventListener(
203 sdump('D_PATRON_DISPLAY','Firing opac context for patron_items\n');
204 for (var i = 0; i < patron_items.length; i++) {
205 sdump('D_PATRON_DISPLAY','Firing opac context\n');
215 function patron_display_patron_checkout_items_init(p) {
216 p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
217 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
218 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
222 p.w.document.getElementById('checkout_done').addEventListener(
225 checkouts = []; p.refresh(); tb.focus();
229 p.attempt_checkout = function(barcode) {
231 //if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
232 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
233 if (permit_check.status == 0) {
234 var check = checkout_by_copy_barcode( barcode, p._patron.id() );
236 checkouts.push( check );
237 p.patron_checkout_items.add_checkout_items( [ checkouts.length - 1 ] );
241 throw(permit_check.text);
253 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
257 submit_button.addEventListener(
260 p.attempt_checkout( tb.value );
265 p.redraw_patron_checkout_items = function() {
266 p.patron_checkout_items.clear_checkout_items();
267 for (var i = 0; i < checkouts.length; i++) {
268 p.patron_checkout_items.add_checkout_items( [ i ] );
272 p.patron_checkout_items.register_patron_checkout_items_select_callback(
274 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
275 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
276 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
277 /* grab cover art for selected item? */
280 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
281 function (treeitem) {
282 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
283 var record_id = treeitem.getAttribute('record_id');
284 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
287 p.patron_checkout_items.register_checkout_context_builder(
289 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_checkout_items\n');
290 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_checkout_items.paged_tree.popup = ' + p.patron_checkout_items.paged_tree.popup + '\n');
291 empty_widget(p.patron_checkout_items.paged_tree.popup);
292 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
295 var menuitem_pci_c = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
296 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_c );
297 menuitem_pci_c.setAttribute('label',getString('circ.context_checkin'));
298 menuitem_pci_c.addEventListener(
301 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_checkout_items\n');
303 for (var i = 0; i < patron_checkout_items.length; i++) {
305 var idx = patron_checkout_items[i].getAttribute('record_id');
306 var copy = checkouts[ idx ].copy;
307 var status = checkin_by_copy_barcode( copy.barcode() );
308 if (status == null) { // change this to whatever it takes
309 keep_these.push( checkouts[ idx ] );
311 checkouts = keep_these;
312 alert( js2JSON( status ) );
323 var menuitem_pci_s = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
324 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_s );
327 /*** COPY EDITOR ***/
328 var menuitem_pci_ce = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
329 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_ce );
330 menuitem_pci_ce.setAttribute('label',getString('circ.context_edit'));
331 menuitem_pci_ce.addEventListener(
334 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_checkout_items\n');
335 for (var i = 0; i < patron_checkout_items.length; i++) {
336 var idx = patron_checkout_items[i].getAttribute('record_id');
337 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
344 var menuitem_pci_o = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
345 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_o );
346 menuitem_pci_o.setAttribute('label',getString('circ.context_opac'));
347 menuitem_pci_o.addEventListener(
350 sdump('D_PATRON_DISPLAY','Firing opac context for patron_checkout_items\n');
351 for (var i = 0; i < patron_checkout_items.length; i++) {
352 var idx = patron_checkout_items[i].getAttribute('record_id');
353 sdump('D_PATRON_DISPLAY','Firing opac context\n');