]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/cat/copy.js
changing legacy code.. ack :( put buckets and volume transfer support in copy browser
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / cat / copy.js
1 var local_stat_cats;
2 var local_stat_cat_entries = {};
3
4 function my_init() {
5         mw.sdump('D_CAT','entering my_init for copy.js\n');
6         mw.sdump('D_CAT','TESTING: copy.js: ' + mw.G['main_test_variable'] + '\n');
7         mw.sdump('D_CAT','real_parentWindow: ' + real_parentWindow + '\n');
8         populate_copy_status_list('copy-status-menu','copy-status-popup','0');
9         populate_copy_location_list('shelving-location-menu','shelving-location-popup');
10         populate_lib_list_with_branch('circulating-library-menu','circulating-library-popup', mw.G.user_ou, mw.G.org_tree, true );
11         mw.sdump('D_CAT','super_dump cn_list = ' + super_dump_norecurse(cn_list) + '\n');
12         mw.sdump('D_CAT','my_init: cn_list = ' + js2JSON(cn_list) + '\n');
13         /*cn_list = fixJSON(cn_list);
14         mw.sdump('D_CAT','super_dump cn_list = ' + super_dump_norecurse(cn_list) + '\n');
15         mw.sdump('D_CAT','my_init: cn_list = ' + js2JSON(cn_list) + '\n');*/
16         var pertinent_libs = [];
17         for (var i = 0; i < cn_list.length; i++) {
18                 var cn = cn_list[i];
19                 for (var j = 0; j < cn.copies().length; j++) {
20                         var cp = cn.copies()[j];
21                         add_to_listbox(
22                                 i,j,
23                                 mw.G.org_tree_hash[ cn.owning_lib() ].shortname(),
24                                 cn.label(),
25                                 cp.barcode()
26                         );
27                 }
28                 pertinent_libs.push( cn.owning_lib() );
29         }
30         local_stat_cats = mw.G.asc_list;
31         populate_listbox_with_local_stat_cats_myself(
32                 local_stat_cats,
33                 local_stat_cat_entries,
34                 'local_attr_listbox',
35                 pertinent_libs,
36                 'open-ils.circ',
37                 'open-ils.circ.stat_cat.asset.multirange.intersect.retrieve',
38                 false
39         );
40         /*
41         if (params.select_all) {
42                 document.getElementById('ephemeral_listbox').selectAll();
43         }
44         */
45         transfer_attributes();
46         apply_attributes();
47 }
48
49 function transfer_attributes(event) {
50         /*
51         var items = event.target.selectedItems;
52         mw.sdump('D_CAT','selectedItems.length = ' + items.length + '\n');
53         if (items.length == 0) { return; }
54         */
55
56         // Dump items
57
58         /*
59         var dump_copies = map_list(
60                 items,
61                 function (obj) {
62                         var cnp = obj.getAttribute('cn_pos');
63                         var cpp = obj.getAttribute('cp_pos');
64                         return cn_list[cnp].copies()[cpp];
65                 }
66         );
67         */
68
69         var dump_copies = map_flat_list(
70                 cn_list,
71                 function (cn) {
72                         return cn.copies();
73                 }
74         );
75
76         for (var i in dump_copies) {
77                 mw.sdump('D_CAT','\n\n\n,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_\n\n\n');
78                 mw.sdump('D_CAT', js2JSON(dump_copies[i]) );
79                 mw.sdump('D_CAT','\n\n\n,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_\n\n\n');
80         }
81
82         // Transfer values from first item to XUL
83
84         /*
85         var cp_pos = items[0].getAttribute('cp_pos');
86         var cn_pos = items[0].getAttribute('cn_pos');
87         var cp_list = cn_list[cn_pos].copies();
88         var copy = cp_list[cp_pos];
89         */
90         var copy = cn_list[0].copies()[0];
91         if (copy.circ_lib()) set_widget_value_for_display(
92                 document.getElementById('circulating-library-menu'),
93                 copy.circ_lib().id()
94         );
95         if (copy.location()) set_widget_value_for_display(
96                 document.getElementById('shelving-location-menu'),
97                 copy.location().id()
98         );
99         if (copy.status()) set_widget_value_for_display(
100                 document.getElementById('copy-status-menu'),
101                 copy.status().id()
102         );
103         if (copy.loan_duration()) set_widget_value_for_display(
104                 document.getElementById('loan-duration-menu'),
105                 copy.loan_duration()
106         );
107         if (copy.fine_level()) set_widget_value_for_display(
108                 document.getElementById('fine-level-menu'),
109                 copy.fine_level()
110         );
111         if (copy.circulate()) set_widget_value_for_display(
112                 document.getElementById('circulate_menu'),
113                 copy.circulate()
114         );
115         if (copy.deposit()) set_widget_value_for_display(
116                 document.getElementById('deposit_menu'),
117                 copy.deposit()
118         );
119         if (copy.deposit_amount()) set_widget_value_for_display(
120                 document.getElementById('deposit_amount'),
121                 copy.deposit_amount()
122         );
123         if (copy.price()) set_widget_value_for_display(
124                 document.getElementById('price'),
125                 copy.price()
126         );
127         if (copy.ref()) set_widget_value_for_display(
128                 document.getElementById('reference_menu'),
129                 copy.ref()
130         );
131         if (copy.opac_visible()) set_widget_value_for_display(
132                 document.getElementById('opac_visible_menu'),
133                 copy.opac_visible()
134         );
135
136         for (var i in copy.stat_cat_entries()) {
137                 var entry = copy.stat_cat_entries()[i];
138                 var menuitem = document.getElementById('menuitem_stat_cat_entry_' + entry.id());
139                 if (menuitem) {
140                         menuitem.parentNode.parentNode.selectedItem = menuitem;
141                 }
142         }
143         mw.sdump('D_CAT','select fired\n');
144 }
145
146
147 function save_attributes() {
148         real_parentWindow.cn_list = cn_list;
149         real_parentWindow.document.getElementById('volume_add').canAdvance = true;
150         //window.close();
151 }
152
153 function apply_attributes() {
154         var circ_lib = document.getElementById('circulating-library-menu').value;
155         var shelving_loc = document.getElementById('shelving-location-menu').value;
156         var copy_status = document.getElementById('copy-status-menu').value;
157         var loan_duration = document.getElementById('loan-duration-menu').value;
158         var fine_level = document.getElementById('fine-level-menu').value;
159         var circulate = document.getElementById('circulate_menu').value;
160         var deposit = document.getElementById('deposit_menu').value;
161         var deposit_amount = document.getElementById('deposit_amount').value;
162         var price = document.getElementById('price').value;
163         var ref = document.getElementById('reference_menu').value;
164         var opac = document.getElementById('opac_visible_menu').value;
165         /*
166         var listbox = document.getElementById('ephemeral_listbox');
167         var items = listbox.selectedItems;
168         mw.sdump('D_CAT','selectedItems.length = ' + items.length + '\n');
169         */
170         for (var i = 0; i < cn_list.length; i++) {
171                 for (var j = 0; j < cn_list[i].copies().length; j++) {
172                         /*
173                         var listitem = items[i];
174                         var cn_pos = listitem.getAttribute('cn_pos');
175                         var cp_pos = listitem.getAttribute('cp_pos');
176                         var copy_node = cn_list[cn_pos].copies()[cp_pos];
177                         */
178                         var copy_node = cn_list[i].copies()[j];
179                         copy_node.circ_lib(     mw.G.org_tree_hash[ circ_lib ]);
180                         copy_node.location(     mw.G.acpl_hash[ shelving_loc ]);
181                         copy_node.status(       mw.G.ccs_hash[ copy_status ]);
182                         copy_node.loan_duration(loan_duration);
183                         copy_node.fine_level(fine_level);
184                         copy_node.circulate(circulate);
185                         copy_node.deposit(deposit);
186                         copy_node.deposit_amount(deposit_amount);
187                         copy_node.price(price);
188                         copy_node.ref(ref);
189                         copy_node.opac_visible(opac);
190                         copy_node.ischanged(1);
191                 }
192         }
193
194         mw.sdump('D_CAT','changed cn_list: ' + js2JSON(cn_list) + '\n');
195 }
196
197 function apply_attribute(ev) {
198         mw.sdump('D_CAT','Entering apply_attribute with element id = ');
199         var popup_id;
200         if (ev.target.tagName == 'menuitem') {
201                 popup_id = ev.target.parentNode.getAttribute('id');
202         } else {
203                 popup_id = ev.target.getAttribute('id');
204         }
205         mw.sdump('D_CAT',popup_id + '\n');
206         mw.sdump('D_CAT','ev.target = ' + ev.target + '  .tagName = ' + ev.target.tagName + '\n');
207
208         var circ_lib = document.getElementById('circulating-library-menu').value;
209         var shelving_loc = document.getElementById('shelving-location-menu').value;
210         var copy_status = document.getElementById('copy-status-menu').value;
211         var loan_duration = document.getElementById('loan-duration-menu').value;
212         var fine_level = document.getElementById('fine-level-menu').value;
213         var circulate = document.getElementById('circulate_menu').value;
214         var deposit = document.getElementById('deposit_menu').value;
215         var deposit_amount = document.getElementById('deposit_amount').value;
216         var price = document.getElementById('price').value;
217         var ref = document.getElementById('reference_menu').value;
218         var opac = document.getElementById('opac_visible_menu').value;
219         /*
220         var listbox = document.getElementById('ephemeral_listbox');
221         var items = listbox.selectedItems;
222
223         mw.sdump('D_CAT','selectedItems.length = ' + items.length + '\n');
224         */
225         mw.sdump('D_CAT','before  cn_list: ' + js2JSON(cn_list) + '\n');
226         for (var i = 0; i < cn_list.length; i++) {
227         for (var j = 0; j < cn_list[i].copies().length; j++) {
228                 /*
229                 var listitem = items[i];
230                 var cn_pos = listitem.getAttribute('cn_pos');
231                 var cp_pos = listitem.getAttribute('cp_pos');
232                 var copy_node = cn_list[cn_pos].copies()[cp_pos];
233                 */
234                 var copy_node = cn_list[i].copies()[j];
235
236                 mw.sdump('D_CAT','\n\n\n\n+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+\n\n\n\n');
237                 mw.sdump('D_CAT','Setting copy ' + copy_node.id() + '...\n');
238                 switch(popup_id) {
239                         case 'circulating-library-popup':
240                                 mw.sdump('D_CAT','\tbefore circ_lib = ' + js2JSON(copy_node.circ_lib()) + '\n');
241                                 copy_node.circ_lib(     mw.G.org_tree_hash[ circ_lib ] );
242                                 mw.sdump('D_CAT','\tafter  circ_lib = ' + js2JSON(copy_node.circ_lib()) + '\n');
243                                 break;
244                         case 'shelving-location-popup':
245                                 mw.sdump('D_CAT','\tbefore location = ' + js2JSON(copy_node.location()) + '\n');
246                                 copy_node.location(     mw.G.acpl_hash[ shelving_loc ] );
247                                 mw.sdump('D_CAT','\tafter  location = ' + js2JSON(copy_node.location()) + '\n');
248                                 break;
249                         case 'copy-status-popup':
250                                 mw.sdump('D_CAT','\tbefore status = ' + js2JSON(copy_node.status()) + '\n');
251                                 copy_node.status(       mw.G.ccs_hash[ copy_status ]);
252                                 mw.sdump('D_CAT','\tafter  status = ' + js2JSON(copy_node.status()) + '\n');
253                                 break;
254                         case 'loan-duration-popup':
255                                 mw.sdump('D_CAT','\tbefore loan_duration = ' + js2JSON(copy_node.loan_duration()) + '\n');
256                                 copy_node.loan_duration(loan_duration);
257                                 mw.sdump('D_CAT','\tafter  loan_duration = ' + js2JSON(copy_node.loan_duration()) + '\n');
258                                 break;
259                         case 'fine-level-popup':
260                                 mw.sdump('D_CAT','\tbefore fine_level = ' + js2JSON(copy_node.fine_level()) + '\n');
261                                 copy_node.fine_level(fine_level);
262                                 mw.sdump('D_CAT','\tafter  fine_level = ' + js2JSON(copy_node.fine_level()) + '\n');
263                                 break;
264                         case 'circulate_popup':
265                                 mw.sdump('D_CAT','\tbefore circulate = ' + js2JSON(copy_node.circulate()) + '\n');
266                                 copy_node.circulate(circulate);
267                                 mw.sdump('D_CAT','\tafter  circulate = ' + js2JSON(copy_node.circulate()) + '\n');
268                                 break;
269                         case 'deposit_popup':
270                                 mw.sdump('D_CAT','\tbefore deposit = ' + js2JSON(copy_node.deposit()) + '\n');
271                                 copy_node.deposit(deposit);
272                                 mw.sdump('D_CAT','\tafter  deposit = ' + js2JSON(copy_node.deposit()) + '\n');
273                                 break;
274                         case 'deposit_amount':
275                                 mw.sdump('D_CAT','\tbefore deposit_amount = ' + js2JSON(copy_node.deposit_amount()) + '\n');
276                                 copy_node.deposit_amount(deposit_amount);
277                                 mw.sdump('D_CAT','\tafter  deposit_amount = ' + js2JSON(copy_node.deposit_amount()) + '\n');
278                                 break;
279                         case 'price':
280                                 mw.sdump('D_CAT','\tbefore price = ' + js2JSON(copy_node.price()) + '\n');
281                                 copy_node.price(price);
282                                 mw.sdump('D_CAT','\tafter  price = ' + js2JSON(copy_node.price()) + '\n');
283                                 break;
284                         case 'reference_popup':
285                                 mw.sdump('D_CAT','\tbefore ref = ' + js2JSON(copy_node.ref()) + '\n');
286                                 copy_node.ref(ref);
287                                 mw.sdump('D_CAT','\tafter  ref = ' + js2JSON(copy_node.ref()) + '\n');
288                                 break;
289                         case 'opac_visible_popup':
290                                 mw.sdump('D_CAT','\tbefore opac_visible = ' + js2JSON(copy_node.opac_visible()) + '\n');
291                                 copy_node.opac_visible(opac);
292                                 mw.sdump('D_CAT','\tafter  opac_visible = ' + js2JSON(copy_node.opac_visible()) + '\n');
293                                 break;
294                         default:
295                                 mw.sdump('D_CAT','\t++++++++ Unhandled.. this should be a stat_cat: ' + popup_id + ' / ' + ev.target.tagName + '\n');
296                                 update_stat_cat_entry(copy_node,ev.target);
297                                 break;
298                 }
299                 mw.sdump('D_CAT','\n\n\n\n+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+\n\n\n\n');
300                 copy_node.ischanged(1);
301         }
302         }
303
304         mw.sdump('D_CAT','changed cn_list: ' + js2JSON(cn_list) + '\n');
305 }
306
307 function update_stat_cat_entry(copy,menuitem) {
308         mw.sdump('D_CAT','\tupdate_stat_cat_entry: value = ' + menuitem.value + '\n');
309         var entries = copy.stat_cat_entries();
310         //mw.sdump('D_CAT','\n\n\ncopy = ' + js2JSON(copy) + '\n');
311         //mw.sdump('D_CAT','\n\n\ncopy.stat_cat_entries() = ' + js2JSON(copy.stat_cat_entries()) + '\n');
312         var stat_cat_id = menuitem.getAttribute('stat_cat');
313         var entry = find_attr_object_in_list(entries,'stat_cat',stat_cat_id);
314         if (entry) {
315                 mw.sdump('D_CAT','\tReplacing old stat_cat_entry with ');
316
317                 entries = filter_list(
318                         entries,
319                         function (obj) {
320                                 return (obj.id() != entry.id());
321                         }
322                 );
323
324         } else {
325                 mw.sdump('D_CAT','\tAppending new stat_cat_entry = ');
326         }
327         mw.sdump('D_CAT',js2JSON(local_stat_cat_entries[menuitem.value]) + '\n');
328         entries.push( local_stat_cat_entries[ menuitem.value ] );
329         copy.stat_cat_entries( entries );
330 }
331
332 var add_to_listbox_first_comma = 0;
333
334 function add_to_listbox(cn_pos,cp_pos,name,callnumber,barcode) {
335         mw.sdump('D_CAT','xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
336         var desc = document.getElementById('description_box');
337         if (add_to_listbox_first_comma++ == 0) {
338                 desc.appendChild( document.createTextNode( ' ' + barcode ) );
339         } else {
340                 desc.appendChild( document.createTextNode( ', ' + barcode ) );
341         }
342         /*
343         var listbox = document.getElementById('ephemeral_listbox');
344         var listitem = document.createElement('listitem');
345                 listitem.setAttribute('cn_pos',cn_pos);
346                 listitem.setAttribute('cp_pos',cp_pos);
347         listbox.appendChild(listitem);
348         var listcell1 = document.createElement('listcell');
349                 listcell1.setAttribute('label',name);
350         listitem.appendChild(listcell1);
351         var listcell2 = document.createElement('listcell');
352                 listcell2.setAttribute('label',callnumber);
353         listitem.appendChild(listcell2);
354         var listcell3 = document.createElement('listcell');
355                 listcell3.setAttribute('label',barcode);
356         listitem.appendChild(listcell3);
357         */
358 }
359