1 dump('entering patron/search_result.js\n');
3 function $(id) { return document.getElementById(id); }
5 if (typeof patron == 'undefined') patron = {};
6 patron.search_result = function (params) {
8 JSAN.use('util.error'); this.error = new util.error();
9 JSAN.use('util.network'); this.network = new util.network();
13 patron.search_result.prototype = {
17 'init' : function( params ) {
21 obj.query = params['query'];
22 obj.search_limit = params['search_limit'];
23 obj.search_sort = params['search_sort'];
25 JSAN.use('OpenILS.data'); this.OpenILS = {};
26 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
27 var obscure_dob = String( obj.OpenILS.data.hash.aous['circ.obscure_dob'] ) == 'true';
29 var result_cap_setting = obj.OpenILS.data.hash.aous[
30 'ui.patron_search.result_cap'
32 if (typeof result_cap_setting != 'undefined') {
33 obj.result_cap = Math.abs( result_cap_setting );
36 JSAN.use('util.list'); obj.list = new util.list('patron_list');
38 JSAN.use('patron.util');
39 var columns = obj.list.fm_columns('au',{
40 '*' : { 'remove_virtual' : true, 'expanded_label' : false, 'hidden' : true, 'sort_headers' : true },
41 'au_barcode' : { 'hidden' : false },
42 'au_barred' : { 'hidden' : false },
43 'au_family_name' : { 'hidden' : false },
44 'au_first_given_name' : { 'hidden' : false },
45 'au_second_given_name' : { 'hidden' : false },
46 'au_dob' : { 'hidden' : false },
47 'au_profile' : { 'fleshed_display_field' : 'name' },
48 'au_ident_type' : { 'fleshed_display_field' : 'name' },
49 'au_ident_type2' : { 'fleshed_display_field' : 'name' },
50 'au_mailing_address' : { 'remove_me' : true },
51 'au_billing_address' : { 'remove_me' : true },
52 'au_net_access_level' : { 'fleshed_display_field' : 'name' }
54 obj.list.fm_columns('ac',{
55 '*' : { 'remove_virtual' : true, 'expanded_label' : true, 'hidden' : true },
56 'ac_barcode' : { 'hidden' : false }
59 obj.list.fm_columns('aua',{
61 'dataobj' : 'billing_aua',
62 'remove_virtual' : true,
63 'label_prefix' : $('patronStrings').getString('staff.patron.search_result.billing_address_column_label_prefix'),
68 obj.list.fm_columns('aua',{
70 'dataobj' : 'mailing_aua',
71 'remove_virtual' : true,
72 'label_prefix' : $('patronStrings').getString('staff.patron.search_result.mailing_address_column_label_prefix'),
78 obj.dblclick_handler = function(ev) {
79 JSAN.use('util.functional');
80 var sel = obj.list.retrieve_selection();
81 var list = util.functional.map_list(
83 function(o) { return o.getAttribute('retrieve_id'); }
85 obj.controller.view.cmd_sel_clip.setAttribute('disabled', list.length < 1 );
86 if (typeof obj.on_dblclick == 'function') {
87 obj.on_dblclick(list);
89 if (typeof window.xulG == 'object' && typeof window.xulG.on_dblclick == 'function') {
90 obj.error.sdump('D_PATRON','patron.search_result: Calling external .on_dblclick()\n');
91 window.xulG.on_dblclick(list);
93 obj.error.sdump('D_PATRON','patron.search_result: No external .on_dblclick()\n');
100 'retrieve_row' : function(params) {
101 var id = params.retrieve_id;
102 var au_obj = patron.util.retrieve_fleshed_au_via_id(
105 ["card","billing_address","mailing_address"],
108 var row = params.row;
109 if (typeof row.my == 'undefined') row.my = {};
110 row.my.au = req.getResultObject();
111 row.my.ac = row.my.au.card();
112 row.my.billing_aua = row.my.au.billing_address();
113 row.my.mailing_aua = row.my.au.mailing_address();
114 if (typeof params.on_retrieve == 'function') {
115 params.on_retrieve(row);
117 alert($("patronStrings").getFormattedString('staff.patron.search_result.init.typeof_params', [typeof params.on_retrieve]));
120 alert('error: ' + E);
125 'on_dblclick' : obj.dblclick_handler,
126 'on_select' : function(ev) {
127 JSAN.use('util.functional');
128 var sel = obj.list.retrieve_selection();
129 var list = util.functional.map_list(
131 function(o) { return o.getAttribute('retrieve_id'); }
133 obj.controller.view.cmd_sel_clip.setAttribute('disabled', list.length < 1 );
134 if (typeof obj.on_select == 'function') {
137 if (typeof window.xulG == 'object' && typeof window.xulG.on_select == 'function') {
138 obj.error.sdump('D_PATRON','patron.search_result: Calling external .on_select()\n');
139 window.xulG.on_select(list);
141 obj.error.sdump('D_PATRON','patron.search_result: No external .on_select()\n');
146 JSAN.use('util.controller'); obj.controller = new util.controller();
152 function() { alert($("commonStrings").getString('common.unimplemented')); }
154 'cmd_search_print' : [
158 obj.list.dump_csv_to_printer();
160 obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.search_result.init.search_print'),E);
168 obj.list.clipboard();
170 obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.search_result.init.search_clipboard'),E);
178 obj.list.save_columns();
180 obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.search_result.init.search_saving_columns'),E);
188 if (obj.query) obj.search(obj.query);
191 'cleanup' : function( params ) {
193 obj.controller.cleanup();
198 'search' : function(query) {
200 var search_hash = {};
201 obj.search_term_count = 0;
202 var inactive = false;
203 var search_depth = 0;
204 for (var i in query) {
207 search_hash[ i ] = {};
208 search_hash[ i ].value = query[i];
209 search_hash[i].group = 3;
210 obj.search_term_count++;
213 case 'phone': case 'ident':
215 search_hash[ i ] = {};
216 search_hash[ i ].value = query[i];
217 search_hash[i].group = 2;
218 obj.search_term_count++;
221 case 'street1': case 'street2': case 'city': case 'state': case 'post_code':
223 search_hash[ i ] = {};
224 search_hash[ i ].value = query[i];
225 search_hash[i].group = 1;
226 obj.search_term_count++;
229 case 'family_name': case 'first_given_name': case 'second_given_name': case 'email': case 'alias': case 'usrname': case 'profile':
231 search_hash[ i ] = {};
232 search_hash[ i ].value = query[i];
233 search_hash[i].group = 0;
234 obj.search_term_count++;
238 if (query[i] == 'checked' || query[i] == 'true') inactive = true;
242 search_depth = function(a){return a;}(query[i]);
249 var sort_params = obj.search_sort;
251 sort_params = [ 'family_name ASC', 'first_given_name ASC', 'second_given_name ASC', 'dob DESC' ];
256 typeof obj.search_limit != 'undefined' && typeof obj.search_limit != 'null' ? obj.search_limit : obj.result_cap + 1,
261 if (document.getElementById('active')) {
262 document.getElementById('active').setAttribute('hidden','false');
263 document.getElementById('active').hidden = false;
268 params.push(search_depth);
269 if (obj.search_term_count > 0) {
270 //alert('search params = ' + obj.error.pretty_print( js2JSON( params ) ) );
271 results = this.network.simple_request( 'FM_AU_IDS_RETRIEVE_VIA_HASH', params );
272 if ( results == null ) results = [];
273 if (typeof results.ilsevent != 'undefined') throw(results);
274 if (results.length == 0) {
275 alert($("patronStrings").getString('staff.patron.search_result.search.no_patrons_found'));
278 if (results.length == typeof obj.search_limit != 'undefined' && typeof obj.search_limit != 'null' ? obj.search_limit : obj.result_cap+1) {
280 alert($("patronStrings").getFormattedString('staff.patron.search_result.search.capped_results', [typeof obj.search_limit != 'undefined' && typeof obj.search_limit != 'null' ? obj.search_limit : obj.result_cap]));
283 alert($("patronStrings").getString('staff.patron.search_result.search.enter_search_terms'));
288 //this.list.append( { 'retrieve_id' : results[i], 'row' : {} } );
291 function gen_func(r) {
293 obj.list.append( { 'retrieve_id' : r, 'row' : {}, 'to_bottom' : true, 'no_auto_select' : true } );
297 for (var i = 0; i < results.length; i++) {
298 funcs.push( gen_func(results[i]) );
300 JSAN.use('util.exec'); var exec = new util.exec(4);
304 this.error.standard_unexpected_error_alert('patron.search_result.search',E);
310 dump('exiting patron/search_result.js\n');