]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/search_form.js
debugging
[Evergreen.git] / Open-ILS / xul / staff_client / server / patron / search_form.js
1 dump('entering patron/search_form.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 patron.search_form = 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_form.prototype = {
12
13         'init' : function( params ) {
14
15                 var obj = this;
16
17                 JSAN.use('OpenILS.data'); this.OpenILS = {}; 
18                 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
19
20                 JSAN.use('util.controller'); obj.controller = new util.controller();
21                 obj.controller.init(
22                         {
23                                 control_map : {
24                                         'cmd_broken' : [
25                                                 ['command'],
26                                                 function() { alert('Not Yet Implemented'); }
27                                         ],
28                                         'cmd_patron_search_submit' : [
29                                                 ['command'],
30                                                 function() {
31                                                         obj.submit();
32                                                 }
33                                         ],
34                                         'cmd_patron_search_clear' : [
35                                                 ['command'],
36                                                 function() { obj.controller.render(); }
37                                         ],
38                                         'family_name' : [
39                                                 ['render'],
40                                                 function(e) {
41                                                         return function() {
42                                                                 if (params.query&&params.query.family_name) {
43                                                                         e.setAttribute('value',params.query.family_name);
44                                                                         e.value = params.query.family_name;
45                                                                 } else {
46                                                                         e.value = '';
47                                                                 }
48                                                         };
49                                                 }
50                                         ],
51                                         'first_given_name' : [
52                                                 ['render'],
53                                                 function(e) {
54                                                         return function() {
55                                                                 if (params.query&&params.query.first_given_name) {
56                                                                         e.setAttribute('value',params.query.first_given_name);
57                                                                         e.value = params.query.first_given_name;
58                                                                 } else {
59                                                                         e.value = '';
60                                                                 }
61                                                         };
62                                                 }
63                                         ],
64                                         'second_given_name' : [
65                                                 ['render'],
66                                                 function(e) {
67                                                         return function() {
68                                                                 if (params.query&&params.query.second_given_name) {
69                                                                         e.setAttribute('value',params.query.second_given_name);
70                                                                         e.value = params.query.second_given_name;
71                                                                 } else {
72                                                                         e.value = '';
73                                                                 }
74                                                         };
75                                                 }
76                                         ],
77                                         'email' : [
78                                                 ['render'],
79                                                 function(e) {
80                                                         return function() {
81                                                                 if (params.query&&params.query.email) {
82                                                                         e.setAttribute('value',params.query.email);
83                                                                         e.value = params.query.email;
84                                                                 } else {
85                                                                         e.value = '';
86                                                                 }
87                                                         };
88                                                 }
89                                         ],
90                                         'phone' : [
91                                                 ['render'],
92                                                 function(e) {
93                                                         return function() {
94                                                                 if (params.query&&params.query.phone) {
95                                                                         e.setAttribute('value',params.query.phone);
96                                                                         e.value = params.query.phone;
97                                                                 } else {
98                                                                         e.value = '';
99                                                                 }
100                                                         };
101                                                 }
102                                         ],
103                                         'ident' : [
104                                                 ['render'],
105                                                 function(e) {
106                                                         return function() {
107                                                                 if (params.query&&params.query.ident) {
108                                                                         e.setAttribute('value',params.query.ident);
109                                                                         e.value = params.query.ident;
110                                                                 } else if (params.query&&params.query.ident_value) {
111                                                                         e.setAttribute('value',params.query.ident_value);
112                                                                         e.value = params.query.ident_value;
113                                                                 } else if (params.query&&params.query.ident_value2) {
114                                                                         e.setAttribute('value',params.query.ident_value2);
115                                                                         e.value = params.query.ident_value2;
116                                                                 } else {
117                                                                         e.value = '';
118                                                                 }
119                                                         };
120                                                 }
121                                         ],
122                                         'street1' : [
123                                                 ['render'],
124                                                 function(e) {
125                                                         return function() {
126                                                                 if (params.query&&params.query.street1) {
127                                                                         e.setAttribute('value',params.query.street1);
128                                                                         e.value = params.query.street1;
129                                                                 } else {
130                                                                         e.value = '';
131                                                                 }
132                                                         };
133                                                 }
134                                         ],
135                                         'street2' : [
136                                                 ['render'],
137                                                 function(e) {
138                                                         return function() {
139                                                                 if (params.query&&params.query.street2) {
140                                                                         e.setAttribute('value',params.query.street2);
141                                                                         e.value = params.query.street2;
142                                                                 } else {
143                                                                         e.value = '';
144                                                                 }
145                                                         };
146                                                 }
147                                         ],
148                                         'city' : [
149                                                 ['render'],
150                                                 function(e) {
151                                                         return function() {
152                                                                 if (params.query&&params.query.city) {
153                                                                         e.setAttribute('value',params.query.city);
154                                                                         e.value = params.query.city;
155                                                                 } else {
156                                                                         e.value = '';
157                                                                 }
158                                                         };
159                                                 }
160                                         ],
161                                         'state' : [
162                                                 ['render'],
163                                                 function(e) {
164                                                         return function() {
165                                                                 if (params.query&&params.query.state) {
166                                                                         e.setAttribute('value',params.query.state);
167                                                                         e.value = params.query.state;
168                                                                 } else {
169                                                                         e.value = '';
170                                                                 }
171                                                         };
172                                                 }
173                                         ],
174                                         'post_code' : [
175                                                 ['render'],
176                                                 function(e) {
177                                                         return function() {
178                                                                 if (params.query&&params.query.post_code) {
179                                                                         e.setAttribute('value',params.query.post_code);
180                                                                         e.value = params.query.post_code;
181                                                                 } else {
182                                                                         e.value = '';
183                                                                 }
184                                                         };
185                                                 }
186                                         ],
187                                         'inactive' : [ ['render'], function(e) { return function() {}; } ],
188                                 }
189                         }
190                 );
191
192                 obj.controller.render();
193                 var nl = document.getElementsByTagName('textbox');
194                 for (var i = 0; i < nl.length; i++) {
195                         nl[i].addEventListener('keypress',function(ev){
196                                 if (ev.target.tagName != 'textbox') return;
197                                 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
198                         },false);
199                 }
200                 document.getElementById('family_name').focus();
201
202         },
203
204         'on_submit' : function(q) {
205                 var msg = 'Query = ' + q;
206                 this.error.sdump('D_PATRON', msg);
207         },
208
209         'submit' : function() {
210                 var obj = this;
211                 var query = '';
212                 for (var i = 0; i < obj.controller.render_list.length; i++) {
213                 var id = obj.controller.render_list[i][0];
214                 var node = document.getElementById(id);
215                         if (node && node.value != '') {
216                                 if (query == '') {
217                                         // Responsible for own ? or &
218                                 } else {
219                                         query += '&';
220                                 }
221                                 if (id == 'inactive') {
222                                         query += id + '=' + window.escape(node.getAttribute('value'));
223                                         obj.error.sdump('D_DEBUG','id = ' + id + '  value = ' + node.getAttribute('value') + '\n');
224                                 } else {
225                                         var value = node.value.replace(/^\s+/,'').replace(/[\\\s]+$/,'');
226                                         //value = value.replace(/\d/g,'');
227                                         switch(id) {
228                                                 case 'family_name' :
229                                                 case 'first_given_name' :
230                                                 case 'second_given_name' :
231                                                         value = value.replace(/^\W+/g,'').replace(/\W+$/g,'');
232                                                 break;
233                                         }
234                                         if (value != '') {
235                                                 query += id + '=' + window.escape(value);
236                                                 obj.error.sdump('D_DEBUG','id = ' + id + '  value = ' + value + '\n');
237                                         }
238                                 }
239                         }
240                 }
241                 if (typeof obj.on_submit == 'function') {
242                         obj.on_submit(query);
243                 }
244                 if (typeof window.xulG == 'object' 
245                         && typeof window.xulG.on_submit == 'function') {
246                         obj.error.sdump('D_PATRON','patron.search_form: Calling external .on_submit()\n');
247                         window.xulG.on_submit(query);
248                 } else {
249                         obj.error.sdump('D_PATRON','patron.search_form: No external .on_query()\n');
250                 }
251         },
252
253 }
254
255 dump('exiting patron/search_form.js\n');