1 var list; var error; var net; var rows;
3 function $(id) { return document.getElementById(id); }
5 //// parent interfaces often call these
6 function default_focus() { $('atev_list').focus(); }
7 function refresh() { populate_list(); }
10 function trigger_event_init() {
12 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
14 commonStrings = $('commonStrings');
15 patronStrings = $('patronStrings');
17 if (typeof JSAN == 'undefined') {
19 commonStrings.getString('common.jsan.missing')
23 JSAN.errorLevel = "die"; // none, warn, or die
24 JSAN.addRepository('..');
26 JSAN.use('OpenILS.data'); data = new OpenILS.data(); data.stash_retrieve();
27 XML_HTTP_SERVER = data.server_unadorned;
29 JSAN.use('util.error'); error = new util.error();
30 JSAN.use('util.network'); net = new util.network();
31 JSAN.use('patron.util');
32 JSAN.use('util.list');
33 JSAN.use('util.functional');
34 JSAN.use('util.widgets');
36 dojo.require('openils.Util');
39 $('cmd_cancel_event').addEventListener('command', gen_event_handler('cancel'), false);
40 $('cmd_reset_event').addEventListener('command', gen_event_handler('reset'), false);
41 $('circ').addEventListener('command', function() { populate_list(); }, false);
42 $('ahr').addEventListener('command', function() { populate_list(); }, false);
43 $('pending').addEventListener('command', function() { populate_list(); }, false);
44 $('complete').addEventListener('command', function() { populate_list(); }, false);
45 $('error').addEventListener('command', function() { populate_list(); }, false);
50 var err_prefix = 'trigger_events.js -> trigger_event_init() : ';
51 if (error) error.standard_unexpected_error_alert(err_prefix,E); else alert(err_prefix + E);
55 function gen_event_handler(method) { // cancel or reset?
58 var sel = list.retrieve_selection();
59 var ids = util.functional.map_list( sel, function(o) { return JSON2js( o.getAttribute('retrieve_id') ); } );
61 var pm = $('progress'); pm.value = 0; pm.hidden = false;
64 var i = method == 'cancel' ? 'FM_ATEV_CANCEL' : 'FM_ATEV_RESET';
65 fieldmapper.standardRequest(
66 [ api[i].app, api[i].method ],
69 onresponse: function(r) {
71 idx++; pm.value = Number( pm.value ) + 100/ids.length;
72 var result = openils.Util.readResponse(r);
73 if (typeof result.ilsevent != 'undefined') { throw(result); }
75 error.standard_unexpected_error_alert('In patron/trigger_events.js, handle_'+i+'_event onresponse.',E);
78 onerror: function(r) {
80 var result = openils.Util.readResponse(r);
83 error.standard_unexpected_error_alert('In patron/trigger_events.js, handle_'+i+'_event onerror.',E);
85 pm.hidden = true; pm.value = 0; populate_list();
87 oncomplete: function(r) {
89 var result = openils.Util.readResponse(r);
91 error.standard_unexpected_error_alert('In patron/trigger_events.js, handle_'+i+'_event oncomplete.',E);
93 pm.hidden = true; pm.value = 0; populate_list();
99 alert('Error in patron/trigger_events.js, handle_???_event(): ' + E);
104 function init_list() {
107 list = new util.list( 'atev_list' );
110 'columns' : [].concat(
111 list.fm_columns('atev', {
112 'atev_target' : { 'render' : function(my) { return fieldmapper.IDL.fmclasses[my.atev.target().classname].label; } }
115 list.fm_columns('atevdef', {
116 '*' : { 'hidden' : true },
117 'atevdef_name' : { 'hidden' : false },
118 'atevdef_reactor' : { 'hidden' : false }
121 list.fm_columns('circ', {
122 '*' : { 'hidden' : true },
123 'circ_due_date' : { 'hidden' : false }
126 list.fm_columns('acp', {
127 '*' : { 'hidden' : true },
128 'acp_barcode' : { 'hidden' : false }
131 list.fm_columns('ahr', {
132 '*' : { 'hidden' : true },
133 'ahr_id' : { 'hidden' : false }
136 'retrieve_row' : retrieve_row,
137 'on_select' : handle_selection
142 var err_prefix = 'trigger_events.js -> init_list() : ';
143 if (error) error.standard_unexpected_error_alert(err_prefix,E); else alert(err_prefix + E);
147 function retrieve_row(params) { // callback function for fleshing rows in a list
148 params.row_node.setAttribute('retrieve_id',params.row.my.atev.id());
149 params.on_retrieve(params.row);
153 function handle_selection(ev) { // handler for list row selection event
154 var sel = list.retrieve_selection();
155 if (sel.length > 0) {
156 $('cmd_cancel_event').setAttribute('disabled','false');
157 $('cmd_reset_event').setAttribute('disabled','false');
159 $('cmd_cancel_event').setAttribute('disabled','true');
160 $('cmd_reset_event').setAttribute('disabled','true');
164 function populate_list() {
167 $('circ').disabled = true; $('ahr').disabled = true; $('pending').disabled = true; $('complete').disabled = true; $('error').disabled = true;
172 function onResponse(r) {
173 var evt = openils.Util.readResponse(r);
178 'atevdef' : evt.event_def(),
179 'circ' : evt.target().classname == 'circ' ? evt.target() : null,
180 'ahr' : evt.target().classname == 'ahr' ? evt.target() : null,
181 'acp' : evt.target().classname == 'circ' ? evt.target().target_copy() : evt.target().current_copy()
185 rows[ evt.id() ] = list.append( row_params );
189 function onError(r) {
190 var evt = openils.Util.readResponse(r);
191 alert('error, evt = ' + js2JSON(evt));
192 $('circ').disabled = false; $('ahr').disabled = false; $('pending').disabled = false; $('complete').disabled = false; $('error').disabled = false;
195 var method = $('circ').checked ? 'FM_ATEV_APROPOS_CIRC' : 'FM_ATEV_APROPOS_AHR';
196 if (xul_param('copy_id')) { method += '_VIA_COPY'; }
198 var filter = {"event":{"state":"complete"}, "offset":0, "limit":10, "order_by":[{"class":"atev", "field":"run_time", "direction":"desc"}]};
200 if ($('pending').checked) { filter.event.state = 'pending'; filter.order_by[0].direction = 'asc'; }
201 if ($('error').checked) { filter.event.state = 'error'; }
203 fieldmapper.standardRequest(
204 [api[method].app, api[method].method ],
206 params: [ses(), xul_param('copy_id') || xul_param('patron_id'), filter],
207 onresponse : onResponse,
209 oncomplete : function() {
210 $('circ').disabled = false; $('ahr').disabled = false; $('pending').disabled = false; $('complete').disabled = false; $('error').disabled = false;
216 var err_prefix = 'trigger_events.js -> populate_list() : ';
217 if (error) error.standard_unexpected_error_alert(err_prefix,E); else alert(err_prefix + E);