1 dump('entering cat.copy_buckets.js\n');
3 if (typeof cat == 'undefined') cat = {};
4 cat.copy_buckets = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.network'); this.network = new util.network();
9 JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
12 cat.copy_buckets.prototype = {
13 'selection_list1' : [],
14 'selection_list2' : [],
16 'init' : function( params ) {
20 obj.session = params['session'];
21 obj.copy_ids = params['copy_ids'];
23 JSAN.use('circ.util');
24 var columns = circ.util.columns(
26 'barcode' : { 'hidden' : false },
27 'title' : { 'hidden' : false },
28 'location' : { 'hidden' : false },
29 'call_number' : { 'hidden' : false },
30 'status' : { 'hidden' : false },
34 JSAN.use('util.list');
36 obj.list1 = new util.list('pending_copies_list');
40 'map_row_to_column' : circ.util.std_map_row_to_column(),
41 'on_select' : function(ev) {
43 JSAN.use('util.functional');
44 var sel = obj.list1.retrieve_selection();
45 obj.selection_list1 = util.functional.map_list(
47 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
49 obj.error.sdump('D_TRACE','circ/copy_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
50 if (obj.selection_list1.length == 0) {
51 obj.controller.view.copy_buckets_sel_add.disabled = true;
53 obj.controller.view.copy_buckets_sel_add.disabled = false;
62 for (var i = 0; i < obj.copy_ids.length; i++) {
63 var item = obj.flesh_item_for_list( obj.copy_ids[i] );
64 if (item) obj.list1.append( item );
67 obj.list2 = new util.list('copies_in_bucket_list');
71 'map_row_to_column' : circ.util.std_map_row_to_column(),
72 'on_select' : function(ev) {
74 JSAN.use('util.functional');
75 var sel = obj.list2.retrieve_selection();
76 obj.selection_list2 = util.functional.map_list(
78 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
80 obj.error.sdump('D_TRACE','circ/copy_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
81 if (obj.selection_list2.length == 0) {
82 obj.controller.view.copy_buckets_delete_item.disabled = true;
84 obj.controller.view.copy_buckets_delete_item.disabled = false;
93 JSAN.use('util.controller'); obj.controller = new util.controller();
97 'copy_buckets_menulist_placeholder' : [
101 JSAN.use('util.widgets'); JSAN.use('util.functional');
102 var items = util.functional.map_list(
103 obj.network.simple_request(
104 'BUCKET_RETRIEVE_VIA_USER',
105 [ obj.session, obj.data.list.au[0].id() ]
108 return [ o.name(), o.id() ];
111 g.error.sdump('D_TRACE','items = ' + js2JSON(items));
112 util.widgets.remove_children( e );
113 var ml = util.widgets.make_menulist(
117 ml.setAttribute('id','bucket_menulist');
118 ml.setAttribute('accesskey','');
120 function change_bucket(ev) {
121 var bucket_id = ev.target.value;
122 var bucket = obj.network.simple_request(
124 [ obj.session, 'copy', bucket_id ]
126 var items = bucket.items() || [];
128 for (var i = 0; i < items.length; i++) {
129 var item = obj.flesh_item_for_list(
130 items[i].target_copy(),
133 if (item) obj.list2.append( item );
137 ml.addEventListener( 'command', change_bucket , false);
138 obj.controller.view.bucket_menulist = ml;
141 'value' : ml.firstChild.firstChild.getAttribute('value')
145 JSAN.use('util.widgets'); util.widgets.dispatch('command',ml);
150 'copy_buckets_add' : [
153 var bucket_id = obj.controller.view.bucket_menulist.value;
154 if (!bucket_id) return;
155 for (var i = 0; i < obj.copy_ids.length; i++) {
156 var bucket_item = new ccbi();
157 bucket_item.isnew('1');
158 bucket_item.bucket(bucket_id);
159 bucket_item.target_copy( obj.copy_ids[i] );
161 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
162 [ obj.session, 'copy', bucket_item ]);
164 if (typeof robj == 'object') throw robj;
166 var item = obj.flesh_item_for_list( obj.copy_ids[i], robj );
169 obj.list2.append( item );
176 'copy_buckets_sel_add' : [
179 var bucket_id = obj.controller.view.bucket_menulist.value;
180 if (!bucket_id) return;
181 for (var i = 0; i < obj.selection_list1.length; i++) {
182 var acp_id = obj.selection_list1[i][0];
183 //var barcode = obj.selection_list1[i][1];
184 var bucket_item = new ccbi();
185 bucket_item.isnew('1');
186 bucket_item.bucket(bucket_id);
187 bucket_item.target_copy( acp_id );
189 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
190 [ obj.session, 'copy', bucket_item ]);
192 if (typeof robj == 'object') throw robj;
194 var item = obj.flesh_item_for_list( acp_id, robj );
197 obj.list2.append( item );
205 'copy_buckets_export' : [
208 for (var i = 0; i < obj.selection_list2.length; i++) {
209 var acp_id = obj.selection_list2[i][0];
210 //var barcode = obj.selection_list1[i][1];
211 //var bucket_item_id = obj.selection_list1[i][2];
212 var item = obj.flesh_item_for_list( acp_id );
213 if (item) obj.list1.append( item );
219 'copy_buckets_delete_item' : [
222 for (var i = 0; i < obj.selection_list2.length; i++) {
224 //var acp_id = obj.selection_list2[i][0];
225 //var barcode = obj.selection_list2[i][1];
226 var bucket_item_id = obj.selection_list2[i][2];
227 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
228 [ obj.session, 'copy', bucket_item_id ]);
229 if (typeof robj == 'object') throw robj;
230 obj.controller.render('copy_buckets_menulist_placeholder');
237 'copy_buckets_delete_bucket' : [
241 var bucket = obj.controller.view.bucket_menulist.value;
242 var robj = obj.network.simple_request('BUCKET_DELETE',[obj.session,'copy',bucket]);
243 if (typeof robj == 'object') throw robj;
244 obj.controller.render('copy_buckets_menulist_placeholder');
246 alert('FIXME -- ' + E);
250 'copy_buckets_new_bucket' : [
254 var name = prompt('What would you like to name the bucket?','','Bucket Creation');
257 var bucket = new ccb();
258 bucket.btype('staff_client');
259 bucket.owner( obj.data.list.au[0].id() );
262 var robj = obj.network.simple_request('BUCKET_CREATE',[obj.session,'copy',bucket]);
264 if (typeof robj == 'object') throw robj;
266 obj.controller.render('copy_buckets_menulist_placeholder');
275 function() { alert('Not Yet Implemented'); }
277 'cmd_copy_buckets_print' : [
280 dump( js2JSON( obj.list2.dump() ) );
281 alert( js2JSON( obj.list2.dump() ) );
284 'cmd_copy_buckets_reprint' : [
289 'cmd_copy_buckets_done' : [
298 this.controller.render();
302 'flesh_item_for_list' : function(acp_id,bucket_item_id) {
305 var copy = obj.network.simple_request( 'FM_ACP_RETRIEVE', [ acp_id ]);
307 throw('COPY NOT FOUND');
310 'retrieve_id' : js2JSON( [ copy.id(), copy.barcode(), bucket_item_id ] ),
313 'mvr' : obj.network.simple_request('MODS_SLIM_RECORD_RETRIEVE_VIA_COPY', [ copy.id() ]),
321 alert('FIXME: need special alert and error handling\n' + js2JSON(E));
329 dump('exiting cat.copy_buckets.js\n');