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 p.set_patron = function (au) {
15 return p._patron = au;
18 p.display_patron = function (au) {
19 if (au) p.set_patron(au);
20 p.redraw_patron_items();
21 return render_fm(p.w.document, { 'au' : p._patron });
24 p.retrieve_patron_via_barcode = function (barcode) {
25 if (!barcode) barcode = patron_get_barcode( p._patron );
26 p.set_patron( retrieve_patron_by_barcode( barcode ) );
27 return p.display_patron();
30 p.retrieve_patron_via_id = function (id) {
31 p.set_patron( retrieve_patron_by_id( id ) );
32 return p.display_patron();
35 p.refresh = function() {
36 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
39 p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
47 function gen_func(i) {
48 // because otherwise i would be 5 for each closure
50 dump('i = ' + i + '\n');
51 p.clamshell.set_second_deck(i);
54 var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds',
55 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
57 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
65 if (typeof(p.patron) == 'object') {
69 p.retrieve_patron_via_barcode( p.patron );
72 sdump('D_TRACE_EXIT',arg_dump(arguments));
76 function patron_display_clamshell_init(p) {
77 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
78 p.left_panel = p.clamshell.first_deck;
79 p.right_panel = p.clamshell.second_deck;
81 p.inner_left_clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.left_panel.firstChild, 'debug' : p.app } );
82 p.inner_top_panel = p.inner_left_clamshell.first_deck;
83 p.inner_bottom_panel = p.inner_left_clamshell.second_deck;
86 function patron_display_patron_items_init(p) {
87 p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
89 p.redraw_patron_items = function() {
90 p.patron_items.clear_patron_items();
91 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
92 for (var i = 0; i < p._patron.checkouts().length; i++) {
93 p.patron_items.add_patron_items( [ i ] );
97 p.patron_items.register_patron_items_select_callback(
99 sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
100 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
101 /* grab cover art for selected item? */
104 p.patron_items.register_flesh_patron_items_function(
105 function (treeitem) {
106 sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
107 var record_id = treeitem.getAttribute('record_id');
108 p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
111 p.patron_items.register_context_builder(
113 sdump('D_PATRON_DISPLAY','Firing context_builder\n');
114 empty_widget(p.patron_items.paged_tree.popup);
115 var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
119 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
120 p.patron_items.paged_tree.popup.appendChild( menuitem );
121 menuitem.setAttribute('label',getString('circ.context_renew'));
122 menuitem.addEventListener(
125 sdump('D_PATRON_DISPLAY','Firing renew context\n');
126 for (var i = 0; i < patron_items.length; i++) {
128 var idx = patron_items[i].getAttribute('record_id');
129 var circ = p._patron.checkouts()[ idx ].circ;
130 alert( js2JSON(renew_by_circ_id( circ.id() )) );
140 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
141 p.patron_items.paged_tree.popup.appendChild( menuitem );
142 menuitem.setAttribute('label',getString('circ.context_checkin'));
143 menuitem.addEventListener(
146 sdump('D_PATRON_DISPLAY','Firing checkin context\n');
147 for (var i = 0; i < patron_items.length; i++) {
149 var idx = patron_items[i].getAttribute('record_id');
150 var copy = p._patron.checkouts()[ idx ].copy;
151 alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
161 menuitem = p.patron_items.paged_tree.w.document.createElement('menuseparator');
162 p.patron_items.paged_tree.popup.appendChild( menuitem );
165 /*** COPY EDITOR ***/
166 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
167 p.patron_items.paged_tree.popup.appendChild( menuitem );
168 menuitem.setAttribute('label',getString('circ.context_edit'));
169 menuitem.addEventListener(
172 for (var i = 0; i < patron_items.length; i++) {
173 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
180 menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
181 p.patron_items.paged_tree.popup.appendChild( menuitem );
182 menuitem.setAttribute('label',getString('circ.context_opac'));
183 menuitem.addEventListener(
186 for (var i = 0; i < patron_items.length; i++) {
187 sdump('D_PATRON_DISPLAY','Firing opac context\n');