1 dump('entering patron/util.js\n');
3 if (typeof patron == 'undefined') var patron = {};
6 patron.util.EXPORT_OK = [
7 'columns', 'mb_columns', 'mp_columns', 'std_map_row_to_column', 'retrieve_au_via_id', 'retrieve_fleshed_au_via_id', 'set_penalty_css'
9 patron.util.EXPORT_TAGS = { ':all' : patron.util.EXPORT_OK };
11 patron.util.mb_columns = function(modify) {
13 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
15 function getString(s) { return data.entities[s]; }
20 'id' : 'id', 'label' : 'Id', 'flex' : 0,
21 'primary' : false, 'hidden' : true, 'render' : 'my.mb.id()'
24 'id' : 'voided', 'label' : 'Voided', 'flex' : 0,
25 'primary' : false, 'hidden' : false, 'render' : 'my.mb.voided() ? "Yes" : "No"'
28 'id' : 'voider', 'label' : 'Voider', 'flex' : 0,
29 'primary' : false, 'hidden' : true, 'render' : 'my.mb.voider() ? "Id = " + my.mb.voider() : ""'
32 'id' : 'void_time', 'label' : 'Void Time', 'flex' : 0,
33 'primary' : false, 'hidden' : true, 'render' : 'my.mb.void_time()'
36 'id' : 'amount', 'label' : 'Amount', 'flex' : 0,
37 'primary' : false, 'hidden' : false, 'render' : 'util.money.sanitize( my.mb.amount() )'
40 'id' : 'billing_type', 'label' : 'Type', 'flex' : 0,
41 'primary' : false, 'hidden' : false, 'render' : 'my.mb.billing_type()'
44 'id' : 'billing_ts', 'label' : 'When', 'flex' : 0,
45 'primary' : false, 'hidden' : false, 'render' : 'util.date.formatted_date( my.mb.billing_ts(), "" )'
48 'id' : 'note', 'label' : 'Note', 'flex' : 0,
49 'primary' : false, 'hidden' : false, 'render' : 'my.mb.note()'
52 for (var i = 0; i < c.length; i++) {
53 if (modify[ c[i].id ]) {
54 for (var j in modify[ c[i].id ]) {
55 c[i][j] = modify[ c[i].id ][j];
62 patron.util.mp_columns = function(modify) {
64 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
66 function getString(s) { return data.entities[s]; }
71 'id' : 'id', 'label' : 'ID', 'flex' : 0,
72 'primary' : false, 'hidden' : true, 'render' : 'my.mp.id()'
75 'id' : 'refunded', 'label' : 'Refunded', 'flex' : 0,
76 'primary' : false, 'hidden' : false, 'render' : 'my.mp.refunded() ? "Yes" : "No"'
79 'id' : 'refunder', 'label' : 'Refunder ID', 'flex' : 0,
80 'primary' : false, 'hidden' : true, 'render' : 'my.mp.refunder() ? my.mp.refunder() : ""'
83 'id' : 'refund_time', 'label' : 'Refund Time', 'flex' : 0,
84 'primary' : false, 'hidden' : true, 'render' : 'my.mp.refund_time()'
87 'id' : 'amount', 'label' : 'Amount', 'flex' : 0,
88 'primary' : false, 'hidden' : false, 'render' : 'util.money.sanitize( my.mp.amount() )'
91 'id' : 'payment_type', 'label' : 'Type', 'flex' : 0,
92 'primary' : false, 'hidden' : false, 'render' : 'my.mp.payment_type()'
95 'id' : 'payment_ts', 'label' : 'When', 'flex' : 0,
96 'primary' : false, 'hidden' : false, 'render' : 'util.date.formatted_date( my.mp.payment_ts(), "" )'
99 'id' : 'note', 'label' : 'Note', 'flex' : 0,
100 'primary' : false, 'hidden' : false, 'render' : 'my.mp.note()'
103 'id' : 'xact', 'label' : 'Transaction ID', 'flex' : 0,
104 'primary' : false, 'hidden' : false, 'render' : 'my.mp.xact()'
107 for (var i = 0; i < c.length; i++) {
108 if (modify[ c[i].id ]) {
109 for (var j in modify[ c[i].id ]) {
110 c[i][j] = modify[ c[i].id ][j];
117 patron.util.columns = function(modify) {
119 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
121 function getString(s) { return data.entities[s]; }
125 'id' : 'barcode', 'label' : 'Barcode', 'flex' : 1,
126 'primary' : false, 'hidden' : true, 'render' : 'my.au.card().barcode()'
129 'id' : 'usrname', 'label' : 'Login Name', 'flex' : 1,
130 'primary' : false, 'hidden' : true, 'render' : 'my.au.usrname()'
133 'id' : 'profile', 'label' : 'Group', 'flex' : 1,
134 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.pgt[ my.au.profile() ].name()'
137 'id' : 'active', 'label' : getString('staff.au_label_active'), 'flex' : 1,
138 'primary' : false, 'hidden' : true, 'render' : 'my.au.active() ? "Yes" : "No"'
141 'id' : 'barred', 'label' : 'Barred', 'flex' : 1,
142 'primary' : false, 'hidden' : true, 'render' : 'my.au.barred() ? "Yes" : "No"'
145 'id' : 'id', 'label' : getString('staff.au_label_id'), 'flex' : 1,
146 'primary' : false, 'hidden' : true, 'render' : 'my.au.id()'
149 'id' : 'prefix', 'label' : getString('staff.au_label_prefix'), 'flex' : 1,
150 'primary' : false, 'hidden' : true, 'render' : 'my.au.prefix()'
153 'id' : 'family_name', 'label' : getString('staff.au_label_family_name'), 'flex' : 1,
154 'primary' : false, 'hidden' : true, 'render' : 'my.au.family_name()'
157 'id' : 'first_given_name', 'label' : getString('staff.au_label_first_given_name'), 'flex' : 1,
158 'primary' : false, 'hidden' : true, 'render' : 'my.au.first_given_name()'
161 'id' : 'second_given_name', 'label' : getString('staff.au_label_second_given_name'), 'flex' : 1,
162 'primary' : false, 'hidden' : true, 'render' : 'my.au.second_given_name()'
165 'id' : 'suffix', 'label' : getString('staff.au_label_suffix'), 'flex' : 1,
166 'primary' : false, 'hidden' : true, 'render' : 'my.au.suffix()'
169 'id' : 'alert_message', 'label' : 'Alert', 'flex' : 1,
170 'primary' : false, 'hidden' : true, 'render' : 'my.au.alert_message()'
173 'id' : 'claims_returned_count', 'label' : 'Returns Claimed', 'flex' : 1,
174 'primary' : false, 'hidden' : true, 'render' : 'my.au.claims_returned_count()'
177 'id' : 'create_date', 'label' : 'Created On', 'flex' : 1,
178 'primary' : false, 'hidden' : true, 'render' : 'my.au.create_date()'
181 'id' : 'expire_date', 'label' : 'Expires On', 'flex' : 1,
182 'primary' : false, 'hidden' : true, 'render' : 'my.au.expire_date()'
185 'id' : 'home_ou', 'label' : 'Home Lib', 'flex' : 1,
186 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.aou[ my.au.home_ou() ].shortname()'
189 'id' : 'credit_forward_balance', 'label' : 'Credit', 'flex' : 1,
190 'primary' : false, 'hidden' : true, 'render' : 'my.au.credit_forward_balance()'
193 'id' : 'day_phone', 'label' : 'Day Phone', 'flex' : 1,
194 'primary' : false, 'hidden' : true, 'render' : 'my.au.day_phone()'
197 'id' : 'evening_phone', 'label' : 'Evening Phone', 'flex' : 1,
198 'primary' : false, 'hidden' : true, 'render' : 'my.au.evening_phone()'
201 'id' : 'other_phone', 'label' : 'Other Phone', 'flex' : 1,
202 'primary' : false, 'hidden' : true, 'render' : 'my.au.other_phone()'
205 'id' : 'email', 'label' : 'Email', 'flex' : 1,
206 'primary' : false, 'hidden' : true, 'render' : 'my.au.email()'
209 'id' : 'dob', 'label' : 'Birth Date', 'flex' : 1,
210 'primary' : false, 'hidden' : true, 'render' : 'my.au.dob()'
213 'id' : 'ident_type', 'label' : 'Ident Type', 'flex' : 1,
214 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.cit[ my.au.ident_type() ].name()'
217 'id' : 'ident_value', 'label' : 'Ident Value', 'flex' : 1,
218 'primary' : false, 'hidden' : true, 'render' : 'my.au.ident_value()'
221 'id' : 'ident_type2', 'label' : 'Ident Type 2', 'flex' : 1,
222 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.cit[ my.au.ident_type2() ].name()'
225 'id' : 'ident_value2', 'label' : 'Ident Value 2', 'flex' : 1,
226 'primary' : false, 'hidden' : true, 'render' : 'my.au.ident_value2()'
229 'id' : 'net_access_level', 'label' : 'Net Access', 'flex' : 1,
230 'primary' : false, 'hidden' : true, 'render' : 'my.au.net_access_level()'
233 for (var i = 0; i < c.length; i++) {
234 if (modify[ c[i].id ]) {
235 for (var j in modify[ c[i].id ]) {
236 c[i][j] = modify[ c[i].id ][j];
243 patron.util.std_map_row_to_column = function() {
244 return function(row,col) {
245 // row contains { 'my' : { 'au' : {} } }
246 // col contains one of the objects listed above in columns
248 var obj = {}; obj.OpenILS = {};
249 JSAN.use('util.error'); obj.error = new util.error();
250 JSAN.use('OpenILS.data'); obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
255 value = eval( col.render );
257 obj.error.sdump('D_ERROR','map_row_to_column: ' + E);
264 patron.util.retrieve_au_via_id = function(session, id) {
265 JSAN.use('util.network');
266 var network = new util.network();
267 var patron = network.request(
268 api.FM_AU_RETRIEVE_VIA_ID.app,
269 api.FM_AU_RETRIEVE_VIA_ID.method,
275 patron.util.retrieve_fleshed_au_via_id = function(session, id) {
276 JSAN.use('util.network');
277 var network = new util.network();
278 var patron = network.simple_request(
279 'FM_AU_FLESHED_RETRIEVE_VIA_ID',
282 patron.util.set_penalty_css(patron);
286 var TIME = { minute : 60, hour : 60*60, day : 60*60*24, year : 60*60*24*365 };
288 patron.util.set_penalty_css = function(patron) {
291 var penalties = patron.standing_penalties();
292 for (var i = 0; i < penalties.length; i++) {
293 /* this comes from /opac/common/js/utils.js */
294 addCSSClass(document.documentElement,penalties[i].penalty_type());
297 switch(penalties.length) {
298 case 0: addCSSClass(document.documentElement,'NO_PENALTIES'); break;
299 case 1: addCSSClass(document.documentElement,'ONE_PENALTY'); break;
300 default: addCSSClass(document.documentElement,'MULTIPLE_PENALTIES'); break;
303 if (patron.alert_message()) {
304 addCSSClass(document.documentElement,'PATRON_HAS_ALERT');
307 if (patron.barred() > 0) {
308 addCSSClass(document.documentElement,'PATRON_BARRED');
311 if (patron.active() == 0) {
312 addCSSClass(document.documentElement,'PATRON_INACTIVE');
315 var now = new Date();
316 now = now.getTime()/1000;
318 var expire_parts = patron.expire_date().split('-');
319 expire_parts[1] = expire_parts[1] - 1;
321 var expire = new Date();
322 expire.setFullYear(expire_parts[0], expire_parts[1], expire_parts[2]);
323 expire = expire.getTime()/1000
325 if (expire < now) addCSSClass(document.documentElement,'PATRON_EXPIRED');
327 var age_parts = patron.dob().split('-');
328 age_parts[1] = age_parts[1] - 1;
330 var born = new Date();
331 born.setFullYear(age_parts[0], age_parts[1], age_parts[2]);
332 born = born.getTime()/1000
334 var patron_age = now - born;
335 var years_old = parseInt(patron_age / TIME.year);
337 addCSSClass(document.documentElement,'PATRON_AGE_IS_' + years_old);
339 if ( years_old >= 65 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_65');
340 if ( years_old < 65 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_65');
342 if ( years_old >= 24 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_24');
343 if ( years_old < 24 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_24');
345 if ( years_old >= 21 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_21');
346 if ( years_old < 21 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_21');
348 if ( years_old >= 18 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_18');
349 if ( years_old < 18 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_18');
351 if ( years_old >= 13 ) addCSSClass(document.documentElement,'PATRON_AGE_GE_13');
352 if ( years_old < 13 ) addCSSClass(document.documentElement,'PATRON_AGE_LT_13');
356 dump('patron.util.set_penalty_css: ' + E + '\n');
357 alert('patron.util.set_penalty_css: ' + E + '\n');
362 dump('exiting patron/util.js\n');