]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/admin/work_log.js
Add cointainer() and record_list() filters to QueryParser
[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({}); var column_mapper_func = circ.util.std_map_row_to_columns();
49
50         list1.init( {
51             'columns' : columns,
52             'map_row_to_columns' : column_mapper_func,
53             'on_select' : function(ev) {
54                 JSAN.use('util.functional'); var sel = list1.retrieve_selection();
55                 selected1 = util.functional.map_list( sel, function(o) { return JSON2js(o.getAttribute('retrieve_id')); });
56                 if (selected1.length == 0) { 
57                     cmd_retrieve_patron1.setAttribute('disabled','true');
58                     cmd_retrieve_item.setAttribute('disabled','true');
59                 } else { 
60                     cmd_retrieve_patron1.setAttribute('disabled','false');
61                     cmd_retrieve_item.setAttribute('disabled','false');
62                 }
63             }
64         } );
65
66         list2.init( {
67             'columns' : columns,
68             'map_row_to_columns' : column_mapper_func,
69             'on_select' : function(ev) {
70                 JSAN.use('util.functional'); var sel = list2.retrieve_selection();
71                 selected2 = util.functional.map_list( sel, function(o) { return JSON2js(o.getAttribute('retrieve_id')); });
72                 if (selected2.length == 0) { 
73                     cmd_retrieve_patron2.setAttribute('disabled','true');
74                 } else { 
75                     cmd_retrieve_patron2.setAttribute('disabled','false');
76                 }
77             }
78         } );
79
80     } catch(E) {
81
82         try { error.standard_unexpected_error_alert('admin/work_log.xul,init_lists():',E); } catch(F) { alert(E); }
83     }
84 }
85
86 function populate_lists() {
87     try {
88         list1.clear();
89         data.stash_retrieve();
90         if (data.work_log) {
91             var count = data.work_log.length;
92             var x = document.getElementById('desire_number_of_work_log_entries');
93             if (x) {
94                 if (Number(x.value) < count) { count = Number(x.value); }
95             }
96             for (var i = 0; i < count; i++ ) { 
97                 list1.append( data.work_log[i] );
98             }
99         }
100         list2.clear();
101         if (data.patron_log) {
102             var count = data.patron_log.length;
103             var y = document.getElementById('desire_number_of_patron_log_entries');
104             if (y) {
105                 if (Number(y.value) < count) { count = Number(y.value); }
106             }
107             for (var i = 0; i < count; i++ ) { 
108                 list2.append( data.patron_log[i] );
109             }
110         }
111     } catch(E) {
112         try { error.standard_unexpected_error_alert('admin/work_log.xul,populate_lists():',E); } catch(F) { alert(E); }
113     }
114 }
115
116 function set_behavior() {
117     try {
118
119         var x = document.getElementById('desire_number_of_work_log_entries');
120         if (x) {
121             x.setAttribute('max',max_work_log_entries);
122             if (!x.value) { x.setAttribute('value',max_work_log_entries); x.value = max_work_log_entries; }
123         }
124         var y = document.getElementById('desire_number_of_patron_log_entries');
125         if (y) {
126             y.setAttribute('max',max_patron_log_entries);
127             if (!y.value) { y.setAttribute('value',max_patron_log_entries); y.value = max_patron_log_entries; }
128         }
129
130         var cmd_refresh = document.getElementById('cmd_refresh');
131         var cmd_retrieve_item = document.getElementById('cmd_retrieve_item');
132         var cmd_retrieve_patron1 = document.getElementById('cmd_retrieve_patron1');
133         var cmd_retrieve_patron2 = document.getElementById('cmd_retrieve_patron2');
134
135         if (cmd_refresh) cmd_refresh.addEventListener('command', function() { populate_lists(); }, false);
136
137         function gen_patron_retrieval_func(which) {
138             return function(ev) {
139                try {
140                     var selected = which == 1 ? selected1 : selected2;
141                     var seen = {};
142                     for (var i = 0; i < selected.length; i++) {
143                         var patron_id = selected[i].au_id;
144                         if (typeof patron_id == 'null') continue;
145                         if (seen[patron_id]) continue; seen[patron_id] = true;
146                         xulG.new_patron_tab(
147                             {},
148                             { 'id' : patron_id }
149                         );
150                     }
151                 } catch(E) {
152                     error.standard_unexpected_error_alert('Error in work_log.js, patron_retrieval_func():',E);
153                 }
154             };
155         }
156         if (cmd_retrieve_patron1) cmd_retrieve_patron1.addEventListener('command', gen_patron_retrieval_func(1), false);
157         if (cmd_retrieve_patron2) cmd_retrieve_patron2.addEventListener('command', gen_patron_retrieval_func(2), false);
158
159         if (cmd_retrieve_item) cmd_retrieve_item.addEventListener(
160             'command',
161             function(ev) {
162                 try {
163                     var seen = {}; var barcodes = [];
164                     for (var i = 0; i < selected1.length; i++) {
165                         var barcode = selected1[i].acp_barcode;
166                         if (typeof barcode == 'null') continue;
167                         if (seen[barcode]) continue; seen[barcode] = true;
168                         barcodes.push( barcode );
169                     }
170                     if (barcodes.length > 0) {
171                         xulG.new_tab(
172                             urls.XUL_COPY_STATUS,
173                             {},
174                             { 'barcodes' : barcodes }
175                         );
176                     }
177                 } catch(E) {
178                     error.standard_unexpected_error_alert('Error in work_log.js, retrieve_item():',E);
179                 }
180             },
181             false
182         );
183
184     } catch(E) {
185         try { error.standard_unexpected_error_alert('admin/work_log.xul,set_behavior():',E); } catch(F) { alert(E); }
186     }
187 }
188