1 dump('entering patron/search_result.js\n');
3 if (typeof patron == 'undefined') patron = {};
4 patron.search_result = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.network'); this.network = new util.network();
11 patron.search_result.prototype = {
15 'init' : function( params ) {
19 obj.query = params['query'];
21 JSAN.use('OpenILS.data'); this.OpenILS = {};
22 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
24 JSAN.use('util.list'); obj.list = new util.list('patron_list');
25 function getString(s) { return obj.OpenILS.data.entities[s]; }
27 JSAN.use('patron.util');
28 var columns = patron.util.columns(
30 /* 'active' : { 'hidden' : 'false' }, */
31 'barred' : { 'hidden' : 'false' },
32 'family_name' : { 'hidden' : 'false' },
33 'first_given_name' : { 'hidden' : 'false' },
34 'second_given_name' : { 'hidden' : 'false' },
35 'dob' : { 'hidden' : 'false' },
46 'map_row_to_column' : patron.util.std_map_row_to_column(),
47 'retrieve_row' : function(params) {
48 var id = params.retrieve_id;
49 var au_obj = patron.util.retrieve_au_via_id( ses(), id,
53 if (typeof row.my == 'undefined') row.my = {};
54 row.my.au = req.getResultObject();
55 if (typeof params.on_retrieve == 'function') {
56 params.on_retrieve(row);
58 alert('typeof params.on_retrieve == ' + typeof params.on_retrieve);
66 'on_select' : function(ev) {
67 JSAN.use('util.functional');
68 var sel = obj.list.retrieve_selection();
69 var list = util.functional.map_list(
71 function(o) { return o.getAttribute('retrieve_id'); }
73 obj.controller.view.cmd_sel_clip.setAttribute('disabled', list.length < 1 );
74 if (typeof obj.on_select == 'function') {
77 if (typeof window.xulG == 'object' && typeof window.xulG.on_select == 'function') {
78 obj.error.sdump('D_PATRON','patron.search_result: Calling external .on_select()\n');
79 window.xulG.on_select(list);
81 obj.error.sdump('D_PATRON','patron.search_result: No external .on_select()\n');
86 JSAN.use('util.controller'); obj.controller = new util.controller();
92 function() { alert('Not Yet Implemented'); }
94 'cmd_search_print' : [
97 dump( js2JSON( obj.list.dump_with_keys() ) );
98 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
99 obj.list.on_all_fleshed = function() {
101 dump( js2JSON( obj.list.dump_with_keys() ) + '\n' );
102 obj.OpenILS.data.stash_retrieve();
103 var lib = data.hash.aou[ data.list.au[0].ws_ou() ];
107 'staff' : data.list.au[0],
108 'header' : data.print_list_templates.patron.header,
109 'line_item' : data.print_list_templates.patron.line_item,
110 'footer' : data.print_list_templates.patron.footer,
111 'type' : data.print_list_templates.patron.type,
112 'list' : obj.list.dump_with_keys(),
114 JSAN.use('util.print'); var print = new util.print();
115 print.tree_list( p );
116 setTimeout(function(){obj.list.on_all_fleshed = null;},0);
121 obj.list.full_retrieve();
129 obj.list.clipboard();
131 obj.error.standard_unexpected_error_alert('patron search clipboard',E);
139 obj.list.save_columns();
141 obj.error.standard_unexpected_error_alert('patron search saving columns',E);
149 if (obj.query) obj.search(obj.query);
152 'search' : function(query) {
154 var search_hash = {};
155 obj.search_term_count = 0;
156 var inactive = false;
157 for (var i in query) {
159 case 'phone': case 'ident':
161 search_hash[ i ] = {};
162 search_hash[ i ].value = query[i];
163 search_hash[i].group = 2;
164 obj.search_term_count++;
167 case 'street1': case 'street2': case 'city': case 'state': case 'post_code':
169 search_hash[ i ] = {};
170 search_hash[ i ].value = query[i];
171 search_hash[i].group = 1;
172 obj.search_term_count++;
175 case 'family_name': case 'first_given_name': case 'second_given_name': case 'email':
177 search_hash[ i ] = {};
178 search_hash[ i ].value = query[i];
179 search_hash[i].group = 0;
180 obj.search_term_count++;
184 if (query[i] == 'checked') inactive = true;
191 var params = [ ses(), search_hash, obj.result_cap + 1, [ 'family_name ASC', 'first_given_name ASC', 'second_given_name ASC', 'dob DESC' ] ];
194 if (document.getElementById('active')) {
195 document.getElementById('active').setAttribute('hidden','false');
196 document.getElementById('active').hidden = false;
199 if (obj.search_term_count > 0) {
200 //alert('search params = ' + obj.error.pretty_print( js2JSON( params ) ) );
201 results = this.network.simple_request( 'FM_AU_IDS_RETRIEVE_VIA_HASH', params );
202 if ( (results == null) || (typeof results.ilsevent != 'undefined') ) throw(results);
203 if (results.length == 0) {
204 alert('No patrons found matching search criteria.');
207 if (results.length == obj.result_cap+1) {
209 alert('Results capped at ' + obj.result_cap + ' patrons.');
212 alert('Please enter some search terms.');
216 //this.list.append( { 'retrieve_id' : results[i], 'row' : {} } );
219 function gen_func(r) {
221 obj.list.append( { 'retrieve_id' : r, 'row' : {} } );
225 for (var i = 0; i < results.length; i++) {
226 funcs.push( gen_func(results[i]) );
228 JSAN.use('util.exec'); var exec = new util.exec(4);
232 this.error.standard_unexpected_error_alert('patron.search_result.search',E);
238 dump('exiting patron/search_result.js\n');