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, p.inner_left_clamshell, p.inner_top_panel, p.inner_bottom_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 return render_fm(p.w.document, { 'au' : p._patron });
27 p.retrieve_patron_via_barcode = function (barcode) {
28 if (!barcode) barcode = patron_get_barcode( p._patron );
29 p.set_patron( retrieve_patron_by_barcode( barcode ) );
30 return p.display_patron();
33 p.retrieve_patron_via_id = function (id) {
34 p.set_patron( retrieve_patron_by_id( id ) );
35 return p.display_patron();
38 p.refresh = function() {
39 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
42 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
50 function gen_func(i) {
51 // because otherwise i would be 5 for each closure
53 dump('i = ' + i + '\n');
54 p.clamshell.set_second_deck(i);
57 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
58 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
60 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
68 if (typeof(p.patron) == 'object') {
72 p.retrieve_patron_via_barcode( p.patron );
75 sdump('D_TRACE_EXIT',arg_dump(arguments));
79 function patron_display_clamshell_init(p) {
80 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
81 p.left_panel = p.clamshell.first_deck;
82 p.right_panel = p.clamshell.second_deck;
84 p.inner_left_clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.left_panel.firstChild, 'debug' : p.app } );
85 p.inner_top_panel = p.inner_left_clamshell.first_deck;
86 p.inner_bottom_panel = p.inner_left_clamshell.second_deck;
89 function patron_display_patron_items_init(p) {
90 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
92 p.redraw_patron_items = function() {
93 p.patron_items.clear_patron_items();
94 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
95 for (var i = 0; i < p._patron.checkouts().length; i++) {
96 p.patron_items.add_patron_items( [ i ] );
100 p.patron_items.register_patron_items_select_callback(
102 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
103 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
104 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
105 /* grab cover art for selected item? */
108 p.patron_items.register_flesh_patron_items_function(
109 function (treeitem) {
110 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
111 var record_id = treeitem.getAttribute('record_id');
112 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
115 p.patron_items.register_item_context_builder(
117 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_items\n');
118 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_items.paged_tree.popup = ' + p.patron_items.paged_tree.popup + '\n');
119 empty_widget(p.patron_items.paged_tree.popup);
120 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
121 sdump('D_PATRON_DISPLAY','patron_items.length = ' + patron_items.length + '\n');
124 var menuitem_pi_r = p.patron_items.paged_tree.w.document.createElement('menuitem');
125 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_r );
126 menuitem_pi_r.setAttribute('label',getString('circ.context_renew'));
127 menuitem_pi_r.addEventListener(
130 sdump('D_PATRON_DISPLAY','Firing renew context for patron_items\n');
131 for (var i = 0; i < patron_items.length; i++) {
133 var idx = patron_items[i].getAttribute('record_id');
134 var circ = p._patron.checkouts()[ idx ].circ;
135 alert( js2JSON(renew_by_circ_id( circ.id() )) );
146 var menuitem_pi_c = p.patron_items.paged_tree.w.document.createElement('menuitem');
147 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_c );
148 menuitem_pi_c.setAttribute('label',getString('circ.context_checkin'));
149 menuitem_pi_c.addEventListener(
152 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_items\n');
153 for (var i = 0; i < patron_items.length; i++) {
155 var idx = patron_items[i].getAttribute('record_id');
156 var copy = p._patron.checkouts()[ idx ].copy;
157 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
168 var menuitem_pi_s = p.patron_items.paged_tree.w.document.createElement('menuseparator');
169 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_s );
172 /*** COPY EDITOR ***/
173 var menuitem_pi_ce = p.patron_items.paged_tree.w.document.createElement('menuitem');
174 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_ce );
175 menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
176 menuitem_pi_ce.addEventListener(
179 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_items\n');
180 for (var i = 0; i < patron_items.length; i++) {
181 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
188 var menuitem_pi_o = p.patron_items.paged_tree.w.document.createElement('menuitem');
189 p.patron_items.paged_tree.popup.appendChild( menuitem_pi_o );
190 menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
191 menuitem_pi_o.addEventListener(
194 sdump('D_PATRON_DISPLAY','Firing opac context for patron_items\n');
195 for (var i = 0; i < patron_items.length; i++) {
196 sdump('D_PATRON_DISPLAY','Firing opac context\n');
206 function patron_display_patron_checkout_items_init(p) {
207 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 } );
208 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
209 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
213 p.attempt_checkout = function(barcode) {
215 //if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
216 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
217 if (permit_check.status == 0) {
218 var check = checkout_by_copy_barcode( barcode, p._patron.id() );
220 checkouts.push( check );
221 p.patron_checkout_items.add_checkout_items( [ checkouts.length - 1 ] );
225 throw(permit_check.text);
237 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
241 submit_button.addEventListener(
244 p.attempt_checkout( tb.value );
249 p.redraw_patron_checkout_items = function() {
250 p.patron_checkout_items.clear_patron_checkout_items();
251 for (var i = 0; i < checkouts.length; i++) {
252 p.patron_checkout_items.add_checkout_items( [ i ] );
256 p.patron_checkout_items.register_patron_checkout_items_select_callback(
258 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
259 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
260 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
261 /* grab cover art for selected item? */
264 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
265 function (treeitem) {
266 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
267 var record_id = treeitem.getAttribute('record_id');
268 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
271 p.patron_checkout_items.register_checkout_context_builder(
273 sdump('D_PATRON_DISPLAY','Firing context_builder for patron_checkout_items\n');
274 sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_checkout_items.paged_tree.popup = ' + p.patron_checkout_items.paged_tree.popup + '\n');
275 empty_widget(p.patron_checkout_items.paged_tree.popup);
276 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
279 var menuitem_pci_c = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
280 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_c );
281 menuitem_pci_c.setAttribute('label',getString('circ.context_checkin'));
282 menuitem_pci_c.addEventListener(
285 sdump('D_PATRON_DISPLAY','Firing checkin context for patron_checkout_items\n');
287 for (var i = 0; i < patron_checkout_items.length; i++) {
289 var idx = patron_checkout_items[i].getAttribute('record_id');
290 var copy = checkouts[ idx ].copy;
291 var status = checkin_by_copy_barcode( copy.barcode() );
292 if (!status) { // change this to whatever it takes
293 keep_these.push( checkouts[ idx ] );
295 checkouts = keep_these;
296 alert( js2JSON( status ) );
307 var menuitem_pci_s = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
308 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_s );
311 /*** COPY EDITOR ***/
312 var menuitem_pci_ce = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
313 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_ce );
314 menuitem_pci_ce.setAttribute('label',getString('circ.context_edit'));
315 menuitem_pci_ce.addEventListener(
318 sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_checkout_items\n');
319 for (var i = 0; i < patron_checkout_items.length; i++) {
320 var idx = patron_checkout_items[i].getAttribute('record_id');
321 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
328 var menuitem_pci_o = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
329 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem_pci_o );
330 menuitem_pci_o.setAttribute('label',getString('circ.context_opac'));
331 menuitem_pci_o.addEventListener(
334 sdump('D_PATRON_DISPLAY','Firing opac 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 opac context\n');