]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/search_result.js
Eliminate lang.js (old i18n approach).
[working/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
26                 JSAN.use('patron.util');
27                 var columns = patron.util.columns(
28                         {
29                                 /* 'active' : { 'hidden' : 'false' }, */
30                                 'barred' : { 'hidden' : 'false' },
31                                 'family_name' : { 'hidden' : 'false' },
32                                 'first_given_name' : { 'hidden' : 'false' },
33                                 'second_given_name' : { 'hidden' : 'false' },
34                                 'dob' : { 'hidden' : 'false' },
35                         },
36                         {
37                                 'except_these' : [
38                                         'barcode',
39                                 ],
40                         }
41                 );
42                 obj.list.init(
43                         {
44                                 'columns' : columns,
45                                 'map_row_to_columns' : patron.util.std_map_row_to_columns(),
46                                 'retrieve_row' : function(params) {
47                                         var id = params.retrieve_id;
48                                         var au_obj = patron.util.retrieve_au_via_id( ses(), id,
49                                                 function(req) {
50                                                         try {
51                                                                 var row = params.row;
52                                                                 if (typeof row.my == 'undefined') row.my = {};
53                                                                 row.my.au = req.getResultObject();
54                                                                 if (typeof params.on_retrieve == 'function') {
55                                                                         params.on_retrieve(row);
56                                                                 } else {
57                                                                         alert('typeof params.on_retrieve == ' + typeof params.on_retrieve);
58                                                                 }
59                                                         } catch(E) {
60                                                                 alert('error: ' + E);
61                                                         }
62                                                 }
63                                         );
64                                 },
65                                 'on_select' : function(ev) {
66                                         JSAN.use('util.functional');
67                                         var sel = obj.list.retrieve_selection();
68                                         var list = util.functional.map_list(
69                                                 sel,
70                                                 function(o) { return o.getAttribute('retrieve_id'); }
71                                         );
72                                         obj.controller.view.cmd_sel_clip.setAttribute('disabled', list.length < 1 );
73                                         if (typeof obj.on_select == 'function') {
74                                                 obj.on_select(list);
75                                         }
76                                         if (typeof window.xulG == 'object' && typeof window.xulG.on_select == 'function') {
77                                                 obj.error.sdump('D_PATRON','patron.search_result: Calling external .on_select()\n');
78                                                 window.xulG.on_select(list);
79                                         } else {
80                                                 obj.error.sdump('D_PATRON','patron.search_result: No external .on_select()\n');
81                                         }
82                                 }
83                         }
84                 );
85                 JSAN.use('util.controller'); obj.controller = new util.controller();
86                 obj.controller.init(
87                         {
88                                 control_map : {
89                                         'cmd_broken' : [
90                                                 ['command'],
91                                                 function() { alert('Not Yet Implemented'); }
92                                         ],
93                                         'cmd_search_print' : [
94                                                 ['command'],
95                                                 function() {
96                             try {
97                                                                 var p = { 
98                                                                         'template' : 'patron'
99                                                                 };
100                                                                 obj.list.print( p );
101                             } catch(E) {
102                                                                 obj.error.standard_unexpected_error_alert('patron search print',E);
103                             }
104                                                 }
105                                         ],
106                                         'cmd_sel_clip' : [
107                                                 ['command'],
108                                                 function() {
109                                                         try {
110                                                                 obj.list.clipboard();
111                                                         } catch(E) {
112                                                                 obj.error.standard_unexpected_error_alert('patron search clipboard',E);
113                                                         }
114                                                 }
115                                         ],
116                                         'cmd_save_cols' : [
117                                                 ['command'],
118                                                 function() {
119                                                         try {
120                                                                 obj.list.save_columns();
121                                                         } catch(E) {
122                                                                 obj.error.standard_unexpected_error_alert('patron search saving columns',E);
123                                                         }
124                                                 }
125                                         ],
126                                 }
127                         }
128                 );
129
130                 if (obj.query) obj.search(obj.query);
131         },
132
133         'search' : function(query) {
134                 var obj = this;
135                 var search_hash = {};
136                 obj.search_term_count = 0;
137                 var inactive = false;
138         var search_depth = 0;
139                 for (var i in query) {
140                         switch( i ) {
141                                 case 'phone': case 'ident': 
142                                 
143                                         search_hash[ i ] = {};
144                                         search_hash[ i ].value = query[i];
145                                         search_hash[i].group = 2; 
146                                         obj.search_term_count++;
147                                 break;
148
149                                 case 'street1': case 'street2': case 'city': case 'state': case 'post_code': 
150                                 
151                                         search_hash[ i ] = {};
152                                         search_hash[ i ].value = query[i];
153                                         search_hash[i].group = 1; 
154                                         obj.search_term_count++;
155                                 break;
156
157                                 case 'family_name': case 'first_given_name': case 'second_given_name': case 'email':
158
159                                         search_hash[ i ] = {};
160                                         search_hash[ i ].value = query[i];
161                                         search_hash[i].group = 0; 
162                                         obj.search_term_count++;
163                                 break;
164
165                                 case 'inactive':
166                                         if (query[i] == 'checked' || query[i] == 'true') inactive = true;
167                                 break;
168
169                 case 'search_depth':
170                     search_depth = function(a){return a;}(query[i]);
171                 break;
172                         }
173                 }
174                 try {
175                         var results = [];
176
177                         var params = [ ses(), search_hash, obj.result_cap + 1, [ 'family_name ASC', 'first_given_name ASC', 'second_given_name ASC', 'dob DESC' ] ];
178                         if (inactive) {
179                                 params.push(1);
180                                 if (document.getElementById('active')) {
181                                         document.getElementById('active').setAttribute('hidden','false');
182                                         document.getElementById('active').hidden = false;
183                                 }
184                         } else {
185                 params.push(0);
186             }
187             params.push(search_depth);
188                         if (obj.search_term_count > 0) {
189                                 //alert('search params = ' + obj.error.pretty_print( js2JSON( params ) ) );
190                                 results = this.network.simple_request( 'FM_AU_IDS_RETRIEVE_VIA_HASH', params );
191                                 if ( (results == null) || (typeof results.ilsevent != 'undefined') ) throw(results);
192                                 if (results.length == 0) {
193                                         alert('No patrons found matching search criteria.');
194                                         return;
195                                 }
196                                 if (results.length == obj.result_cap+1) {
197                                         results.pop();
198                                         alert('Results capped at ' + obj.result_cap + ' patrons.');
199                                 }
200                         } else {
201                                 alert('Please enter some search terms.');
202                                 return;
203                         }
204
205                         //this.list.append( { 'retrieve_id' : results[i], 'row' : {} } );
206                         var funcs = [];
207
208                                 function gen_func(r) {
209                                         return function() {
210                                                 obj.list.append( { 'retrieve_id' : r, 'row' : {}, 'to_bottom' : true, 'no_auto_select' : true } );
211                                         }
212                                 }
213
214                         for (var i = 0; i < results.length; i++) {
215                                 funcs.push( gen_func(results[i]) );
216                         }
217                         JSAN.use('util.exec'); var exec = new util.exec(4);
218                         exec.chain( funcs );
219
220                 } catch(E) {
221                         this.error.standard_unexpected_error_alert('patron.search_result.search',E);
222                 }
223         }
224
225 }
226
227 dump('exiting patron/search_result.js\n');