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 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
104 /* grab cover art for selected item? */
107 p.patron_items.register_flesh_patron_items_function(
108 function (treeitem) {
109 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
110 var record_id = treeitem.getAttribute('record_id');
111 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
114 p.patron_items.register_context_builder(
116 sdump('D_PATRON_DISPLAY','Firing context_builder\n');
117 empty_widget(p.patron_items.paged_tree.popup);
118 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
122 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
123 p.patron_items.paged_tree.popup.appendChild( menuitem );
124 menuitem.setAttribute('label',getString('circ.context_renew'));
125 menuitem.addEventListener(
128 sdump('D_PATRON_DISPLAY','Firing renew context\n');
129 for (var i = 0; i < patron_items.length; i++) {
131 var idx = patron_items[i].getAttribute('record_id');
132 var circ = p._patron.checkouts()[ idx ].circ;
133 alert( js2JSON(renew_by_circ_id( circ.id() )) );
144 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
145 p.patron_items.paged_tree.popup.appendChild( menuitem );
146 menuitem.setAttribute('label',getString('circ.context_checkin'));
147 menuitem.addEventListener(
150 sdump('D_PATRON_DISPLAY','Firing checkin context\n');
151 for (var i = 0; i < patron_items.length; i++) {
153 var idx = patron_items[i].getAttribute('record_id');
154 var copy = p._patron.checkouts()[ idx ].copy;
155 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
166 menuitem = p.patron_items.paged_tree.w.document.createElement('menuseparator');
167 p.patron_items.paged_tree.popup.appendChild( menuitem );
170 /*** COPY EDITOR ***/
171 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
172 p.patron_items.paged_tree.popup.appendChild( menuitem );
173 menuitem.setAttribute('label',getString('circ.context_edit'));
174 menuitem.addEventListener(
177 for (var i = 0; i < patron_items.length; i++) {
178 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
185 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
186 p.patron_items.paged_tree.popup.appendChild( menuitem );
187 menuitem.setAttribute('label',getString('circ.context_opac'));
188 menuitem.addEventListener(
191 for (var i = 0; i < patron_items.length; i++) {
192 sdump('D_PATRON_DISPLAY','Firing opac context\n');
202 function patron_display_patron_checkout_items_init(p) {
203 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 } );
207 p.attempt_checkout = function(barcode) {
209 if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
210 var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
211 if (permit_check.status == 0) {
212 var check = checkout_by_barcode( barcode, p._patron.id() );
214 checkouts.push( check );
215 p.patron_checkout_items.add_patron_checkout_items( [ checkouts.length - 1 ] );
218 throw(permit_check.text);
225 var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
226 var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
230 if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkout( tb.value ); }
234 submit_button.addEventListener(
237 p.attempt_checkout( tb.value );
242 p.redraw_patron_checkout_items = function() {
243 p.patron_checkout_items.clear_patron_checkout_items();
244 for (var i = 0; i < checkouts.length; i++) {
245 p.patron_checkout_items.add_patron_checkout_items( [ i ] );
249 p.patron_checkout_items.register_patron_checkout_items_select_callback(
251 sdump('D_PATRON_DISPLAY','Firing patron_checkout_items_select_callback\n');
252 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
253 /* grab cover art for selected item? */
256 p.patron_checkout_items.register_flesh_patron_checkout_items_function(
257 function (treeitem) {
258 sdump('D_PATRON_DISPLAY','Firing flesh_patron_checkout_items_function\n');
259 var record_id = treeitem.getAttribute('record_id');
260 p.patron_checkout_items.map_patron_checkout_items_to_cols( checkouts[ record_id ], treeitem );
263 p.patron_checkout_items.register_context_builder(
265 sdump('D_PATRON_DISPLAY','Firing context_builder\n');
266 empty_widget(p.patron_checkout_items.paged_tree.popup);
267 var patron_checkout_items = get_list_from_tree_selection( p.patron_checkout_items.paged_tree.tree );
271 menuitem = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
272 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem );
273 menuitem.setAttribute('label',getString('circ.context_checkin'));
274 menuitem.addEventListener(
277 sdump('D_PATRON_DISPLAY','Firing checkin context\n');
279 for (var i = 0; i < patron_checkout_items.length; i++) {
281 var idx = patron_checkout_items[i].getAttribute('record_id');
282 var copy = checkouts[ idx ].copy;
283 var status = checkin_by_copy_barcode( copy.barcode() );
284 if (!status) { // change this to whatever it takes
285 keep_these.push( checkouts[ idx ] );
287 checkouts = keep_these;
288 alert( js2JSON( status ) );
299 menuitem = p.patron_checkout_items.paged_tree.w.document.createElement('menuseparator');
300 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem );
303 /*** COPY EDITOR ***/
304 menuitem = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
305 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem );
306 menuitem.setAttribute('label',getString('circ.context_edit'));
307 menuitem.addEventListener(
310 for (var i = 0; i < patron_checkout_items.length; i++) {
311 var idx = patron_checkout_items[i].getAttribute('record_id');
312 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
319 menuitem = p.patron_checkout_items.paged_tree.w.document.createElement('menuitem');
320 p.patron_checkout_items.paged_tree.popup.appendChild( menuitem );
321 menuitem.setAttribute('label',getString('circ.context_opac'));
322 menuitem.addEventListener(
325 for (var i = 0; i < patron_checkout_items.length; i++) {
326 var idx = patron_checkout_items[i].getAttribute('record_id');
327 sdump('D_PATRON_DISPLAY','Firing opac context\n');