1 function penalty_init() {
3 commonStrings = document.getElementById('commonStrings');
4 patronStrings = document.getElementById('patronStrings');
6 if (typeof JSAN == 'undefined') {
8 commonStrings.getString('common.jsan.missing')
12 JSAN.errorLevel = "die"; // none, warn, or die
13 JSAN.addRepository('..');
15 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.stash_retrieve();
16 XML_HTTP_SERVER = data.server_unadorned;
18 JSAN.use('util.error'); var error = new util.error();
19 JSAN.use('util.network'); var net = new util.network();
20 JSAN.use('patron.util'); JSAN.use('util.list'); JSAN.use('util.functional'); JSAN.use('util.widgets');
22 var list = new util.list( 'ausp_list' );
25 'columns' : patron.util.ausp_columns({}),
26 'map_row_to_columns' : patron.util.std_map_row_to_columns(),
27 'retrieve_row' : function(params) {
28 params.row_node.setAttribute('retrieve_id',params.row.my.ausp.id());
29 params.on_retrieve(params.row);
32 'on_select' : function(ev) {
33 var sel = list.retrieve_selection();
34 var ids = util.functional.map_list( sel, function(o) { return JSON2js( o.getAttribute('retrieve_id') ); } );
36 document.getElementById('cmd_remove_penalty').setAttribute('disabled','false');
38 document.getElementById('cmd_remove_penalty').setAttribute('disabled','true');
45 for (var i = 0; i < xulG.patron.standing_penalties().length; i++) {
49 'ausp' : xulG.patron.standing_penalties()[i],
50 'csp' : xulG.patron.standing_penalties()[i].standing_penalty(),
55 rows[ xulG.patron.standing_penalties()[i].id() ] = list.append( row_params );
58 var csp_list = document.getElementById('csp_list');
59 util.widgets.remove_children(csp_list);
60 for (var i = 0; i < data.list.csp.length; i++) {
61 if (data.list.csp[i].id() > 100) {
62 var menuitem = document.createElement('menuitem'); csp_list.appendChild(menuitem);
63 menuitem.setAttribute('label',data.list.csp[i].label());
64 menuitem.setAttribute('value',data.list.csp[i].id());
65 menuitem.setAttribute('id','csp_'+data.list.csp[i].id());
66 if (util.functional.find_list( xulG.patron.standing_penalties(), function(o) { return o.standing_penalty().id() == data.list.csp[i].id(); } )) {
67 menuitem.setAttribute('disabled','true');
69 menuitem.addEventListener(
72 var id = ev.target.getAttribute('value');
74 var note = window.prompt(patronStrings.getString('staff.patron.standing_penalty.note_prompt'),'',patronStrings.getString('staff.patron.standing_penalty.note_title'));
76 var penalty = new ausp();
77 penalty.usr( xulG.patron.id() );
79 penalty.standing_penalty( id );
80 penalty.org_unit( ses('ws_ou') );
86 var req = reqobj.getResultObject();
87 if (typeof req.ilsevent != 'undefined') {
88 error.standard_unexpected_error_alert(patronStrings.getFormattedString('staff.patron.standing_penalty.apply_error',[data.hash.csp[id].name()]),req);
91 xulG.patron.standing_penalties( xulG.patron.standing_penalties().concat( penalty ) );
96 'csp' : data.hash.csp[ penalty.standing_penalty() ],
101 rows[ req ] = list.append( row_params );
102 ev.target.setAttribute('disabled','true');
104 if (xulG && typeof xulG.refresh == 'function') {
107 document.getElementById('progress').hidden = true;
111 document.getElementById('progress').hidden = false;
119 document.getElementById('cmd_remove_penalty').addEventListener(
122 var sel = list.retrieve_selection();
123 var ids = util.functional.map_list( sel, function(o) { return JSON2js( o.getAttribute('retrieve_id') ); } );
124 if (ids.length > 0) {
125 function gen_func(id) {
128 var penalty = util.functional.find_list( xulG.patron.standing_penalties(), function(o) { return o.id() == id; } );
129 penalty.isdeleted(1);
131 var req = net.simple_request( 'FM_AUSP_REMOVE', [ ses(), penalty ] );
132 if (typeof req.ilsevent != 'undefined' || String(req) != '1') {
133 error.standard_unexpected_error_alert(patronStrings.getFormattedString('staff.patron.standing_penalty.remove_error',[id]),req);
135 var node = rows[ id ].my_node;
136 var parentNode = node.parentNode;
137 parentNode.removeChild( node );
139 var csp_id = typeof penalty.standing_penalty() == 'object' ? penalty.standing_penalty().id() : penalty.standing_penalty();
140 document.getElementById('csp_'+csp_id).setAttribute('disabled','false');
149 for (var i = 0; i < ids.length; i++) {
150 funcs.push( gen_func(ids[i]) );
154 if (xulG && typeof xulG.refresh == 'function') {
157 document.getElementById('progress').hidden = true;
160 document.getElementById('progress').hidden = false;
161 JSAN.use('util.exec'); var exec = new util.exec();
168 document.getElementById('cmd_edit_penalty').addEventListener(
171 var sel = list.retrieve_selection();
172 var ids = util.functional.map_list( sel, function(o) { return JSON2js( o.getAttribute('retrieve_id') ); } );
173 if (ids.length > 0) {
174 var note = window.prompt(
175 patronStrings.getString( 'staff.patron.standing_penalty.note_prompt.' + (ids.length == 1 ? 'singular' : 'plural') ),
177 patronStrings.getString( 'staff.patron.standing_penalty.note_prompt.title' )
179 if (note == null) { return; } /* cancel */
180 for (var i = 0; i < ids.length; i++) {
181 var penalty = util.functional.find_list( xulG.patron.standing_penalties(), function(o) { return o.id() == ids[i]; } );
182 penalty.note( note ); /* this is for rendering, and propogates by reference to the object associated with the row in the GUI */
184 document.getElementById('progress').hidden = false;
186 'FM_AUSP_UPDATE_NOTE', [ ses(), ids, note ],
188 var req = reqObj.getResultObject();
189 if (typeof req.ilsevent != 'undefined' || String(req) != '1') {
190 error.standard_unexpected_error_alert(patronStrings.getString('staff.patron.standing_penalty.update_error'),req);
192 for (var i = 0; i < ids.length; i++) {
193 list.refresh_row( rows[ ids[i] ] );
196 if (xulG && typeof xulG.refresh == 'function') {
199 document.getElementById('progress').hidden = true;