]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/acq/picklist/upload.js
ACQ+Vandelay open picklist/PO/queue in new tab
[working/Evergreen.git] / Open-ILS / web / js / ui / default / acq / picklist / upload.js
1 dojo.require('dojo.data.ItemFileReadStore');
2 dojo.require('dijit.ProgressBar');
3 dojo.require('dijit.form.CheckBox');
4 dojo.require('dijit.form.TextBox');
5 dojo.require('dijit.form.FilteringSelect');
6 dojo.require('dijit.form.ComboBox');
7 dojo.require('dijit.form.Button');
8 dojo.require("dojo.io.iframe");
9 dojo.require('openils.User');
10 dojo.require('openils.widget.AutoFieldWidget');
11 dojo.require('openils.acq.Picklist');
12 dojo.require('openils.XUL');
13
14 var VANDELAY_URL = '/vandelay-upload';
15 var providerWidget;
16 var orderAgencyWidget;
17 var vlAgent;
18
19 function init() {
20     dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken;
21
22     new openils.widget.AutoFieldWidget({
23         fmClass : 'acqpo',
24         fmField : 'provider',
25         orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
26         parentNode : dojo.byId('acq-pl-upload-provider'),
27     }).build(
28         function(w) { providerWidget = w }
29     );
30
31     new openils.widget.AutoFieldWidget({
32         fmClass : 'acqpo',
33         fmField : 'ordering_agency',
34         orgLimitPerms : ['CREATE_PICKLIST', 'CREATE_PURCHASE_ORDER'],
35         parentNode : dojo.byId('acq-pl-upload-agency'),
36     }).build(
37         function(w) { orderAgencyWidget = w }
38     );
39
40     vlAgent = new VLAgent();
41     vlAgent.init();
42
43     fieldmapper.standardRequest(
44         ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
45         {   async: true,
46             params: [openils.User.authtoken], 
47             oncomplete : function(r) {
48                 var list = openils.Util.readResponse(r);
49                 acqPlUploadPlSelector.store = 
50                     new dojo.data.ItemFileReadStore({data:acqpl.toStoreData(list)});
51             }
52         }
53     );
54 }
55
56 function acqUploadRecords() {
57     openils.Util.show('acq-pl-upload-progress');
58     var picklist = acqPlUploadPlSelector.attr('value');
59     if(picklist) {
60         // ComboBox value is the display string.  find the actual picklist
61         // and create a new one if necessary
62         acqPlUploadPlSelector.store.fetch({
63             query : {name:picklist}, 
64             onComplete : function(items) {
65                 if(items.length == 0) {
66                     // create a new picklist for these items
67                     openils.acq.Picklist.create(
68                         {name:picklist, org_unit: orderAgencyWidget.attr('value')},
69                         function(plId) { acqSendUploadForm({picklist:plId}) }
70                     );
71                 } else {
72                     acqSendUploadForm({picklist:items[0].id[0]});
73                 }
74             }
75         });
76     } else {
77         acqSendUploadForm({picklist:null});
78     }
79 }
80
81 function acqSendUploadForm(args) {
82     dojo.io.iframe.send({
83         url: VANDELAY_URL,
84         method: "post",
85         handleAs: "html",
86         form: dojo.byId('acq-pl-upload-form'),
87         handle: function(data, ioArgs){
88             acqHandlePostUpload(data.documentElement.textContent, args.picklist);
89         }
90     });
91 }
92
93
94 function acqHandlePostUpload(key, plId) {
95
96     var args = {
97         picklist : plId,
98         provider : providerWidget.attr('value'),
99         ordering_agency : orderAgencyWidget.attr('value'),
100         create_po : acqPlUploadCreatePo.attr('value'),
101         activate_po : acqPlUploadActivatePo.attr('value'),
102         vandelay : vlAgent.values()
103     };
104
105     fieldmapper.standardRequest(
106         ['open-ils.acq', 'open-ils.acq.process_upload_records'],
107         {   async: true,
108             params: [openils.User.authtoken, key, args],
109             onresponse : function(r) {
110
111                 vlAgent.handleResponse(
112                     openils.Util.readResponse(r),
113                     function(resp, res) {
114
115                         openils.Util.hide('acq-pl-upload-complete-pl');
116                         openils.Util.hide('acq-pl-upload-complete-po');
117                         openils.Util.hide('acq-pl-upload-complete-q');
118                         openils.Util.hide('acq-pl-upload-progress-bar');
119                         openils.Util.show('acq-pl-upload-complete');
120
121                         function activateLink(link, url, name) {
122                             link = dojo.byId(link);
123                             openils.Util.show(link);
124                             if (name) link.innerHTML = name;
125                             if (typeof xulG == 'undefined') { // browser
126                                 link.setAttribute('href', url); 
127                             } else {
128                                 link.setAttribute('href', 'javascript:;'); // for linky-ness
129                                 link.onclick = function() { openils.XUL.newTabEasy(url) };
130                             }
131                         }
132                             
133                         if(res.picklist_url) {
134                             activateLink('acq-pl-upload-complete-pl', res.picklist_url);
135                         } 
136
137                         if(res.po_url) {
138                             activateLink('acq-pl-upload-complete-po', res.po_url);
139                         }
140
141                         if (res.queue_url) {
142                             activateLink('acq-pl-upload-complete-q', res.queue_url, resp.queue.name());
143                         }
144                     }
145                 );
146             },
147         }
148     );
149 }
150
151
152 openils.Util.addOnLoad(init);
153