]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/admin/work_log.js
Improve Firefox/XULRunner Support
[working/Evergreen.git] / Open-ILS / xul / staff_client / server / admin / work_log.js
1 var error;
2 var list1; var selected1 = [];
3 var list2; var selected2 = [];
4 var data;
5 var max_work_log_entries;
6 var max_patron_log_entries;
7
8 function my_init() {
9     try {
10         if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
11         JSAN.errorLevel = "die"; // none, warn, or die
12         JSAN.addRepository('/xul/server/');
13         JSAN.use('util.error'); error = new util.error();
14         error.sdump('D_TRACE','my_init() for main_test.xul');
15
16         JSAN.use('OpenILS.data'); data = new OpenILS.data(); data.stash_retrieve();
17
18         max_work_log_entries = data.hash.aous['ui.admin.work_log.max_entries'] || 20;
19         max_patron_log_entries = data.hash.aous['ui.admin.patron_log.max_entries'] || 10;
20
21         init_lists();
22         set_behavior();
23         populate_lists();
24         default_focus();
25
26     } catch(E) {
27         try { error.standard_unexpected_error_alert('admin/work_log.xul,my_init():',E); } catch(F) { alert(E); }
28     }
29 }
30
31 function default_focus() {
32     var btn = document.getElementById('refresh_btn');
33     if (btn) btn.focus();
34 }
35
36 function init_lists() {
37     try {
38         var cmd_retrieve_item = document.getElementById('cmd_retrieve_item');
39         var cmd_retrieve_patron1 = document.getElementById('cmd_retrieve_patron1');
40         var cmd_retrieve_patron2 = document.getElementById('cmd_retrieve_patron2');
41
42         JSAN.use('util.list');
43
44         list1 = new util.list('work_action_log');
45         list2 = new util.list('work_patron_log');
46
47         JSAN.use('circ.util'); var columns = circ.util.work_log_columns({});
48
49         list1.init( {
50             'columns' : columns,
51             'on_select' : function(ev) {
52                 JSAN.use('util.functional'); var sel = list1.retrieve_selection();
53                 selected1 = util.functional.map_list( sel, function(o) { return JSON2js(o.getAttribute('retrieve_id')); });
54                 if (selected1.length == 0) { 
55                     cmd_retrieve_patron1.setAttribute('disabled','true');
56                     cmd_retrieve_item.setAttribute('disabled','true');
57                 } else { 
58                     cmd_retrieve_patron1.setAttribute('disabled','false');
59                     cmd_retrieve_item.setAttribute('disabled','false');
60                 }
61             }
62         } );
63
64         list2.init( {
65             'columns' : columns,
66             'on_select' : function(ev) {
67                 JSAN.use('util.functional'); var sel = list2.retrieve_selection();
68                 selected2 = util.functional.map_list( sel, function(o) { return JSON2js(o.getAttribute('retrieve_id')); });
69                 if (selected2.length == 0) { 
70                     cmd_retrieve_patron2.setAttribute('disabled','true');
71                 } else { 
72                     cmd_retrieve_patron2.setAttribute('disabled','false');
73                 }
74             }
75         } );
76
77     } catch(E) {
78
79         try { error.standard_unexpected_error_alert('admin/work_log.xul,init_lists():',E); } catch(F) { alert(E); }
80     }
81 }
82
83 function populate_lists() {
84     try {
85         list1.clear();
86         data.stash_retrieve();
87         if (data.work_log) {
88             var count = data.work_log.length;
89             var x = document.getElementById('desire_number_of_work_log_entries');
90             if (x) {
91                 if (Number(x.value) < count) { count = Number(x.value); }
92             }
93             for (var i = 0; i < count; i++ ) { 
94                 list1.append( data.work_log[i] );
95             }
96         }
97         list2.clear();
98         if (data.patron_log) {
99             var count = data.patron_log.length;
100             var y = document.getElementById('desire_number_of_patron_log_entries');
101             if (y) {
102                 if (Number(y.value) < count) { count = Number(y.value); }
103             }
104             for (var i = 0; i < count; i++ ) { 
105                 list2.append( data.patron_log[i] );
106             }
107         }
108     } catch(E) {
109         try { error.standard_unexpected_error_alert('admin/work_log.xul,populate_lists():',E); } catch(F) { alert(E); }
110     }
111 }
112
113 function set_behavior() {
114     try {
115
116         var x = document.getElementById('desire_number_of_work_log_entries');
117         if (x) {
118             x.setAttribute('max',max_work_log_entries);
119             if (!x.value) { x.setAttribute('value',max_work_log_entries); x.value = max_work_log_entries; }
120         }
121         var y = document.getElementById('desire_number_of_patron_log_entries');
122         if (y) {
123             y.setAttribute('max',max_patron_log_entries);
124             if (!y.value) { y.setAttribute('value',max_patron_log_entries); y.value = max_patron_log_entries; }
125         }
126
127         var cmd_refresh = document.getElementById('cmd_refresh');
128         var cmd_retrieve_item = document.getElementById('cmd_retrieve_item');
129         var cmd_retrieve_patron1 = document.getElementById('cmd_retrieve_patron1');
130         var cmd_retrieve_patron2 = document.getElementById('cmd_retrieve_patron2');
131
132         if (cmd_refresh) cmd_refresh.addEventListener('command', function() { populate_lists(); }, false);
133
134         function gen_patron_retrieval_func(which) {
135             return function(ev) {
136                try {
137                     var selected = which == 1 ? selected1 : selected2;
138                     var seen = {};
139                     for (var i = 0; i < selected.length; i++) {
140                         var patron_id = selected[i].au_id;
141                         if (typeof patron_id == 'null') continue;
142                         if (seen[patron_id]) continue; seen[patron_id] = true;
143                         xulG.new_patron_tab(
144                             {},
145                             { 'id' : patron_id }
146                         );
147                     }
148                 } catch(E) {
149                     error.standard_unexpected_error_alert('Error in work_log.js, patron_retrieval_func():',E);
150                 }
151             };
152         }
153         if (cmd_retrieve_patron1) cmd_retrieve_patron1.addEventListener('command', gen_patron_retrieval_func(1), false);
154         if (cmd_retrieve_patron2) cmd_retrieve_patron2.addEventListener('command', gen_patron_retrieval_func(2), false);
155
156         if (cmd_retrieve_item) cmd_retrieve_item.addEventListener(
157             'command',
158             function(ev) {
159                 try {
160                     var seen = {}; var barcodes = [];
161                     for (var i = 0; i < selected1.length; i++) {
162                         var barcode = selected1[i].acp_barcode;
163                         if (typeof barcode == 'null') continue;
164                         if (seen[barcode]) continue; seen[barcode] = true;
165                         barcodes.push( barcode );
166                     }
167                     if (barcodes.length > 0) {
168                         xulG.new_tab(
169                             urls.XUL_COPY_STATUS,
170                             {},
171                             { 'barcodes' : barcodes }
172                         );
173                     }
174                 } catch(E) {
175                     error.standard_unexpected_error_alert('Error in work_log.js, retrieve_item():',E);
176                 }
177             },
178             false
179         );
180
181     } catch(E) {
182         try { error.standard_unexpected_error_alert('admin/work_log.xul,set_behavior():',E); } catch(F) { alert(E); }
183     }
184 }
185