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