]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js
minor
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_utils.js
1 sdump('D_TRACE','Loading patron_utils.js\n');
2
3 function fake_patron() {
4         sdump('D_PATRON_UTILS',arg_dump(arguments));
5         var p = new au(); 
6         p.family_name( 'Retrieving' ); 
7         p.checkouts( [] ); 
8         p.hold_requests( [] ); 
9         p.credit_forward_balance('0.00');
10         p.bills = [];
11         return p;
12 }
13
14 function hold_status_as_text( status ) {
15         sdump('D_PATRON_UTILS',arg_dump(arguments));
16         if (typeof(status) == 'object') status = status.status();
17         var text;
18         switch(status) {
19                 case "1" : text = getString('holds_status_waiting_for_copy'); break;
20                 case "2" : text = getString('holds_status_waiting_for_capture'); break;
21                 case "3" : text = getString('holds_status_in_transit'); break;
22                 case "4" : text = getString('holds_status_available'); break;
23                 default : text = "Eh?"; break;
24         }
25         return text;
26 }
27
28 function patron_get_full_name( au ) {
29         sdump('D_PATRON_UTILS',arg_dump(arguments));
30         var name = '';
31         if (au.prefix()) name += au.prefix() + ' ';     
32         if (au.family_name()) name += au.family_name() + ', ';  
33         if (au.first_given_name()) name += au.first_given_name() + ' '; 
34         if (au.second_given_name()) name += au.second_given_name() + ' ';       
35         if (au.suffix()) name += au.suffix() + ' ';     
36         return name;
37 }
38
39 function patron_get_barcode( au ) {
40         sdump('D_PATRON_UTILS',arg_dump(arguments));
41         try {
42                 if (au && au.card && au.card() ) {
43                         if ( (au.card()!='null') && (typeof(au.card())=='object') ) {
44                                 return au.card().barcode();
45                         } else {
46                                 return find_id_object_in_list( au.cards(), au.card() ).barcode();
47                         }
48                 }
49         } catch(E) {
50                 sdump('D_ERROR',E);
51         }
52         return '???';
53 }
54
55 function patron_get_bills( au, f ) {
56         sdump('D_PATRON_UTILS',arg_dump(arguments));
57         try {
58                 var bills = user_request(
59                         'open-ils.actor',
60                         'open-ils.actor.user.transactions.have_balance',
61                         [ mw.G.auth_ses[0], au.id() ],
62                         f
63                 )[0];
64
65                 if (!f) {
66                         sdump('D_PATRON_UTILS','bills = ' + js2JSON(bills) + '\n');
67                         au.bills = bills;   // FIXME: make bills a virtual field of au
68                         return bills;
69                 }
70         } catch(E) {
71                 sdump('D_ERROR',js2JSON(E) + '\n');
72                 return null;
73         }
74
75 }
76
77 function patron_get_bills_total( au ) {
78         sdump('D_PATRON_UTILS',arg_dump(arguments));
79         if (au.bills == null || au.bills == undefined)
80                 return '???';
81         else {
82                 return get_bills_total( au.bills );
83         }
84 }
85
86 function get_bills_total( bills ) {
87         sdump('D_PATRON_UTILS',arg_dump(arguments));
88         var total = 0;
89         for (var i = 0; i < bills.length; i++) {
90                 total += dollars_float_to_cents_integer( bills[i].balance_owed() );
91         }
92         sdump('D_PATRON_UTILS','bills_total $$$ = ' + cents_as_dollars( total ) + '\n');
93         return cents_as_dollars( total );
94 }
95
96 function patron_get_credit_total( au ) {
97         sdump('D_PATRON_UTILS',arg_dump(arguments));
98         /* FIXME: I can use CSS to style this number as money. */
99         return '$' + au.credit_forward_balance();
100 }
101
102 function patron_get_checkouts( au, f ) {
103         sdump('D_PATRON_UTILS',arg_dump(arguments));
104         try {
105                 var checkouts = user_request(
106                         'open-ils.circ',
107                         'open-ils.circ.actor.user.checked_out',
108                         [ mw.G.auth_ses[0], au.id() ],
109                         f
110                 )[0];
111
112                 if (!f) {
113                         sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(checkouts) + '\n');
114                         if (!checkouts) checkouts = [];
115                         au.checkouts( checkouts );
116                         return checkouts;
117                 }
118         } catch(E) {
119                 sdump('D_ERROR',js2JSON(E) + '\n');
120                 return null;
121         }
122 }
123
124 function patron_get_checkouts_total( au ) {
125         sdump('D_PATRON_UTILS',arg_dump(arguments));
126         if (au.checkouts() == null)
127                 return '???';
128         else
129                 return au.checkouts().length;
130 }
131
132 // Need an API call or virtual field to determine this
133 function patron_get_checkouts_overdue_total( au ) {
134         sdump('D_PATRON_UTILS',arg_dump(arguments));
135         if (! au.checkouts()) patron_get_checkouts( au );
136         var total = 0;
137         if ( (au.checkouts() != null) && (typeof(au.checkouts())=='object') ) {
138                 for (var i = 0; i < au.checkouts().length; i++) {
139                         var item = au.checkouts()[i];
140                         var due_date = item.circ.due_date();
141                         due_date = due_date.substr(0,4) + due_date.substr(5,2) + due_date.substr(8,2);
142                         var today = formatted_date( new Date() , '%Y%m%d' );
143                         if (today > due_date) total++;
144                 }
145         }
146         sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
147         return total;
148 }
149
150 function patron_get_holds( au, f ) {
151         sdump('D_PATRON_UTILS',arg_dump(arguments));
152         try {
153                 var hold_requests = user_request(
154                         'open-ils.circ',
155                         'open-ils.circ.holds.retrieve',
156                         [ mw.G.auth_ses[0], au.id() ],
157                         f
158                 )[0];
159
160                 if (!f) {
161                         sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
162                         au.hold_requests( hold_requests );
163                         return hold_requests;
164                 }
165         } catch(E) {
166                 sdump('D_ERROR',js2JSON(E) + '\n');
167                 return null;
168         }
169 }
170
171 function patron_get_holds_total( au ) {
172         sdump('D_PATRON_UTILS',arg_dump(arguments));
173         if (au.hold_requests() == null)
174                 return '???';
175         else
176                 return au.hold_requests().length;
177 }
178
179 function patron_get_hold_status( hold, f ) {
180         sdump('D_PATRON_UTILS',arg_dump(arguments));
181         try {
182                 var status = user_request(
183                         'open-ils.circ',
184                         'open-ils.circ.hold.status.retrieve',
185                         [ mw.G.auth_ses[0], hold.id() ],
186                         f
187                 )[0];
188
189                 if (!f) {
190                         sdump('D_PATRON_UTILS','status = ' + status + '\n');
191                         hold.status( status );
192                         return status;
193                 }
194         } catch(E) {
195                 sdump('D_ERROR',js2JSON(E) + '\n');
196                 return null;
197         }
198 }
199
200 function patron_get_holds_available_total( au ) {
201         sdump('D_PATRON_UTILS',arg_dump(arguments));
202         var total = 0;
203         if ( (au.hold_requests() != null) && (typeof(au.hold_requests()) == 'object') ) {
204                 for (var i = 0; i < au.hold_requests().length; i++) {
205                         var hold = au.hold_requests()[i];
206                         if (hold.capture_time()) total++;
207                 }
208         }
209         sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
210         return total;
211 }
212
213 function patron_get_home_ou_name( au ) {
214         sdump('D_PATRON_UTILS',arg_dump(arguments));
215         if (au && 
216                 au.home_ou && 
217                 au.home_ou() && 
218                 mw.G.org_tree_hash &&
219                 mw.G.org_tree_hash[ au.home_ou() ] && 
220                 mw.G.org_tree_hash[ au.home_ou() ].name &&
221                 mw.G.org_tree_hash[ au.home_ou() ].name()
222         ) {
223                 return mw.G.org_tree_hash[ au.home_ou() ].name();
224         } else {
225                 return null;
226         }
227 }
228
229 function patron_get_ident1_type_as_text( au ) {
230         sdump('D_PATRON_UTILS',arg_dump(arguments));
231         if (au && 
232                 au.ident_type && 
233                 au.ident_type() && 
234                 mw.G.cit_hash &&
235                 mw.G.cit_hash[ au.ident_type() ] && 
236                 mw.G.cit_hash[ au.ident_type() ].name &&
237                 mw.G.cit_hash[ au.ident_type() ].name()
238         ) {
239                 return mw.G.cit_hash[ au.ident_type() ].name();
240         } else {
241                 return null;
242         }
243 }
244
245 function patron_get_ident2_type_as_text( au ) {
246         sdump('D_PATRON_UTILS',arg_dump(arguments));
247         if (au && 
248                 au.ident_type2 && 
249                 au.ident_type2() && 
250                 mw.G.cit_hash &&
251                 mw.G.cit_hash[ au.ident_type2() ] && 
252                 mw.G.cit_hash[ au.ident_type2() ].name &&
253                 mw.G.cit_hash[ au.ident_type2() ].name()
254         ) {
255                 return mw.G.cit_hash[ au.ident_type2() ].name();
256         } else {
257                 return null;
258         }
259 }
260
261 function patron_get_profile_as_text( au ) {
262         sdump('D_PATRON_UTILS',arg_dump(arguments));
263         if (au && 
264                 au.profile && 
265                 au.profile() && 
266                 mw.G.ap_hash &&
267                 mw.G.ap_hash[ au.profile() ] && 
268                 mw.G.ap_hash[ au.profile() ].name &&
269                 mw.G.ap_hash[ au.profile() ].name()
270         ) {
271                 return mw.G.ap_hash[ au.profile() ].name();
272         } else {
273                 return null;
274         }
275 }
276
277 function patron_get_standing_as_text( au ) {
278         sdump('D_PATRON_UTILS',arg_dump(arguments));
279         if (au && 
280                 au.standing && 
281                 au.standing() && 
282                 mw.G.cst_hash &&
283                 mw.G.cst_hash[ au.standing() ] && 
284                 mw.G.cst_hash[ au.standing() ].value &&
285                 mw.G.cst_hash[ au.standing() ].value()
286         ) {
287                 return mw.G.cst_hash[ au.standing() ].value();
288         } else {
289                 return null;
290         }
291 }
292
293 function patron_get_standing_css_style( value ) {
294         sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
295         switch(value) {
296                 case 'Good' : case '1' : return 'background-color: lightgreen;'; break;
297                 case 'Barred' : case '2' : return 'background-color: yellow;'; break;
298                 case 'Blocked' : case '3' : return 'background-color: red;'; break;
299                 default: return 'background-color: white;'; break;
300         }
301 }
302
303 function patron_pay_bills( payment_blob ) {
304         sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
305         try {
306                 //alert("Bill's API call goes here.  payment_blob = \n" + pretty_print( js2JSON( payment_blob ) ) + '\n');
307                 alert( 'payment_blob\n' + js2JSON( payment_blob ) );
308                 var result = user_request(
309                         'open-ils.circ',
310                         'open-ils.circ.money.payment',
311                         [ mw.G.auth_ses[0], payment_blob ]
312                 )[0];
313                 alert( pretty_print( js2JSON( result ) ) );
314                 return true;
315         } catch(E) {
316                 handle_error(E);
317                 return false;
318         }
319 }
320
321 function retrieve_patron_by_barcode( barcode, f ) {
322         sdump('D_PATRON_UTILS',arg_dump(arguments));
323         if (!barcode) return null;
324         return user_request( 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode', [ mw.G.auth_ses[0], barcode ], f )[0];
325 }
326
327 function retrieve_patron_by_id( id, f ) {
328         sdump('D_PATRON_UTILS',arg_dump(arguments));
329         if (!id) return null;
330         return user_request( 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve', [ mw.G.auth_ses[0], id ], f )[0];
331 }
332
333 function save_patron( au, f ) {
334         sdump('D_PATRON_UTILS',arg_dump(arguments));
335         try {
336                 var result = user_request(
337                         'open-ils.actor',
338                         'open-ils.actor.patron.update',
339                         [ mw.G.auth_ses[0], au ],
340                         f
341                 )[0];
342                 if (!f) sdump('D_PATRON_UTILS','result = ' + js2JSON(result) + '\n');
343                 return result;
344         } catch(E) {
345                 handle_error(E);
346                 return null;
347         }
348 }
349
350 function patron_edit_rows() {
351         var rows = [
352 {
353         'id' : 'standing', 'label' : getString('au_standing_label'), 'flex' : 1, 'class' : 'pale_violet_red',
354         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.cst_hash[ $$.standing() ].value()',
355         'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.cst_hash,function(key,value){return [value.value(), key];}),
356         'entry_event' : 'command', 'entry_code' : '{ au.standing( ev.target.value ); }',
357         'rdefault' : '.standing()'
358 },
359 {
360         'id' : 'alert_message', 'label' : getString('au_alert_message_label'), 'flex' : 1, 'class' : 'pale_violet_red',
361         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.alert_message()',
362         'entry_widget' : 'textbox', 'rdefault' : '.alert_message()',
363         'entry_event' : 'change', 'entry_code' : '{ alert(js2JSON(au)); au.alert_message( ev.target.value ); }'
364 },
365 {
366         'id' : 'create_date', 'label' : getString('au_create_date_label'), 'flex' : 1, 'class' : 'peach_puff',
367         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.create_date()',
368         'entry_widget' : 'textbox', 'entry_widget_attributes' : { 'readonly' : 'true' }, 'rdefault' : '.create_date()',
369         'entry_event' : 'change', 'entry_code' : '{ au.create_date( ev.target.value ); }'
370 },
371 {
372         'id' : 'expire_date', 'label' : getString('au_expire_date_label'), 'flex' : 1, 'class' : 'peach_puff',
373         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.expire_date()',
374         'entry_widget' : 'textbox', 'rdefault' : '.expire_date()',
375         'entry_event' : 'change', 'entry_code' : '{ au.expire_date( ev.target.value ); }'
376 },
377 {
378         'id' : 'active', 'label' : getString('au_active_label'), 'flex' : 1, 'class' : 'peach_puff',
379         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'yesno($$.active())',
380         'entry_widget' : 'menulist', 'populate_with' : { 'Yes' : 1 , 'No' : 0 }, 'rdefault' : '.active()',
381         'entry_event' : 'command', 'entry_code' : '{ au.active( ev.target.value ); }'
382 },
383 {
384         'id' : 'card', 'label' : getString('au_card_label'), 'flex' : 1, 'class' : 'peach_puff',
385         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.card().barcode()',
386         'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'New Card', 'oncommand' : 'alert("test");' },
387         'entry_event' : 'command', 'entry_code' : '{ new_card(au); }'
388 },
389 {
390         'id' : 'home_ou', 'label' : getString('au_home_ou_label'), 'flex' : 1, 'class' : 'peach_puff',
391         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.org_tree_hash[ $$.home_ou() ].shortname()',
392         'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.org_tree_hash,function(key,value){return [value.shortname(), key];}),
393         'entry_event' : 'command', 'entry_code' : '{ au.home_ou( ev.target.value ); }',
394         'rdefault' : '.home_ou()'
395 },
396 {
397         'id' : 'profile', 'label' : getString('au_profile_label'), 'flex' : 1, 'class' : 'peach_puff',
398         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'ap_hash[ $$.profile() ].name()',
399         'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.ap_hash,function(key,value){return [value.name(), key];}),
400         'entry_event' : 'command', 'entry_code' : '{ au.profile( ev.target.value ); }',
401         'rdefault' : '.profile()'
402 },
403 {
404         'id' : 'prefix', 'label' : getString('au_prefix_label'), 'flex' : 1, 'class' : 'dark_salmon',
405         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.prefix()',
406         'entry_widget' : 'menulist', 'entry_widget_attributes' : { 'editable' : 'true' },
407         'entry_event' : 'command', 'entry_code' : '{ au.prefix( ev.target.value ); }',
408         'populate_with' : { 'Mr.' : 'Mr.' , 'Mrs.' : 'Mrs.' }, 'rdefault' : '.prefix()'
409 },
410 {
411         'id' : 'family_name', 'label' : getString('au_family_name_label'), 'flex' : 1, 'class' : 'dark_salmon',
412         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.family_name()',
413         'entry_widget' : 'textbox', 'rdefault' : '.family_name()',
414         'entry_event' : 'change', 'entry_code' : '{ au.family_name( ev.target.value ); }'
415 },
416 {
417         'id' : 'first_given_name', 'label' : getString('au_first_given_name_label'), 'flex' : 1, 'class' : 'dark_salmon',
418         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.first_given_name()',
419         'entry_widget' : 'textbox', 'rdefault' : '.first_given_name()',
420         'entry_event' : 'change', 'entry_code' : '{ au.frist_given_name( ev.target.value ); }'
421 },
422 {
423         'id' : 'second_given_name', 'label' : getString('au_second_given_name_label'), 'flex' : 1, 'class' : 'dark_salmon',
424         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.second_given_name()',
425         'entry_widget' : 'textbox', 'rdefault' : '.second_given_name()',
426         'entry_event' : 'change', 'entry_code' : '{ au.second_given_name( ev.target.value ); }'
427 },
428 {
429         'id' : 'suffix', 'label' : getString('au_suffix_label'), 'flex' : 1, 'class' : 'dark_salmon',
430         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.suffix()',
431         'entry_widget' : 'menulist', 'entry_widget_attributes' : { 'editable' : 'true' },
432         'populate_with' : { 'Sr.' : 'Sr.' , 'Jr.' : 'Jr.' }, 'rdefault' : '.suffix()',
433         'entry_event' : 'command', 'entry_code' : '{ au.suffix( ev.target.value ); }'
434 },
435 {
436         'id' : 'dob', 'label' : getString('au_dob_label'), 'flex' : 1, 'class' : 'cadet_blue',
437         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.dob()',
438         'entry_widget' : 'textbox', 'rdefault' : '.dob()',
439         'entry_event' : 'change', 'entry_code' : '{ au.dob( ev.target.value ); }'
440 },
441 {
442         'id' : 'ident_type', 'label' : getString('au_ident_type_label'), 'flex' : 1, 'class' : 'cadet_blue',
443         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.cit_hash[ $$.ident_type() ].name()',
444         'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.cit_hash,function(key,value){return [value.name(), key];}), 
445         'rdefault' : '.ident_type()',
446         'entry_event' : 'command', 'entry_code' : '{ au.ident_type( ev.target.value ); }'
447 },
448 {
449         'id' : 'ident_value', 'label' : getString('au_ident_value_label'), 'flex' : 1, 'class' : 'cadet_blue',
450         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_value()',
451         'entry_widget' : 'textbox', 'rdefault' : '.ident_value()',
452         'entry_event' : 'change', 'entry_code' : '{ au.ident_value( ev.target.value ); }'
453 },
454 {
455         'id' : 'ident_type2', 'label' : getString('au_ident_type2_label'), 'flex' : 1, 'class' : 'cadet_blue',
456         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.cit_hash[ $$.ident_type2() ].name()',
457         'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.cit_hash,function(key,value){return [value.name(), key];}), 
458         'rdefault' : '.ident_type2()',
459         'entry_event' : 'command', 'entry_code' : '{ au.ident_type2( ev.target.value ); }'
460 },
461 {
462         'id' : 'ident_value2', 'label' : getString('au_ident_value2_label'), 'flex' : 1, 'class' : 'cadet_blue',
463         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_value2()',
464         'entry_widget' : 'textbox', 'rdefault' : '.ident_value2()',
465         'entry_event' : 'change', 'entry_code' : '{ au.ident_value2( ev.target.value ); }'
466 },
467 {
468         'id' : 'addresses', 'label' : getString('au_addresses_label'), 'flex' : 1, 'class' : 'coral',
469         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.addresses().length + " addresses"',
470         'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'View/Edit/New' },
471         'entry_event' : 'command', 'entry_code' : '{ edit_addresses(au); }'
472 },
473 {
474         'id' : 'day_phone', 'label' : getString('au_day_phone_label'), 'flex' : 1, 'class' : 'coral',
475         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.day_phone()',
476         'entry_widget' : 'textbox', 'rdefault' : '.day_phone()',
477         'entry_event' : 'change', 'entry_code' : '{ au.day_phone( ev.target.value ); }'
478 },
479 {
480         'id' : 'evening_phone', 'label' : getString('au_evening_phone_label'), 'flex' : 1, 'class' : 'coral',
481         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.evening_phone()',
482         'entry_widget' : 'textbox', 'rdefault' : '.evening_phone()',
483         'entry_event' : 'change', 'entry_code' : '{ au.evening_phone( ev.target.value ); }'
484 },
485 {
486         'id' : 'other_phone', 'label' : getString('au_other_phone_label'), 'flex' : 1, 'class' : 'coral',
487         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.other_phone()',
488         'entry_widget' : 'textbox', 'rdefault' : '.other_phone()',
489         'entry_event' : 'change', 'entry_code' : '{ au.other_phone( ev.target.value ); }'
490 },
491 {
492         'id' : 'email', 'label' : getString('au_email_label'), 'flex' : 1, 'class' : 'coral',
493         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.email()',
494         'entry_widget' : 'textbox', 'rdefault' : '.email()',
495         'entry_event' : 'change', 'entry_code' : '{ au.email( ev.target.value ); }'
496 },
497 {
498         'id' : 'master_account', 'label' : getString('au_master_account_label'), 'flex' : 1,
499         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.master_account()',
500         'entry_widget' : 'textbox', 'rdefault' : '.master_account()',
501         'entry_event' : 'change', 'entry_code' : '{ au.master_account( ev.target.value ); }'
502 },
503 {
504         'id' : 'net_access_level', 'label' : getString('au_net_access_level_label'), 'flex' : 1,
505         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.net_access_level()',
506         'entry_widget' : 'textbox', 'rdefault' : '.net_access_level()',
507         'entry_event' : 'change', 'entry_code' : '{ au.net_access_level( ev.target.value ); }'
508 },
509 {
510         'id' : 'passwd', 'label' : getString('au_passwd_label'), 'flex' : 1,
511         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.passwd()',
512         'entry_widget' : 'textbox', 'rdefault' : '.passwd()',
513         'entry_event' : 'change', 'entry_code' : '{ au.passwd( ev.target.value ); }'
514 },
515 {
516         'id' : 'photo_url', 'label' : getString('au_photo_url_label'), 'flex' : 1,
517         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.photo_url()',
518         'entry_widget' : 'textbox', 'rdefault' : '.photo_url()',
519         'entry_event' : 'change', 'entry_code' : '{ au.photo_url( ev.target.value ); }'
520 },
521 {
522         'id' : 'stat_cat_entries', 'label' : getString('au_stat_cat_entries_label'), 'flex' : 1,
523         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.stat_cat_entries().length + " entries"',
524         'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'View/Edit' },
525         'entry_event' : 'command', 'entry_code' : '{ edit_stat_cat_entries(au); }'
526 },
527 {
528         'id' : 'survey_responses', 'label' : getString('au_survey_responses_label'), 'flex' : 1,
529         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.survey_responses().length + " responses"',
530         'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'View/New' },
531         'entry_event' : 'command', 'entry_code' : '{ new_survey_responses(au); }'
532 },
533 {
534         'id' : 'usrgroup', 'label' : getString('au_usrgroup_label'), 'flex' : 1,
535         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.usrgroup()',
536         'entry_widget' : 'textbox', 'rdefault' : '.usrgroup()',
537         'entry_event' : 'change', 'entry_code' : '{ au.usrgroup( ev.target.value ); }'
538 },
539 {
540         'id' : 'usrname', 'label' : getString('au_usrname_label'), 'flex' : 1,
541         'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.usrname()',
542         'entry_widget' : 'textbox', 'rdefault' : '.usrname()',
543         'entry_event' : 'change', 'entry_code' : '{ au.usrname( ev.target.value ); }'
544 },
545 ];
546
547         return rows;
548 }