]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/standing_penalties.js
apply new penalty
[working/Evergreen.git] / Open-ILS / xul / staff_client / server / patron / standing_penalties.js
1 function penalty_init() {
2     try {
3         commonStrings = document.getElementById('commonStrings');
4         patronStrings = document.getElementById('patronStrings');
5
6         if (typeof JSAN == 'undefined') {
7             throw(
8                 commonStrings.getString('common.jsan.missing')
9             );
10         }
11
12         JSAN.errorLevel = "die"; // none, warn, or die
13         JSAN.addRepository('..');
14
15                 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.stash_retrieve();
16         XML_HTTP_SERVER = data.server_unadorned;
17
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');
21
22         var list = new util.list( 'ausp_list' );
23         list.init( 
24             {
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); 
30                     return params.row; 
31                 },
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') ); } );
35                     if (ids.length > 0) {
36                         document.getElementById('cmd_remove_penalty').setAttribute('disabled','false');
37                     } else {
38                         document.getElementById('cmd_remove_penalty').setAttribute('disabled','true');
39                     }
40                 }
41             } 
42         );
43
44         var rows = [];
45         for (var i = 0; i < xulG.patron.standing_penalties().length; i++) {
46             var row_params = {
47                 'row' : {
48                     'my' : {
49                         'ausp' : xulG.patron.standing_penalties()[i],
50                         'csp' : xulG.patron.standing_penalties()[i].standing_penalty(),
51                         'au' : xulG.patron,
52                     }
53                 }
54             };
55             rows[ xulG.patron.standing_penalties()[i].id() ] = list.append( row_params );
56         };
57
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.addEventListener(
66                     'command',
67                     function(ev) {
68                         var id = ev.target.getAttribute('value');
69
70                         var note = window.prompt(patronStrings.getString('staff.patron.standing_penalty.note_prompt'),'',patronStrings.getString('staff.patron.standing_penalty.note_title'));
71
72                         var penalty = new ausp();
73                         penalty.usr( xulG.patron.id() );
74                         penalty.isnew( 1 );
75                         penalty.standing_penalty( id );
76                         penalty.org_unit( ses('ws_ou') );
77                         penalty.note( note );
78                         net.simple_request(
79                             'FM_AUSP_APPLY', 
80                             [ ses(), penalty ],
81                             function(reqobj) {
82                                 var req = reqobj.getResultObject();
83                                 if (typeof req.ilsevent != 'undefined') {
84                                     error.standard_unexpected_error_alert(patronStrings.getFormattedString('staff.patron.standing_penalty.apply_error',[data.hash.csp[id].name()]),req);
85                                 } else {
86                                     penalty.id(req);
87                                     xulG.patron.standing_penalties( xulG.patron.standing_penalties().concat( penalty ) );
88                                     var row_params = {
89                                         'row' : {
90                                             'my' : {
91                                                 'ausp' : penalty,
92                                                 'csp' : data.hash.csp[ penalty.standing_penalty() ],
93                                                 'au' : xulG.patron,
94                                             }
95                                         }
96                                     };
97                                     rows[ req ] = list.append( row_params );
98                                 }
99                                 if (xulG && typeof xulG.refresh == 'function') {
100                                     xulG.refresh();
101                                 }
102                                 document.getElementById('progress').hidden = true;
103                             }
104                         );
105
106                         document.getElementById('progress').hidden = false;
107                     },
108                     false
109                 );
110             }
111         }
112
113
114         document.getElementById('cmd_remove_penalty').addEventListener(
115             'command',
116             function() {
117                 var sel = list.retrieve_selection();
118                 var ids = util.functional.map_list( sel, function(o) { return JSON2js( o.getAttribute('retrieve_id') ); } );
119                 if (ids.length > 0) {
120                     function gen_func(id) {
121                         return function() {
122                             try {
123                                 var penalty = util.functional.find_list( xulG.patron.standing_penalties(), function(o) { return o.id() == id; } );
124                                 penalty.isdeleted(1);
125
126                                 var req = net.simple_request( 'FM_AUSP_REMOVE', [ ses(), penalty ] );
127                                 if (typeof req.ilsevent != 'undefined' || String(req) != '1') {
128                                     error.standard_unexpected_error_alert(patronStrings.getFormattedString('staff.patron.standing_penalty.remove_error',[id]),req);
129                                 } else {
130                                     var node = rows[ id ].my_node;
131                                     var parentNode = node.parentNode;
132                                     parentNode.removeChild( node );
133                                     delete(rows[ id ]);
134                                 }
135                             } catch(E) {
136                                 alert(E);
137                             }
138                         }; 
139                     }
140
141                     var funcs = [];
142                     for (var i = 0; i < ids.length; i++) {
143                         funcs.push( gen_func(ids[i]) );
144                     } 
145                     funcs.push(
146                         function() {
147                             if (xulG && typeof xulG.refresh == 'function') {
148                                 xulG.refresh();
149                             }
150                             document.getElementById('progress').hidden = true;
151                         }
152                     );
153                     document.getElementById('progress').hidden = false;
154                     JSAN.use('util.exec'); var exec = new util.exec();
155                     exec.chain(funcs);
156                 }
157             },
158             false
159         );
160
161
162     } catch(E) {
163         alert(E);
164     }
165 }