]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/search_result.js
get rid of Barcode column in patron search
[Evergreen.git] / Open-ILS / xul / staff_client / server / patron / search_result.js
1 dump('entering patron/search_result.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 patron.search_result = function (params) {
5
6         JSAN.use('util.error'); this.error = new util.error();
7         JSAN.use('util.network'); this.network = new util.network();
8         this.w = window;
9 }
10
11 patron.search_result.prototype = {
12
13         'result_cap' : 50,
14
15         'init' : function( params ) {
16
17                 var obj = this;
18
19                 obj.query = params['query'];
20
21                 JSAN.use('OpenILS.data'); this.OpenILS = {}; 
22                 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
23
24                 JSAN.use('util.list'); obj.list = new util.list('patron_list');
25                 function getString(s) { return obj.OpenILS.data.entities[s]; }
26
27                 JSAN.use('patron.util');
28                 var columns = patron.util.columns(
29                         {
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' },
36                         },
37                         {
38                                 'except_these' : [
39                                         'barcode',
40                                 ],
41                         }
42                 );
43                 obj.list.init(
44                         {
45                                 'columns' : columns,
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,
50                                                 function(req) {
51                                                         try {
52                                                                 var row = params.row;
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);
57                                                                 } else {
58                                                                         alert('typeof params.on_retrieve == ' + typeof params.on_retrieve);
59                                                                 }
60                                                         } catch(E) {
61                                                                 alert('error: ' + E);
62                                                         }
63                                                 }
64                                         );
65                                 },
66                                 'on_select' : function(ev) {
67                                         JSAN.use('util.functional');
68                                         var sel = obj.list.retrieve_selection();
69                                         var list = util.functional.map_list(
70                                                 sel,
71                                                 function(o) { return o.getAttribute('retrieve_id'); }
72                                         );
73                                         obj.controller.view.cmd_sel_clip.setAttribute('disabled', list.length < 1 );
74                                         if (typeof obj.on_select == 'function') {
75                                                 obj.on_select(list);
76                                         }
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);
80                                         } else {
81                                                 obj.error.sdump('D_PATRON','patron.search_result: No external .on_select()\n');
82                                         }
83                                 }
84                         }
85                 );
86                 JSAN.use('util.controller'); obj.controller = new util.controller();
87                 obj.controller.init(
88                         {
89                                 control_map : {
90                                         'cmd_broken' : [
91                                                 ['command'],
92                                                 function() { alert('Not Yet Implemented'); }
93                                         ],
94                                         'cmd_search_print' : [
95                                                 ['command'],
96                                                 function() {
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() {
100                                                                 try {
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() ];
104                                                                         lib.children(null);
105                                                                         var p = { 
106                                                                                 'lib' : lib,
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(),
113                                                                         };
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);
117                                                                 } catch(E) {
118                                                                         alert(E); 
119                                                                 }
120                                                         }
121                                                         obj.list.full_retrieve();
122
123                                                 }
124                                         ],
125                                         'cmd_sel_clip' : [
126                                                 ['command'],
127                                                 function() {
128                                                         try {
129                                                                 obj.list.clipboard();
130                                                         } catch(E) {
131                                                                 obj.error.standard_unexpected_error_alert('patron search clipboard',E);
132                                                         }
133                                                 }
134                                         ],
135                                         'cmd_save_cols' : [
136                                                 ['command'],
137                                                 function() {
138                                                         try {
139                                                                 obj.list.save_columns();
140                                                         } catch(E) {
141                                                                 obj.error.standard_unexpected_error_alert('patron search saving columns',E);
142                                                         }
143                                                 }
144                                         ],
145                                 }
146                         }
147                 );
148
149                 if (obj.query) obj.search(obj.query);
150         },
151
152         'search' : function(query) {
153                 var obj = this;
154                 var search_hash = {};
155                 obj.search_term_count = 0;
156                 var inactive = false;
157                 for (var i in query) {
158                         switch( i ) {
159                                 case 'phone': case 'ident': 
160                                 
161                                         search_hash[ i ] = {};
162                                         search_hash[ i ].value = query[i];
163                                         search_hash[i].group = 2; 
164                                         obj.search_term_count++;
165                                 break;
166
167                                 case 'street1': case 'street2': case 'city': case 'state': case 'post_code': 
168                                 
169                                         search_hash[ i ] = {};
170                                         search_hash[ i ].value = query[i];
171                                         search_hash[i].group = 1; 
172                                         obj.search_term_count++;
173                                 break;
174
175                                 case 'family_name': case 'first_given_name': case 'second_given_name': case 'email':
176
177                                         search_hash[ i ] = {};
178                                         search_hash[ i ].value = query[i];
179                                         search_hash[i].group = 0; 
180                                         obj.search_term_count++;
181                                 break;
182
183                                 case 'inactive':
184                                         if (query[i] == 'checked') inactive = true;
185                                 break;
186                         }
187                 }
188                 try {
189                         var results = [];
190
191                         var params = [ ses(), search_hash, obj.result_cap + 1, [ 'family_name ASC', 'first_given_name ASC', 'second_given_name ASC', 'dob DESC' ] ];
192                         if (inactive) {
193                                 params.push(1);
194                                 if (document.getElementById('active')) {
195                                         document.getElementById('active').setAttribute('hidden','false');
196                                         document.getElementById('active').hidden = false;
197                                 }
198                         }
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.');
205                                         return;
206                                 }
207                                 if (results.length == obj.result_cap+1) {
208                                         results.pop();
209                                         alert('Results capped at ' + obj.result_cap + ' patrons.');
210                                 }
211                         } else {
212                                 alert('Please enter some search terms.');
213                                 return;
214                         }
215
216                         //this.list.append( { 'retrieve_id' : results[i], 'row' : {} } );
217                         var funcs = [];
218
219                                 function gen_func(r) {
220                                         return function() {
221                                                 obj.list.append( { 'retrieve_id' : r, 'row' : {} } );
222                                         }
223                                 }
224
225                         for (var i = 0; i < results.length; i++) {
226                                 funcs.push( gen_func(results[i]) );
227                         }
228                         JSAN.use('util.exec'); var exec = new util.exec(4);
229                         exec.chain( funcs );
230
231                 } catch(E) {
232                         this.error.standard_unexpected_error_alert('patron.search_result.search',E);
233                 }
234         }
235
236 }
237
238 dump('exiting patron/search_result.js\n');