]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/cat/copy.js
0606e3d3c5d326d03b3084734688c41d1fb99722
[working/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                 apply_attributes();
44         }
45         */
46 }
47
48 function transfer_attributes(event) {
49         /*
50         var items = event.target.selectedItems;
51         mw.sdump('D_CAT','selectedItems.length = ' + items.length + '\n');
52         if (items.length == 0) { return; }
53         */
54
55         // Dump items
56
57         /*
58         var dump_copies = map_list(
59                 items,
60                 function (obj) {
61                         var cnp = obj.getAttribute('cn_pos');
62                         var cpp = obj.getAttribute('cp_pos');
63                         return cn_list[cnp].copies()[cpp];
64                 }
65         );
66         */
67
68         var dump_copies = map_flat_list(
69                 cn_list,
70                 function (cn) {
71                         return cn.copies();
72                 }
73         );
74
75         for (var i in dump_copies) {
76                 mw.sdump('D_CAT','\n\n\n,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_\n\n\n');
77                 mw.sdump('D_CAT', js2JSON(dump_copies[i]) );
78                 mw.sdump('D_CAT','\n\n\n,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_\n\n\n');
79         }
80
81         // Transfer values from first item to XUL
82
83         var cp_pos = items[0].getAttribute('cp_pos');
84         var cn_pos = items[0].getAttribute('cn_pos');
85         var cp_list = cn_list[cn_pos].copies();
86         var copy = cp_list[cp_pos];
87         if (copy.circ_lib()) document.getElementById('circulating-library-menu').value =
88                 copy.circ_lib().id();
89         if (copy.location()) document.getElementById('shelving-location-menu').value = 
90                 copy.location().id();
91         if (copy.status()) document.getElementById('copy-status-menu').value =
92                 copy.status().id();
93         alert('inside copy.js: transferring copy.loan_duration() to xul loan-duration-menu.\ncopy.loan_duration() = ' + copy.loan_duration() + '\ndocument.getElementById("loan-duration-menu").value = ' + document.getElementById('loan-duration-menu').value + '\n');
94         if (copy.loan_duration()) document.getElementById('loan-duration-menu').value =
95                 copy.loan_duration();
96         if (copy.fine_level()) document.getElementById('fine-level-menu').value =
97                 copy.fine_level();
98         if (copy.circulate()) document.getElementById('circulate_menu').value =
99                 copy.circulate();
100         if (copy.deposit()) document.getElementById('deposit_menu').value =
101                 copy.deposit();
102         if (copy.deposit_amount()) document.getElementById('deposit_amount').value =
103                 copy.deposit_amount();
104         if (copy.price()) document.getElementById('price').value =
105                 copy.price();
106         if (copy.ref()) document.getElementById('reference_menu').value =
107                 copy.ref();
108         if (copy.opac_visible()) document.getElementById('opac_visible_menu').value =
109                 copy.opac_visible();
110
111         for (var i in copy.stat_cat_entries()) {
112                 var entry = copy.stat_cat_entries()[i];
113                 var menuitem = document.getElementById('menuitem_stat_cat_entry_' + entry.id());
114                 if (menuitem) {
115                         menuitem.parentNode.parentNode.selectedItem = menuitem;
116                 }
117         }
118         mw.sdump('D_CAT','select fired\n');
119 }
120
121
122 function save_attributes() {
123         real_parentWindow.cn_list = cn_list;
124         real_parentWindow.document.getElementById('volume_add').canAdvance = true;
125         //window.close();
126 }
127
128 function apply_attributes() {
129         var circ_lib = document.getElementById('circulating-library-menu').value;
130         var shelving_loc = document.getElementById('shelving-location-menu').value;
131         var copy_status = document.getElementById('copy-status-menu').value;
132         var loan_duration = document.getElementById('loan-duration-menu').value;
133         var fine_level = document.getElementById('fine-level-menu').value;
134         var circulate = document.getElementById('circulate_menu').value;
135         var deposit = document.getElementById('deposit_menu').value;
136         var deposit_amount = document.getElementById('deposit_amount').value;
137         var price = document.getElementById('price').value;
138         var ref = document.getElementById('reference_menu').value;
139         var opac = document.getElementById('opac_visible_menu').value;
140         /*
141         var listbox = document.getElementById('ephemeral_listbox');
142         var items = listbox.selectedItems;
143         mw.sdump('D_CAT','selectedItems.length = ' + items.length + '\n');
144         */
145         for (var i = 0; i < cn_list.length; i++) {
146                 for (var j = 0; j < cn_list[i].copies().length; j++) {
147                         /*
148                         var listitem = items[i];
149                         var cn_pos = listitem.getAttribute('cn_pos');
150                         var cp_pos = listitem.getAttribute('cp_pos');
151                         var copy_node = cn_list[cn_pos].copies()[cp_pos];
152                         */
153                         var copy_node = cn_list[i].copies()[j];
154                         copy_node.circ_lib(     mw.G.org_tree_hash[ circ_lib ]);
155                         copy_node.location(     mw.G.acpl_hash[ shelving_loc ]);
156                         copy_node.status(       mw.G.ccs_hash[ copy_status ]);
157                         alert('inside copy.js:  applying loan-duration-menu.value (' + loan_duration + ') to copy ' + copy_node.barcode() + '\n');
158                         copy_node.loan_duration(loan_duration);
159                         copy_node.fine_level(fine_level);
160                         copy_node.circulate(circulate);
161                         copy_node.deposit(deposit);
162                         copy_node.deposit_amount(deposit_amount);
163                         copy_node.price(price);
164                         copy_node.ref(ref);
165                         copy_node.opac_visible(opac);
166                         copy_node.ischanged(1);
167                 }
168         }
169
170         mw.sdump('D_CAT','changed cn_list: ' + js2JSON(cn_list) + '\n');
171 }
172
173 function apply_attribute(ev) {
174         mw.sdump('D_CAT','Entering apply_attribute with element id = ');
175         var popup_id;
176         if (ev.target.tagName == 'menuitem') {
177                 popup_id = ev.target.parentNode.getAttribute('id');
178         } else {
179                 popup_id = ev.target.getAttribute('id');
180         }
181         mw.sdump('D_CAT',popup_id + '\n');
182         mw.sdump('D_CAT','ev.target = ' + ev.target + '  .tagName = ' + ev.target.tagName + '\n');
183
184         var circ_lib = document.getElementById('circulating-library-menu').value;
185         var shelving_loc = document.getElementById('shelving-location-menu').value;
186         var copy_status = document.getElementById('copy-status-menu').value;
187         var loan_duration = document.getElementById('loan-duration-menu').value;
188         var fine_level = document.getElementById('fine-level-menu').value;
189         var circulate = document.getElementById('circulate_menu').value;
190         var deposit = document.getElementById('deposit_menu').value;
191         var deposit_amount = document.getElementById('deposit_amount').value;
192         var price = document.getElementById('price').value;
193         var ref = document.getElementById('reference_menu').value;
194         var opac = document.getElementById('opac_visible_menu').value;
195         /*
196         var listbox = document.getElementById('ephemeral_listbox');
197         var items = listbox.selectedItems;
198
199         mw.sdump('D_CAT','selectedItems.length = ' + items.length + '\n');
200         */
201         mw.sdump('D_CAT','before  cn_list: ' + js2JSON(cn_list) + '\n');
202         for (var i = 0; i < cn_list.length; i++) {
203         for (var j = 0; j < cn_list[i].copies().length; j++) {
204                 /*
205                 var listitem = items[i];
206                 var cn_pos = listitem.getAttribute('cn_pos');
207                 var cp_pos = listitem.getAttribute('cp_pos');
208                 var copy_node = cn_list[cn_pos].copies()[cp_pos];
209                 */
210                 var copy_node = cn_list[i].copies()[j];
211
212                 mw.sdump('D_CAT','\n\n\n\n+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+\n\n\n\n');
213                 mw.sdump('D_CAT','Setting copy ' + copy_node.id() + '...\n');
214                 switch(popup_id) {
215                         case 'circulating-library-popup':
216                                 mw.sdump('D_CAT','\tbefore circ_lib = ' + js2JSON(copy_node.circ_lib()) + '\n');
217                                 copy_node.circ_lib(     mw.G.org_tree_hash[ circ_lib ] );
218                                 mw.sdump('D_CAT','\tafter  circ_lib = ' + js2JSON(copy_node.circ_lib()) + '\n');
219                                 break;
220                         case 'shelving-location-popup':
221                                 mw.sdump('D_CAT','\tbefore location = ' + js2JSON(copy_node.location()) + '\n');
222                                 copy_node.location(     mw.G.acpl_hash[ shelving_loc ] );
223                                 mw.sdump('D_CAT','\tafter  location = ' + js2JSON(copy_node.location()) + '\n');
224                                 break;
225                         case 'copy-status-popup':
226                                 mw.sdump('D_CAT','\tbefore status = ' + js2JSON(copy_node.status()) + '\n');
227                                 copy_node.status(       mw.G.ccs_hash[ copy_status ]);
228                                 mw.sdump('D_CAT','\tafter  status = ' + js2JSON(copy_node.status()) + '\n');
229                                 break;
230                         case 'loan-duration-popup':
231                                 alert('inside copy.js: apply_attibute() : setting copy.loan_duration (currently ' + copy_node.loan_duration() + ') to ' + loan_duration + '\n');
232                                 mw.sdump('D_CAT','\tbefore loan_duration = ' + js2JSON(copy_node.loan_duration()) + '\n');
233                                 copy_node.loan_duration(loan_duration);
234                                 mw.sdump('D_CAT','\tafter  loan_duration = ' + js2JSON(copy_node.loan_duration()) + '\n');
235                                 break;
236                         case 'fine-level-popup':
237                                 mw.sdump('D_CAT','\tbefore fine_level = ' + js2JSON(copy_node.fine_level()) + '\n');
238                                 copy_node.fine_level(fine_level);
239                                 mw.sdump('D_CAT','\tafter  fine_level = ' + js2JSON(copy_node.fine_level()) + '\n');
240                                 break;
241                         case 'circulate_popup':
242                                 mw.sdump('D_CAT','\tbefore circulate = ' + js2JSON(copy_node.circulate()) + '\n');
243                                 copy_node.circulate(circulate);
244                                 mw.sdump('D_CAT','\tafter  circulate = ' + js2JSON(copy_node.circulate()) + '\n');
245                                 break;
246                         case 'deposit_popup':
247                                 mw.sdump('D_CAT','\tbefore deposit = ' + js2JSON(copy_node.deposit()) + '\n');
248                                 copy_node.deposit(deposit);
249                                 mw.sdump('D_CAT','\tafter  deposit = ' + js2JSON(copy_node.deposit()) + '\n');
250                                 break;
251                         case 'deposit_amount':
252                                 mw.sdump('D_CAT','\tbefore deposit_amount = ' + js2JSON(copy_node.deposit_amount()) + '\n');
253                                 copy_node.deposit_amount(deposit_amount);
254                                 mw.sdump('D_CAT','\tafter  deposit_amount = ' + js2JSON(copy_node.deposit_amount()) + '\n');
255                                 break;
256                         case 'price':
257                                 mw.sdump('D_CAT','\tbefore price = ' + js2JSON(copy_node.price()) + '\n');
258                                 copy_node.price(price);
259                                 mw.sdump('D_CAT','\tafter  price = ' + js2JSON(copy_node.price()) + '\n');
260                                 break;
261                         case 'reference_popup':
262                                 mw.sdump('D_CAT','\tbefore ref = ' + js2JSON(copy_node.ref()) + '\n');
263                                 copy_node.ref(ref);
264                                 mw.sdump('D_CAT','\tafter  ref = ' + js2JSON(copy_node.ref()) + '\n');
265                                 break;
266                         case 'opac_visible_popup':
267                                 mw.sdump('D_CAT','\tbefore opac_visible = ' + js2JSON(copy_node.opac_visible()) + '\n');
268                                 copy_node.opac_visible(opac);
269                                 mw.sdump('D_CAT','\tafter  opac_visible = ' + js2JSON(copy_node.opac_visible()) + '\n');
270                                 break;
271                         default:
272                                 mw.sdump('D_CAT','\t++++++++ Unhandled.. this should be a stat_cat: ' + popup_id + ' / ' + ev.target.tagName + '\n');
273                                 update_stat_cat_entry(copy_node,ev.target);
274                                 break;
275                 }
276                 mw.sdump('D_CAT','\n\n\n\n+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+\n\n\n\n');
277                 copy_node.ischanged(1);
278         }
279         }
280
281         mw.sdump('D_CAT','changed cn_list: ' + js2JSON(cn_list) + '\n');
282 }
283
284 function update_stat_cat_entry(copy,menuitem) {
285         mw.sdump('D_CAT','\tupdate_stat_cat_entry: value = ' + menuitem.value + '\n');
286         var entries = copy.stat_cat_entries();
287         //mw.sdump('D_CAT','\n\n\ncopy = ' + js2JSON(copy) + '\n');
288         //mw.sdump('D_CAT','\n\n\ncopy.stat_cat_entries() = ' + js2JSON(copy.stat_cat_entries()) + '\n');
289         var stat_cat_id = menuitem.getAttribute('stat_cat');
290         var entry = find_attr_object_in_list(entries,'stat_cat',stat_cat_id);
291         if (entry) {
292                 mw.sdump('D_CAT','\tReplacing old stat_cat_entry with ');
293
294                 entries = filter_list(
295                         entries,
296                         function (obj) {
297                                 return (obj.id() != entry.id());
298                         }
299                 );
300
301         } else {
302                 mw.sdump('D_CAT','\tAppending new stat_cat_entry = ');
303         }
304         mw.sdump('D_CAT',js2JSON(local_stat_cat_entries[menuitem.value]) + '\n');
305         entries.push( local_stat_cat_entries[ menuitem.value ] );
306         copy.stat_cat_entries( entries );
307 }
308
309 function add_to_listbox(cn_pos,cp_pos,name,callnumber,barcode) {
310         mw.sdump('D_CAT','xul: name = ' + name + ' cn = ' + callnumber + ' bc = ' + barcode + '\n');
311         var listbox = document.getElementById('ephemeral_listbox');
312         var listitem = document.createElement('listitem');
313                 listitem.setAttribute('cn_pos',cn_pos);
314                 listitem.setAttribute('cp_pos',cp_pos);
315         listbox.appendChild(listitem);
316         var listcell1 = document.createElement('listcell');
317                 listcell1.setAttribute('label',name);
318         listitem.appendChild(listcell1);
319         var listcell2 = document.createElement('listcell');
320                 listcell2.setAttribute('label',callnumber);
321         listitem.appendChild(listcell2);
322         var listcell3 = document.createElement('listcell');
323                 listcell3.setAttribute('label',barcode);
324         listitem.appendChild(listcell3);
325 }
326