1 sdump('D_TRACE','Loading patron_search.js\n');
3 var test_variable = false;
5 function patron_search_init(p) {
6 sdump('D_PATRON_SEARCH',"TESTING: patron_search.js: " + mw.G['main_test_variable'] + '\n');
7 sdump('D_CONSTRUCTOR',arg_dump(arguments));
9 /* gives: p.clamshell, p.right_panel, p.left_panel */
10 patron_search_clamshell_init(p);
12 /* gives: p.search_form */
13 patron_search_patron_search_form_init(p);
15 /* gives: p.search_results */
16 patron_search_patron_search_results_init(p);
18 p.crazy_search = function (crazy_search_hash) {
19 return patron_search( crazy_search_hash );
22 p.retrieve_button = p.w.document.getElementById('PatronSearch_retrieve_button');
23 p.retrieve_button.addEventListener(
27 p.w.app_shell,'new_tab','main_tabbox',
29 'patron' : retrieve_patron_by_id(
38 sdump('D_TRACE_EXIT',arg_dump(arguments));
42 function patron_search_clamshell_init(p) {
43 p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
44 p.left_panel = p.clamshell.first_deck;
45 p.right_panel = p.clamshell.second_deck;
48 function patron_search_patron_search_form_init(p) {
49 p.search_form = patron_search_form_init( { 'w' : p.w, 'node' : p.patron_search_form_node, 'debug' : p.ap } );
50 p.search_form.register_search_callback(
52 sdump('D_PATRON_SEARCH','Submitted: ' + js2JSON(p.search_form.crazy_search_hash) + '\n');
54 p.search_results.clear_patrons();
55 p.search_results.add_patrons(
56 p.crazy_search( p.search_form.crazy_search_hash )
58 p.search_results.paged_tree.tree.view.selection.select( 0 );
59 p.search_results.paged_tree.tree.focus();
65 function patron_search_patron_search_results_init(p) {
66 p.search_results = patron_search_results_init( { 'w' : p.w, 'node' : p.patron_search_results_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
68 p.redraw_search_results = function() {
69 p.search_results.clear_search_results();
70 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
71 for (var i = 0; i < p._patron.checkouts().length; i++) {
72 p.search_results.add_search_results( [ i ] );
76 var patron_select_async_count = 0;
78 function gen_patron_select_async_function(count) {
79 return function (request) {
81 if (count == patron_select_async_count) {
83 p._patron = request.getResultObject();
85 patron_get_checkouts( p._patron, function(req) {
87 if (count == patron_select_async_count) {
89 p._patron.checkouts( req.getResultObject() );
91 patron_get_holds( p._patron, function(req) {
93 if (count == patron_select_async_count) {
95 p._patron.hold_requests( req.getResultObject() );
97 patron_get_bills( p._patron, function(req) {
99 if (count == patron_select_async_count) {
101 p._patron.bills = req.getResultObject();
102 render_fm(p.w.document,{'au':p._patron});
103 p.retrieve_button.disabled = false;
114 p.search_results.register_patron_select_callback(
116 sdump('D_PATRON_SEARCH','Firing patron_select_callback\n');
117 p.retrieve_button.disabled = true;
120 var patrons = get_list_from_tree_selection( p.search_results.paged_tree.tree );
121 /* Clear Current Patron */
122 p._patron = fake_patron();
123 render_fm( p.w.document, { 'au' : p._patron } );
124 /* Get patron and render status */
125 retrieve_patron_by_id(
126 patrons[ patrons.length - 1 ].getAttribute('record_id'),
127 gen_patron_select_async_function( ++patron_select_async_count )
130 sdump('D_ERROR_EXPECTED',js2JSON(E) + '\n');
134 p.search_results.register_flesh_patron_function(
135 function (treeitem) {
136 sdump('D_PATRON_SEARCH','Firing flesh_patron_function\n');
137 var record_id = treeitem.getAttribute('record_id');
138 retrieve_patron_by_id(
141 sdump('D_PATRON_SEARCH','flesh_patron callback\n');
143 var patron = request.getResultObject();
144 sdump('D_PATRON_SEARCH','patron = ' + js2JSON( patron ) + '\n');
146 p.search_results.map_patron_to_cols( patron, treeitem );
148 sdump('D_ERROR','map in flesh_patron callback\n' + E+ '\n');
151 sdump('D_ERROR','flesh_patron callback\n' + E+ '\n');
153 sdump('D_PATRON_SEARCH','leaving flesh_patron callback\n');
158 p.search_results.register_context_builder(
160 sdump('D_PATRON_DISPLAY','Firing context_builder\n');
161 empty_widget(p.search_results.paged_tree.popup);
162 var search_results = get_list_from_tree_selection( p.search_results.paged_tree.tree );
165 /*** PATRON DISPLAY ***/
166 menuitem = p.search_results.paged_tree.w.document.createElement('menuitem');
167 p.search_results.paged_tree.popup.appendChild( menuitem );
168 menuitem.setAttribute('label',getString('patron.context_display'));
169 menuitem.addEventListener(
172 sdump('D_PATRON_DISPLAY','Firing renew context\n');
173 for (var i = 0; i < search_results.length; i++) {
174 spawn_patron_display(
175 p.w.app_shell,'new_tab','main_tabbox',
177 'patron' : retrieve_patron_by_id(
178 search_results[i].getAttribute('record_id')
190 function patron_search(crazy_search_hash) {
191 sdump('D_PATRON_SEARCH',arg_dump(arguments));
192 sdump('D_TRACE_ENTER',arg_dump(arguments));
195 result = user_request(
197 'open-ils.actor.patron.search.advanced',
198 [ G.auth_ses[0], crazy_search_hash ]
200 sdump('D_PATRON_SEARCH','result.length = ' + result.length + '\n');
204 sdump('D_TRACE_EXIT',arg_dump(arguments));