1 dump('entering patron/util.js\n');
3 if (typeof patron == 'undefined') var patron = {};
6 patron.util.EXPORT_OK = [
7 'columns', 'mbts_columns', 'mb_columns', 'mp_columns', /*'std_map_row_to_column',*/ 'std_map_row_to_columns',
8 'retrieve_au_via_id', 'retrieve_fleshed_au_via_id', 'retrieve_fleshed_au_via_barcode', 'set_penalty_css', 'retrieve_name_via_id'
10 patron.util.EXPORT_TAGS = { ':all' : patron.util.EXPORT_OK };
12 patron.util.mbts_columns = function(modify,params) {
14 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
15 JSAN.use('util.money'); JSAN.use('util.date');
17 var commonStrings = document.getElementById('commonStrings');
21 'persist' : 'hidden width ordinal', 'id' : 'id', 'label' : commonStrings.getString('staff.mbts_id_label'), 'flex' : 1,
22 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mbts.id(); }
25 'persist' : 'hidden width ordinal', 'id' : 'usr', 'label' : commonStrings.getString('staff.mbts_usr_label'), 'flex' : 1,
26 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mbts.usr() ? "Id = " + my.mbts.usr() : ""; }
29 'persist' : 'hidden width ordinal', 'id' : 'xact_type', 'label' : commonStrings.getString('staff.mbts_xact_type_label'), 'flex' : 1,
30 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mbts.xact_type(); }
33 'persist' : 'hidden width ordinal', 'id' : 'balance_owed', 'label' : commonStrings.getString('staff.mbts_balance_owed_label'), 'flex' : 1,
34 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.money.sanitize( my.mbts.balance_owed() ); },
38 'persist' : 'hidden width ordinal', 'id' : 'total_owed', 'label' : commonStrings.getString('staff.mbts_total_owed_label'), 'flex' : 1,
39 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.money.sanitize( my.mbts.total_owed() ); },
43 'persist' : 'hidden width ordinal', 'id' : 'total_paid', 'label' : commonStrings.getString('staff.mbts_total_paid_label'), 'flex' : 1,
44 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.money.sanitize( my.mbts.total_paid() ); },
48 'persist' : 'hidden width ordinal', 'id' : 'last_billing_note', 'label' : commonStrings.getString('staff.mbts_last_billing_note_label'), 'flex' : 2,
49 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mbts.last_billing_note(); }
52 'persist' : 'hidden width ordinal', 'id' : 'last_billing_type', 'label' : commonStrings.getString('staff.mbts_last_billing_type_label'), 'flex' : 1,
53 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mbts.last_billing_type(); }
56 'persist' : 'hidden width ordinal', 'id' : 'last_billing_ts', 'label' : commonStrings.getString('staff.mbts_last_billing_timestamp_label'), 'flex' : 1,
57 'primary' : false, 'hidden' : true, 'render' : function(my) { return util.date.formatted_date( my.mbts.last_billing_ts(), "" ); }
60 'persist' : 'hidden width ordinal', 'id' : 'last_payment_note', 'label' : commonStrings.getString('staff.mbts_last_payment_note_label'), 'flex' : 2,
61 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mbts.last_payment_note(); }
64 'persist' : 'hidden width ordinal', 'id' : 'last_payment_type', 'label' : commonStrings.getString('staff.mbts_last_payment_type_label'), 'flex' : 1,
65 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mbts.last_payment_type(); }
68 'persist' : 'hidden width ordinal', 'id' : 'last_payment_ts', 'label' : commonStrings.getString('staff.mbts_last_payment_timestamp_label'), 'flex' : 1,
69 'primary' : false, 'hidden' : true, 'render' : function(my) { return util.date.formatted_date( my.mbts.last_payment_ts(), "" ); }
72 'persist' : 'hidden width ordinal', 'id' : 'xact_start', 'label' : commonStrings.getString('staff.mbts_xact_start_label'), 'flex' : 1,
73 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mbts.xact_start() ? my.mbts.xact_start().toString().substr(0,10) : ""; }
76 'persist' : 'hidden width ordinal', 'id' : 'xact_finish', 'label' : commonStrings.getString('staff.mbts_xact_finish_label'), 'flex' : 1,
77 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mbts.xact_finish() ? my.mbts.xact_finish().toString().substr(0,10) : ""; }
80 for (var i = 0; i < c.length; i++) {
81 if (modify[ c[i].id ]) {
82 for (var j in modify[ c[i].id ]) {
83 c[i][j] = modify[ c[i].id ][j];
88 if (params.just_these) {
89 JSAN.use('util.functional');
91 for (var i = 0; i < params.just_these.length; i++) {
92 var x = util.functional.find_list(c,function(d){return(d.id==params.just_these[i]);});
93 new_c.push( function(y){ return y; }( x ) );
97 if (params.except_these) {
98 JSAN.use('util.functional');
100 for (var i = 0; i < c.length; i++) {
101 var x = util.functional.find_list(params.except_these,function(d){return(d==c[i].id);});
102 if (!x) new_c.push(c[i]);
107 return c.sort( function(a,b) { if (a.label < b.label) return -1; if (a.label > b.label) return 1; return 0; } );
110 patron.util.mb_columns = function(modify,params) {
112 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
113 JSAN.use('util.money'); JSAN.use('util.date');
115 var commonStrings = document.getElementById('commonStrings');
119 'persist' : 'hidden width ordinal', 'id' : 'id', 'label' : commonStrings.getString('staff.mb_id_label'), 'flex' : 1,
120 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mb.id(); }
123 'persist' : 'hidden width ordinal', 'id' : 'voided', 'label' : commonStrings.getString('staff.mb_voided_label'), 'flex' : 1,
124 'primary' : false, 'hidden' : false, 'render' : function(my) { return get_bool( my.mb.voided() ) ? "Yes" : "No"; }
127 'persist' : 'hidden width ordinal', 'id' : 'voider', 'label' : commonStrings.getString('staff.mb_voider_label'), 'flex' : 1,
128 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mb.voider() ? "Id = " + my.mb.voider() : ""; }
131 'persist' : 'hidden width ordinal', 'id' : 'void_time', 'label' : commonStrings.getString('staff.mb_void_time_label'), 'flex' : 1,
132 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mb.void_time(); }
135 'persist' : 'hidden width ordinal', 'id' : 'amount', 'label' : commonStrings.getString('staff.mb_amount_label'), 'flex' : 1,
136 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.money.sanitize( my.mb.amount() ); },
137 'sort_type' : 'money'
140 'persist' : 'hidden width ordinal', 'id' : 'billing_type', 'label' : commonStrings.getString('staff.mb_billing_type_label'), 'flex' : 1,
141 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mb.billing_type(); }
144 'persist' : 'hidden width ordinal', 'id' : 'billing_ts', 'label' : commonStrings.getString('staff.mb_billing_ts_label'), 'flex' : 1,
145 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.date.formatted_date( my.mb.billing_ts(), "" ); }
148 'persist' : 'hidden width ordinal', 'id' : 'note', 'label' : commonStrings.getString('staff.mb_note_label'), 'flex' : 2,
149 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mb.note(); }
152 'persist' : 'hidden width ordinal', 'id' : 'xact', 'label' : commonStrings.getString('staff.mb_xact_label'), 'flex' : 1,
153 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mb.xact(); }
156 for (var i = 0; i < c.length; i++) {
157 if (modify[ c[i].id ]) {
158 for (var j in modify[ c[i].id ]) {
159 c[i][j] = modify[ c[i].id ][j];
164 if (params.just_these) {
165 JSAN.use('util.functional');
167 for (var i = 0; i < params.just_these.length; i++) {
168 var x = util.functional.find_list(c,function(d){return(d.id==params.just_these[i]);});
169 new_c.push( function(y){ return y; }( x ) );
173 if (params.except_these) {
174 JSAN.use('util.functional');
176 for (var i = 0; i < c.length; i++) {
177 var x = util.functional.find_list(params.except_these,function(d){return(d==c[i].id);});
178 if (!x) new_c.push(c[i]);
184 return c.sort( function(a,b) { if (a.label < b.label) return -1; if (a.label > b.label) return 1; return 0; } );
187 patron.util.mp_columns = function(modify,params) {
189 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
190 JSAN.use('util.money'); JSAN.use('util.date'); JSAN.use('patron.util');
192 var commonStrings = document.getElementById('commonStrings');
196 'persist' : 'hidden width ordinal', 'id' : 'mp_id', 'label' : commonStrings.getString('staff.mp_id_label'), 'flex' : 1,
197 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mp.id(); }
200 'persist' : 'hidden width ordinal', 'id' : 'mp_amount', 'label' : commonStrings.getString('staff.mp_amount_label'), 'flex' : 1,
201 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.money.sanitize( my.mp.amount() ); },
202 'sort_type' : 'money'
205 'persist' : 'hidden width ordinal', 'id' : 'mp_payment_type', 'label' : commonStrings.getString('staff.mp_payment_type_label'), 'flex' : 1,
206 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mp.payment_type(); }
209 'persist' : 'hidden width ordinal', 'id' : 'mp_payment_ts', 'label' : commonStrings.getString('staff.mp_payment_timestamp_label'), 'flex' : 1,
210 'primary' : false, 'hidden' : false, 'render' : function(my) { return util.date.formatted_date( my.mp.payment_ts(), "" ); }
213 'persist' : 'hidden width ordinal', 'id' : 'mp_note', 'label' : commonStrings.getString('staff.mp_note_label'), 'flex' : 2,
214 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mp.note(); }
217 'persist' : 'hidden width ordinal', 'id' : 'mp_ws', 'label' : commonStrings.getString('staff.mp_cash_drawer_label'), 'flex' : 1,
218 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.mp.cash_drawer().name(); }
221 'persist' : 'hidden width ordinal', 'id' : 'mp_staff', 'label' : commonStrings.getString('staff.mp_accepting_usr_label'), 'flex' : 1,
222 'primary' : false, 'hidden' : false, 'render' : function(my) { var s = my.mp.accepting_usr(); if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s); return s.family_name() + " (" + s.card().barcode() + ") @ " + data.hash.aou[ s.home_ou() ].shortname(); }
225 'persist' : 'hidden width ordinal', 'id' : 'mp_xact', 'label' : commonStrings.getString('staff.mp_xact_label'), 'flex' : 1,
226 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.mp.xact(); }
229 for (var i = 0; i < c.length; i++) {
230 if (modify[ c[i].id ]) {
231 for (var j in modify[ c[i].id ]) {
232 c[i][j] = modify[ c[i].id ][j];
237 if (params.just_these) {
238 JSAN.use('util.functional');
240 for (var i = 0; i < params.just_these.length; i++) {
241 var x = util.functional.find_list(c,function(d){return(d.id==params.just_these[i]);});
242 new_c.push( function(y){ return y; }( x ) );
246 if (params.except_these) {
247 JSAN.use('util.functional');
249 for (var i = 0; i < c.length; i++) {
250 var x = util.functional.find_list(params.except_these,function(d){return(d==c[i].id);});
251 if (!x) new_c.push(c[i]);
257 return c.sort( function(a,b) { if (a.label < b.label) return -1; if (a.label > b.label) return 1; return 0; } );
260 patron.util.ausp_columns = function(modify,params) {
262 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
263 JSAN.use('util.functional');
265 var commonStrings = document.getElementById('commonStrings');
269 'persist' : 'hidden width ordinal', 'id' : 'csp_id', 'label' : commonStrings.getString('staff.csp_id_label'), 'flex' : 1,
270 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.csp.id(); }
273 'persist' : 'hidden width ordinal', 'id' : 'csp_name', 'label' : commonStrings.getString('staff.csp_name_label'), 'flex' : 1,
274 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.csp.name(); }
277 'persist' : 'hidden width ordinal', 'id' : 'csp_label', 'label' : commonStrings.getString('staff.csp_label_label'), 'flex' : 1,
278 'primary' : false, 'hidden' : false, 'render' : function(my) { return my.csp.label(); }
281 'persist' : 'hidden width ordinal', 'id' : 'csp_block_list', 'label' : commonStrings.getString('staff.csp_block_list_label'), 'flex' : 1,
282 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.csp.block_list(); }
285 'persist' : 'hidden width ordinal', 'id' : 'csp_block_circ', 'label' : commonStrings.getString('staff.csp_block_circ_label'), 'flex' : 1,
286 'primary' : false, 'hidden' : true, 'render' : function(my) {
287 return String( my.csp.block_list() ).match('CIRC') ? commonStrings.getString('staff.csp_block_circ_yes') : commonStrings.getString('staff.csp_block_circ_no');
291 'persist' : 'hidden width ordinal', 'id' : 'csp_block_renew', 'label' : commonStrings.getString('staff.csp_block_renew_label'), 'flex' : 1,
292 'primary' : false, 'hidden' : true, 'render' : function(my) {
293 return String( my.csp.block_list() ).match('RENEW') ? commonStrings.getString('staff.csp_block_renew_yes') : commonStrings.getString('staff.csp_block_renew_no');
298 'persist' : 'hidden width ordinal', 'id' : 'csp_block_hold', 'label' : commonStrings.getString('staff.csp_block_hold_label'), 'flex' : 1,
299 'primary' : false, 'hidden' : true, 'render' : function(my) {
300 return String( my.csp.block_list() ).match('HOLD') ? commonStrings.getString('staff.csp_block_hold_yes') : commonStrings.getString('staff.csp_block_hold_no');
304 'persist' : 'hidden width ordinal', 'id' : 'ausp_staff', 'label' : commonStrings.getString('staff.ausp_staff_label'), 'flex' : 1,
305 'primary' : false, 'hidden' : true, 'render' : function(my) {
306 return my.ausp ? my.ausp.staff() : '';
310 'persist' : 'hidden width ordinal', 'id' : 'ausp_set_date', 'label' : commonStrings.getString('staff.ausp_set_date_label'), 'flex' : 1,
311 'primary' : false, 'hidden' : false, 'render' : function(my) {
312 return my.ausp ? my.ausp.set_date() : '';
316 'persist' : 'hidden width ordinal', 'id' : 'ausp_note', 'label' : commonStrings.getString('staff.ausp_note_label'), 'flex' : 1,
317 'primary' : false, 'hidden' : false, 'render' : function(my) {
318 return my.ausp ? my.ausp.note() : '';
322 'persist' : 'hidden width ordinal', 'id' : 'ausp_org_unit', 'label' : commonStrings.getString('staff.ausp_org_unit_label'), 'flex' : 1,
323 'primary' : false, 'hidden' : false, 'render' : function(my) {
324 return my.ausp ? data.hash.aou[ my.ausp.org_unit() ].shortname() : '';
328 for (var i = 0; i < c.length; i++) {
329 if (modify[ c[i].id ]) {
330 for (var j in modify[ c[i].id ]) {
331 c[i][j] = modify[ c[i].id ][j];
336 if (params.just_these) {
338 for (var i = 0; i < params.just_these.length; i++) {
339 var x = util.functional.find_list(c,function(d){return(d.id==params.just_these[i]);});
340 new_c.push( function(y){ return y; }( x ) );
344 if (params.except_these) {
346 for (var i = 0; i < c.length; i++) {
347 var x = util.functional.find_list(params.except_these,function(d){return(d==c[i].id);});
348 if (!x) new_c.push(c[i]);
354 return c.sort( function(a,b) { if (a.label < b.label) return -1; if (a.label > b.label) return 1; return 0; } );
358 patron.util.columns = function(modify,params) {
360 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
362 var commonStrings = document.getElementById('commonStrings');
366 'persist' : 'hidden width ordinal', 'id' : 'barcode', 'label' : commonStrings.getString('staff.card_barcode_label'), 'flex' : 1,
367 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.card().barcode(); }
370 'persist' : 'hidden width ordinal', 'id' : 'usrname', 'label' : commonStrings.getString('staff.au_usrname_label'), 'flex' : 1,
371 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.usrname(); }
374 'persist' : 'hidden width ordinal', 'id' : 'profile', 'label' : commonStrings.getString('staff.au_profile_label'), 'flex' : 1,
375 'primary' : false, 'hidden' : true, 'render' : function(my) { return data.hash.pgt[ my.au.profile() ].name(); }
378 'persist' : 'hidden width ordinal', 'id' : 'active', 'label' : commonStrings.getString('staff.au_active_label'), 'flex' : 1,
379 'primary' : false, 'hidden' : true, 'render' : function(my) { return get_bool( my.au.active() ) ? "Yes" : "No"; }
382 'persist' : 'hidden width ordinal', 'id' : 'barred', 'label' : commonStrings.getString('staff.au_barred_label'), 'flex' : 1,
383 'primary' : false, 'hidden' : true, 'render' : function(my) { return get_bool( my.au.barred() ) ? "Yes" : "No"; }
386 'persist' : 'hidden width ordinal', 'id' : 'id', 'label' : document.getElementById('commonStrings').getString('staff.au_id_label'), 'flex' : 1,
387 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.id(); }
390 'persist' : 'hidden width ordinal', 'id' : 'prefix', 'label' : document.getElementById('commonStrings').getString('staff.au_name_prefix_label'), 'flex' : 1,
391 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.prefix(); }
394 'persist' : 'hidden width ordinal', 'id' : 'family_name', 'label' : document.getElementById('commonStrings').getString('staff.au_family_name_label'), 'flex' : 1,
395 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.family_name(); }
398 'persist' : 'hidden width ordinal', 'id' : 'first_given_name', 'label' : document.getElementById('commonStrings').getString('staff.au_first_given_name_label'), 'flex' : 1,
399 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.first_given_name(); }
402 'persist' : 'hidden width ordinal', 'id' : 'second_given_name', 'label' : document.getElementById('commonStrings').getString('staff.au_second_given_name_label'), 'flex' : 1,
403 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.second_given_name(); }
406 'persist' : 'hidden width ordinal', 'id' : 'suffix', 'label' : document.getElementById('commonStrings').getString('staff.au_name_suffix_label'), 'flex' : 1,
407 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.suffix(); }
410 'persist' : 'hidden width ordinal', 'id' : 'alert_message', 'label' : commonStrings.getString('staff.au_alert_message_label'), 'flex' : 1,
411 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.alert_message(); }
414 'persist' : 'hidden width ordinal', 'id' : 'claims_returned_count', 'label' : commonStrings.getString('staff.au_claims_returned_count_label'), 'flex' : 1,
415 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.claims_returned_count(); },
416 'sort_type' : 'number'
419 'persist' : 'hidden width ordinal', 'id' : 'create_date', 'label' : commonStrings.getString('staff.au_create_date_label'), 'flex' : 1,
420 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.create_date(); }
423 'persist' : 'hidden width ordinal', 'id' : 'expire_date', 'label' : commonStrings.getString('staff.au_expire_date_label'), 'flex' : 1,
424 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.expire_date().substr(0,10); }
427 'persist' : 'hidden width ordinal', 'id' : 'home_ou', 'label' : commonStrings.getString('staff.au_home_library_label'), 'flex' : 1,
428 'primary' : false, 'hidden' : true, 'render' : function(my) { return data.hash.aou[ my.au.home_ou() ].shortname(); }
431 'persist' : 'hidden width ordinal', 'id' : 'home_ou_fullname', 'label' : commonStrings.getString('staff.au_home_library_fullname_label'), 'flex' : 1,
432 'primary' : false, 'hidden' : true, 'render' : function(my) { return data.hash.aou[ my.au.home_ou() ].name(); }
435 'persist' : 'hidden width ordinal', 'id' : 'credit_forward_balance', 'label' : commonStrings.getString('staff.au_credit_forward_balance_label'), 'flex' : 1,
436 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.credit_forward_balance(); },
437 'sort_type' : 'money'
440 'persist' : 'hidden width ordinal', 'id' : 'day_phone', 'label' : commonStrings.getString('staff.au_day_phone_label'), 'flex' : 1,
441 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.day_phone(); }
444 'persist' : 'hidden width ordinal', 'id' : 'evening_phone', 'label' : commonStrings.getString('staff.au_evening_phone_label'), 'flex' : 1,
445 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.evening_phone(); }
448 'persist' : 'hidden width ordinal', 'id' : 'other_phone', 'label' : commonStrings.getString('staff.au_other_phone_label'), 'flex' : 1,
449 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.other_phone(); }
452 'persist' : 'hidden width ordinal', 'id' : 'email', 'label' : commonStrings.getString('staff.au_email_label'), 'flex' : 1,
453 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.email(); }
456 'persist' : 'hidden width ordinal', 'id' : 'alias', 'label' : commonStrings.getString('staff.au_alias_label'), 'flex' : 1,
457 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.alias(); }
460 'persist' : 'hidden width ordinal', 'id' : 'dob', 'label' : commonStrings.getString('staff.au_birth_date_label'), 'flex' : 1,
461 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.dob().substr(0,10); }
464 'persist' : 'hidden width ordinal', 'id' : 'ident_type', 'label' : commonStrings.getString('staff.au_ident_type_label'), 'flex' : 1,
465 'primary' : false, 'hidden' : true, 'render' : function(my) { return data.hash.cit[ my.au.ident_type() ].name(); }
468 'persist' : 'hidden width ordinal', 'id' : 'ident_value', 'label' : commonStrings.getString('staff.au_ident_value_label'), 'flex' : 1,
469 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.ident_value(); }
472 'persist' : 'hidden width ordinal', 'id' : 'ident_type2', 'label' : commonStrings.getString('staff.au_ident_type2_label'), 'flex' : 1,
473 'primary' : false, 'hidden' : true, 'render' : function(my) { return data.hash.cit[ my.au.ident_type2() ].name(); }
476 'persist' : 'hidden width ordinal', 'id' : 'ident_value2', 'label' : commonStrings.getString('staff.au_ident_value2_label'), 'flex' : 1,
477 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.ident_value2(); }
480 'persist' : 'hidden width ordinal', 'id' : 'net_access_level', 'label' : commonStrings.getString('staff.au_net_access_level_label'), 'flex' : 1,
481 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.net_access_level(); }
484 'persist' : 'hidden width ordinal', 'id' : 'master_account', 'label' : commonStrings.getString('staff.au_master_account_label'), 'flex' : 1,
485 'primary' : false, 'hidden' : true, 'render' : function(my) { return get_bool( my.au.master_account() ) ? "Yes" : "No"; }
488 'persist' : 'hidden width ordinal', 'id' : 'usrgroup', 'label' : commonStrings.getString('staff.au_group_id_label'), 'flex' : 1,
489 'primary' : false, 'hidden' : true, 'render' : function(my) { return my.au.usrgroup(); }
492 for (var i = 0; i < c.length; i++) {
493 if (modify[ c[i].id ]) {
494 for (var j in modify[ c[i].id ]) {
495 c[i][j] = modify[ c[i].id ][j];
500 if (params.just_these) {
501 JSAN.use('util.functional');
503 for (var i = 0; i < params.just_these.length; i++) {
504 var x = util.functional.find_list(c,function(d){return(d.id==params.just_these[i]);});
505 new_c.push( function(y){ return y; }( x ) );
509 if (params.except_these) {
510 JSAN.use('util.functional');
512 for (var i = 0; i < c.length; i++) {
513 var x = util.functional.find_list(params.except_these,function(d){return(d==c[i].id);});
514 if (!x) new_c.push(c[i]);
520 return c.sort( function(a,b) { if (a.label < b.label) return -1; if (a.label > b.label) return 1; return 0; } );
523 patron.util.std_map_row_to_columns = function(error_value) {
524 return function(row,cols) {
525 // row contains { 'my' : { 'au' : {} } }
526 // cols contains all of the objects listed above in columns
528 var obj = {}; obj.OpenILS = {};
529 JSAN.use('util.error'); obj.error = new util.error();
530 JSAN.use('OpenILS.data'); obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
531 JSAN.use('util.date'); JSAN.use('util.money');
537 for (var i = 0; i < cols.length; i++) {
538 switch (typeof cols[i].render) {
539 case 'function': try { values[i] = cols[i].render(my); } catch(E) { values[i] = error_value; obj.error.sdump('D_COLUMN_RENDER_ERROR',E); } break;
540 case 'string' : cmd += 'try { ' + cols[i].render + '; values['+i+'] = v; } catch(E) { values['+i+'] = error_value; }'; break;
541 default: cmd += 'values['+i+'] = "??? '+(typeof cols[i].render)+'"; ';
544 if (cmd) eval( cmd );
546 obj.error.sdump('D_WARN','map_row_to_column: ' + E);
547 if (error_value) { value = error_value; } else { value = ' ' };
553 patron.util.retrieve_au_via_id = function(session, id, f) {
554 JSAN.use('util.network');
555 var network = new util.network();
556 var patron_obj = network.simple_request(
557 'FM_AU_RETRIEVE_VIA_ID',
564 patron.util.retrieve_name_via_id = function(session, id) {
565 JSAN.use('util.network');
566 var network = new util.network();
567 var parts = network.simple_request(
568 'BLOB_AU_PARTS_RETRIEVE',
569 [ session, id, ['family_name', 'first_given_name', 'second_given_name', 'home_ou' ] ]
574 patron.util.retrieve_fleshed_au_via_id = function(session, id) {
575 JSAN.use('util.network');
576 var network = new util.network();
577 var patron_obj = network.simple_request(
578 'FM_AU_FLESHED_RETRIEVE_VIA_ID',
581 patron.util.set_penalty_css(patron_obj);
585 patron.util.retrieve_fleshed_au_via_barcode = function(session, id) {
586 JSAN.use('util.network');
587 var network = new util.network();
588 var patron_obj = network.simple_request(
589 'FM_AU_RETRIEVE_VIA_BARCODE.authoritative',
592 patron.util.set_penalty_css(patron_obj);
596 var TIME = { minute : 60, hour : 60*60, day : 60*60*24, year : 60*60*24*365 };
598 patron.util.set_penalty_css = function(patron) {
600 removeCSSClass(document.documentElement,'PATRON_HAS_BILLS');
601 removeCSSClass(document.documentElement,'PATRON_HAS_OVERDUES');
602 removeCSSClass(document.documentElement,'PATRON_HAS_NOTES');
603 removeCSSClass(document.documentElement,'PATRON_EXCEEDS_CHECKOUT_COUNT');
604 removeCSSClass(document.documentElement,'PATRON_EXCEEDS_OVERDUE_COUNT');
605 removeCSSClass(document.documentElement,'PATRON_EXCEEDS_FINES');
606 removeCSSClass(document.documentElement,'NO_PENALTIES');
607 removeCSSClass(document.documentElement,'ONE_PENALTY');
608 removeCSSClass(document.documentElement,'MULTIPLE_PENALTIES');
609 removeCSSClass(document.documentElement,'PATRON_HAS_ALERT');
610 removeCSSClass(document.documentElement,'PATRON_BARRED');
611 removeCSSClass(document.documentElement,'PATRON_INACTIVE');
612 removeCSSClass(document.documentElement,'PATRON_EXPIRED');
613 removeCSSClass(document.documentElement,'PATRON_HAS_INVALID_DOB');
614 removeCSSClass(document.documentElement,'PATRON_HAS_INVALID_ADDRESS');
615 removeCSSClass(document.documentElement,'PATRON_AGE_GE_65');
616 removeCSSClass(document.documentElement,'PATRON_AGE_LT_65');
617 removeCSSClass(document.documentElement,'PATRON_AGE_GE_24');
618 removeCSSClass(document.documentElement,'PATRON_AGE_LT_24');
619 removeCSSClass(document.documentElement,'PATRON_AGE_GE_21');
620 removeCSSClass(document.documentElement,'PATRON_AGE_LT_21');
621 removeCSSClass(document.documentElement,'PATRON_AGE_GE_18');
622 removeCSSClass(document.documentElement,'PATRON_AGE_LT_18');
623 removeCSSClass(document.documentElement,'PATRON_AGE_GE_13');
624 removeCSSClass(document.documentElement,'PATRON_AGE_LT_13');
625 removeCSSClass(document.documentElement,'PATRON_NET_ACCESS_1');
626 removeCSSClass(document.documentElement,'PATRON_NET_ACCESS_2');
627 removeCSSClass(document.documentElement,'PATRON_NET_ACCESS_3');
629 JSAN.use('util.network'); var net = new util.network();
630 net.simple_request('FM_MOUS_RETRIEVE.authoritative',[ ses(), patron.id() ], function(req) {
631 if (req.getResultObject().balance_owed() > 0) addCSSClass(document.documentElement,'PATRON_HAS_BILLS');
633 net.simple_request('FM_CIRC_COUNT_RETRIEVE_VIA_USER.authoritative',[ ses(), patron.id() ], function(req) {
635 var co = req.getResultObject();
636 if (co.overdue > 0 || co.long_overdue > 0) addCSSClass(document.documentElement,'PATRON_HAS_OVERDUES');
641 net.simple_request('FM_AUN_RETRIEVE_ALL.authoritative',[ ses(), { 'patronid' : patron.id() } ], function(req) {
642 var notes = req.getResultObject();
643 if (notes.length > 0) addCSSClass(document.documentElement,'PATRON_HAS_NOTES');
647 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
648 data.last_patron = patron.id(); data.stash('last_patron');
651 var penalties = patron.standing_penalties();
652 for (var i = 0; i < penalties.length; i++) {
653 /* this comes from /opac/common/js/utils.js */
654 addCSSClass(document.documentElement,penalties[i].standing_penalty().name());
657 switch(penalties.length) {
658 case 0: addCSSClass(document.documentElement,'NO_PENALTIES'); break;
659 case 1: addCSSClass(document.documentElement,'ONE_PENALTY'); break;
660 default: addCSSClass(document.documentElement,'MULTIPLE_PENALTIES'); break;
663 if (patron.alert_message()) {
664 addCSSClass(document.documentElement,'PATRON_HAS_ALERT');
667 if (get_bool( patron.barred() )) {
668 addCSSClass(document.documentElement,'PATRON_BARRED');
671 if (!get_bool( patron.active() )) {
672 addCSSClass(document.documentElement,'PATRON_INACTIVE');
675 try { addCSSClass(document.documentElement,'PATRON_NET_ACCESS_' + patron.net_access_level()); } catch(E) {}
677 var now = new Date();
678 now = now.getTime()/1000;
680 var expire_parts = patron.expire_date().substr(0,10).split('-');
681 expire_parts[1] = expire_parts[1] - 1;
683 var expire = new Date();
684 expire.setFullYear(expire_parts[0], expire_parts[1], expire_parts[2]);
685 expire = expire.getTime()/1000
687 if (expire < now) addCSSClass(document.documentElement,'PATRON_EXPIRED');
690 var age_parts = patron.dob().substr(0,10).split('-');
691 age_parts[1] = age_parts[1] - 1;
693 var born = new Date();
694 born.setFullYear(age_parts[0], age_parts[1], age_parts[2]);
695 born = born.getTime()/1000
697 var patron_age = now - born;
698 var years_old = Number(patron_age / TIME.year);
700 addCSSClass(document.documentElement,'PATRON_AGE_IS_' + years_old);
702 if ( years_old >= 65 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_65');
703 if ( years_old < 65 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_65');
705 if ( years_old >= 24 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_24');
706 if ( years_old < 24 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_24');
708 if ( years_old >= 21 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_21');
709 if ( years_old < 21 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_21');
711 if ( years_old >= 18 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_18');
712 if ( years_old < 18 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_18');
714 if ( years_old >= 13 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_13');
715 if ( years_old < 13 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_13');
717 addCSSClass(document.documentElement,'PATRON_HAS_INVALID_DOB');
720 if ( get_bool( patron.juvenile() ) ) addCSSClass(document.documentElement,'PATRON_JUVENILE');
721 else removeCSSClass(document.documentElement,'PATRON_JUVENILE');
723 if (patron.mailing_address()) {
724 if (!get_bool(patron.mailing_address().valid())) {
725 addCSSClass(document.documentElement,'PATRON_HAS_INVALID_ADDRESS');
728 if (patron.billing_address()) {
729 if (!get_bool(patron.billing_address().valid())) {
730 addCSSClass(document.documentElement,'PATRON_HAS_INVALID_ADDRESS');
735 dump('patron.util.set_penalty_css: ' + E + '\n');
736 alert('patron.util.set_penalty_css: ' + E + '\n');
741 dump('exiting patron/util.js\n');