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