]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/conify/global/acq/provider.js
ACQ provider admin page display improvements
[working/Evergreen.git] / Open-ILS / web / js / ui / default / conify / global / acq / provider.js
1 dojo.require('dijit.layout.TabContainer');
2 dojo.require('openils.widget.AutoGrid');
3 dojo.require('dijit.form.FilteringSelect');
4 dojo.require('openils.PermaCrud');
5 dojo.require('openils.MarcXPathParser');
6 dojo.require('openils.widget.OrgUnitFilteringSelect');
7
8
9 var provider;
10 var xpathParser = new openils.MarcXPathParser();
11 var subFields= [];
12 var adminPermOrgs = [];
13 var viewPermOrgs = [];
14 var user;
15 var viewPerms = [
16     'ADMIN_PROVIDER', 
17     'MANAGE_PROVIDER', 
18     'VIEW_PROVIDER'
19 ]; 
20     
21
22 function draw() {
23
24     user = new openils.User();
25
26     if(providerId) {
27         drawOneProvider();
28         return;
29     }
30
31     openils.Util.hide('provider-details-div');
32
33     // after a provider is created, load the provider page
34     pListGrid.onPostCreate = function(fmObject) {
35         location.href = location.href + '/' + fmObject.id();
36     }
37
38     user.buildPermOrgSelector(
39         viewPerms,
40         contextOrgSelector, null,
41
42         function() {
43             if (!contextOrgSelector.attr('value')) return
44
45             dojo.connect(contextOrgSelector, 'onChange', drawProviderGrid);
46
47             // fetch the admin org units
48             user.getPermOrgList(
49                 'ADMIN_PROVIDER',
50
51                 function(list) {
52                     adminPermOrgs = list;
53
54                     // fetch the view org units
55                     user.getPermOrgList(
56                         viewPerms,
57                         function(list2) {
58                             viewPermOrgs = list2
59                             drawProviderGrid();
60                         },
61                         true, true
62                     );
63                 },
64                 true, true
65             );
66         }
67     );
68 }
69
70
71 function drawOneProvider() {
72     openils.Util.hide('provider-list-div');
73    
74     var pcrud = new openils.PermaCrud();
75     pcrud.retrieve('acqpro', providerId, {
76         oncomplete : function(r) {
77             provider = openils.Util.readResponse(r);
78             console.log('provider is' + js2JSON(provider));
79             var pane = new openils.widget.EditPane({fmObject:provider, paneStackCount:2}, dojo.byId('provider-summary-pane'));
80             pane.startup();
81             console.log("pane started");
82             dojo.connect(providerTabs, 'selectChild', drawProviderSummary);                        
83         }
84     });
85   
86     drawProviderSummary();
87 }
88
89
90 function drawProviderGrid() {
91     pListGrid.resetStore();
92
93     // view providers for here plus children
94     var list = fieldmapper.aou.descendantNodeList(
95         contextOrgSelector.attr('value'), true, true);
96
97     pListGrid.loadAll(
98         {order_by : [ // sort providers I can edit to the front
99             {   'class' : 'acqpro',
100                 field : 'owner',
101                 compare : {'in' : adminPermOrgs},
102                 direction : 'desc'
103             },
104             {   'class' : 'acqpro',
105                 field : 'name'
106             }
107         ]}, 
108         {'owner' : list}
109     );
110 }
111
112 function drawProviderSummary(child) {
113     var loadedTabs = {'provider-address' : true};
114     if(child){   
115         if(loadedTabs[child.id]) return;
116         loadedTabs[child.id] = true;
117         switch(child.id) {
118         case 'tab-pro-contact': 
119             pcListGrid.overrideEditWidgets.provider = new
120                 dijit.form.TextBox({disabled: 'true', value: providerId});
121             pcListGrid.resetStore();
122             pcListGrid.loadAll({
123                 oncomplete:function(r) {
124                     var count = 0; 
125                     pcListGrid.store.fetch( {
126                         onComplete:function(list) { 
127                             count =  list.length
128                             if (count>=1) {
129                                 var contactIds = [];                                                    
130                                 dojo.forEach(list, function(item) {
131                                         contactIds.push(pcListGrid.store.getValue(item, 'id')); 
132                                 });
133                             
134                                 pcaListGrid.overrideEditWidgets.contact = new
135                                 dijit.form.FilteringSelect({store: pcListGrid.store});
136                                 pcaListGrid.resetStore();
137                                 pcaListGrid.loadAll({order_by:{acqpca : 'contact'}}, {contact: contactIds});
138
139                             } else { 
140                                 return;
141                             }            
142                         }
143                     });
144                 }
145             }, {provider : providerId});
146             
147             break;
148
149         case 'tab-attr': 
150             padListGrid.overrideEditWidgets.provider = new
151                 dijit.form.TextBox({disabled: 'true', value: providerId});
152             padListGrid.resetStore();
153             padListGrid.loadAll({order_by:{acqlipad : 'code'}}, {provider : providerId});
154             break;
155
156         case 'tab-hold': 
157             phsListGrid.overrideEditWidgets.provider = new
158                 dijit.form.TextBox({disabled: 'true', value: providerId});
159             phsListGrid.resetStore();
160             phsListGrid.loadAll({order_by:{acqphsm : 'name'}}, {provider : providerId});
161             break;
162
163         case "tab-invoice":
164             invListGrid.resetStore();
165             invListGrid.loadAll(
166                 {"order_by": {"acqinv": "recv_date DESC"}},
167                 {"provider": providerId}
168             );
169             break;
170
171         default:
172             paListGrid.overrideEditWidgets.provider = new
173                 dijit.form.TextBox({disabled: 'true', value: providerId});
174             paListGrid.resetStore();
175             paListGrid.loadAll({order_by:{acqpa:'provider'}}, {provider: providerId}); 
176         }
177         
178     } else {
179         paListGrid.overrideEditWidgets.provider = new
180             dijit.form.TextBox({disabled: 'true', value: providerId});
181         paListGrid.resetStore();
182         paListGrid.loadAll({order_by:{acqpa:'provider'}}, {provider: providerId}); 
183     }
184 }
185
186
187 function getParsedTag(rowIndex, item) {
188     return item && xpathParser.parse(padListGrid.store.getValue(item, 'xpath')).tags;
189 }
190
191
192 function getParsedSubf(rowIndex, item) {
193     if(item) {
194         var subfields = xpathParser.parse(padListGrid.store.getValue(item, 'xpath')).subfields;
195         return subfields.join(',');
196     }
197     return'';
198 }
199
200
201 openils.Util.addOnLoad(draw);