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 $('list_actions').appendChild( list.render_list_actions() );
40 list.set_list_actions();
41 $('cmd_cancel_event').addEventListener('command', gen_event_handler('cancel'), false);
42 $('cmd_reset_event').addEventListener('command', gen_event_handler('reset'), false);
43 $('circ').addEventListener('command', function() { populate_list(); }, false);
44 $('ahr').addEventListener('command', function() { populate_list(); }, false);
45 $('pending').addEventListener('command', function() { populate_list(); }, false);
46 $('complete').addEventListener('command', function() { populate_list(); }, false);
47 $('error').addEventListener('command', function() { populate_list(); }, false);
52 var err_prefix = 'trigger_events.js -> trigger_event_init() : ';
53 if (error) error.standard_unexpected_error_alert(err_prefix,E); else alert(err_prefix + E);
57 function gen_event_handler(method) { // cancel or reset?
60 var sel = list.retrieve_selection();
61 var ids = util.functional.map_list( sel, function(o) { return JSON2js( o.getAttribute('retrieve_id') ); } );
63 var pm = $('progress'); pm.value = 0; pm.hidden = false;
66 var i = method == 'cancel' ? 'FM_ATEV_CANCEL' : 'FM_ATEV_RESET';
67 fieldmapper.standardRequest(
68 [ api[i].app, api[i].method ],
71 onresponse: function(r) {
73 idx++; pm.value = Number( pm.value ) + 100/ids.length;
74 var result = openils.Util.readResponse(r);
75 if (typeof result.ilsevent != 'undefined') { throw(result); }
77 error.standard_unexpected_error_alert('In patron/trigger_events.js, handle_'+i+'_event onresponse.',E);
80 onerror: function(r) {
82 var result = openils.Util.readResponse(r);
85 error.standard_unexpected_error_alert('In patron/trigger_events.js, handle_'+i+'_event onerror.',E);
87 pm.hidden = true; pm.value = 0; populate_list();
89 oncomplete: function(r) {
91 var result = openils.Util.readResponse(r);
93 error.standard_unexpected_error_alert('In patron/trigger_events.js, handle_'+i+'_event oncomplete.',E);
95 pm.hidden = true; pm.value = 0; populate_list();
101 alert('Error in patron/trigger_events.js, handle_???_event(): ' + E);
106 function init_list() {
109 list = new util.list( 'atev_list' );
112 'columns' : [].concat(
113 list.fm_columns('atev', {
114 'atev_target' : { 'render' : function(my) { return fieldmapper.IDL.fmclasses[my.atev.target().classname].label; } }
117 list.fm_columns('atevdef', {
118 '*' : { 'expanded_label' : true, 'hidden' : true },
119 'atevdef_name' : { 'hidden' : false },
120 'atevdef_reactor' : { 'render' : function(my) { return my.atevdef.reactor().id(); } },
121 'atevdef_validator' : { 'render' : function(my) { return my.atevdef.validator().id(); } }
124 list.fm_columns('atreact', {
125 '*' : { 'expanded_label' : true, 'hidden' : true },
126 'atreact_module' : { 'hidden' : false }
129 list.fm_columns('atval', {
130 '*' : { 'expanded_label' : true, 'hidden' : true },
131 'atval_module' : { 'hidden' : false }
134 list.fm_columns('circ', {
135 '*' : { 'expanded_label' : true, 'hidden' : true },
136 'circ_due_date' : { 'hidden' : false }
139 list.fm_columns('acp', {
140 '*' : { 'expanded_label' : true, 'hidden' : true },
141 'acp_barcode' : { 'hidden' : false }
144 list.fm_columns('ahr', {
145 '*' : { 'expanded_label' : true, 'hidden' : true },
146 'ahr_id' : { 'hidden' : false }
149 'retrieve_row' : retrieve_row,
150 'on_select' : handle_selection
155 var err_prefix = 'trigger_events.js -> init_list() : ';
156 if (error) error.standard_unexpected_error_alert(err_prefix,E); else alert(err_prefix + E);
160 function retrieve_row(params) { // callback function for fleshing rows in a list
161 params.treeitem_node.setAttribute('retrieve_id',params.row.my.atev.id());
162 params.on_retrieve(params.row);
166 function handle_selection(ev) { // handler for list row selection event
167 var sel = list.retrieve_selection();
168 if (sel.length > 0) {
169 $('cmd_cancel_event').setAttribute('disabled','false');
170 $('cmd_reset_event').setAttribute('disabled','false');
172 $('cmd_cancel_event').setAttribute('disabled','true');
173 $('cmd_reset_event').setAttribute('disabled','true');
177 function populate_list() {
180 $('circ').disabled = true; $('ahr').disabled = true; $('pending').disabled = true; $('complete').disabled = true; $('error').disabled = true;
185 function onResponse(r) {
186 var evt = openils.Util.readResponse(r);
191 'atevdef' : evt.event_def(),
192 'atreact' : evt.event_def().reactor(),
193 'atval' : evt.event_def().validator(),
194 'circ' : evt.target().classname == 'circ' ? evt.target() : null,
195 'ahr' : evt.target().classname == 'ahr' ? evt.target() : null,
196 'acp' : evt.target().classname == 'circ' ? evt.target().target_copy() : evt.target().current_copy()
200 rows[ evt.id() ] = list.append( row_params );
204 function onError(r) {
205 var evt = openils.Util.readResponse(r);
206 alert('error, evt = ' + js2JSON(evt));
207 $('circ').disabled = false; $('ahr').disabled = false; $('pending').disabled = false; $('complete').disabled = false; $('error').disabled = false;
210 var method = $('circ').checked ? 'FM_ATEV_APROPOS_CIRC' : 'FM_ATEV_APROPOS_AHR';
211 if (xul_param('copy_id')) { method += '_VIA_COPY'; }
213 var filter = {"event":{"state":"complete"}, "order_by":[{"class":"atev", "field":"run_time", "direction":"desc"}]};
215 if ($('pending').checked) { filter.event.state = 'pending'; filter.order_by[0].direction = 'asc'; }
216 if ($('error').checked) { filter.event.state = 'error'; }
218 fieldmapper.standardRequest(
219 [api[method].app, api[method].method ],
221 params: [ses(), xul_param('copy_id') || xul_param('patron_id'), filter],
222 onresponse : onResponse,
224 oncomplete : function() {
225 $('circ').disabled = false; $('ahr').disabled = false; $('pending').disabled = false; $('complete').disabled = false; $('error').disabled = false;
231 var err_prefix = 'trigger_events.js -> populate_list() : ';
232 if (error) error.standard_unexpected_error_alert(err_prefix,E); else alert(err_prefix + E);