1 //dojo.require('dojox.grid.DataGrid');
2 dojo.require('openils.widget.AutoGrid');
3 dojo.require('dojo.data.ItemFileWriteStore');
4 dojo.require('dijit.Dialog');
5 dojo.require('dijit.form.Button');
6 dojo.require('dijit.form.TextBox');
7 dojo.require('dijit.form.FilteringSelect');
8 dojo.require('dijit.form.Button');
9 dojo.require('dojox.grid.cells.dijit');
10 dojo.require('openils.acq.Picklist');
11 dojo.require('openils.Util');
12 dojo.require('openils.widget.ProgressDialog');
18 dojo.connect(plMergeDialog, 'onOpen', function(){loadLeadPlSelector();});
19 plListGrid.dataLoader = gridDataLoader;
23 function gridDataLoader() {
25 var method = 'open-ils.acq.picklist.user.retrieve';
27 method = method.replace(/user/, 'user.all');
29 plListGrid.showLoadProgressIndicator();
31 fieldmapper.standardRequest(
32 ['open-ils.acq', method],
35 openils.User.authtoken,
37 flesh_lineitem_count:1,
39 offset : plListGrid.displayOffset,
40 limit : plListGrid.displayLimit,
43 onresponse : function(r) {
44 var pl = openils.Util.readResponse(r);
46 plCache[pl.id()] = pl;
47 plListGrid.store.newItem(acqpl.toStoreItem(pl));
50 oncomplete : function() {
51 plListGrid.hideLoadProgressIndicator();
56 function getOwnerName(rowIndex, item) {
58 var id= this.grid.store.getValue(item, 'id');
60 return pl.owner().usrname();
63 function createPL(fields) {
64 if(fields.name == '') return;
66 openils.acq.Picklist.create(fields,
69 fieldmapper.standardRequest(
71 ['open-ils.acq', 'open-ils.acq.picklist.retrieve.authoritative'],
73 params: [openils.User.authtoken, plId,
74 {flesh_lineitem_count:1, flesh_owner:1}],
76 oncomplete: function(r) {
77 if(pl = openils.Util.readResponse(r)) {
78 plCache[pl.id()] = pl;
79 plListGrid.store.newItem(acqpl.toStoreData([pl]).items[0]);
88 function getDateTimeField(rowIndex, item) {
90 var data = this.grid.store.getValue(item, this.field);
91 var date = dojo.date.stamp.fromISOString(data);
92 return dojo.date.locale.format(date, {formatLength:'short'});
94 function deleteFromGrid() {
95 progressDialog.show(true);
98 plListGrid.getSelectedItems(),
100 list.push(plListGrid.store.getValue(item, 'id'));
101 plListGrid.store.deleteItem(item);
104 openils.acq.Picklist.deleteList(list, function(){progressDialog.hide();});
107 function cloneSelectedPl(fields) {
109 var item = plListGrid.getSelectedItems()[0];
112 var plId = plListGrid.store.getValue(item, 'id');
113 var entryCount = Number(plListGrid.store.getValue(item, 'entry_count'));
115 progressDialog.show();
116 progressDialog.update({maximum:entryCount, progress:0});
118 fieldmapper.standardRequest(
119 ['open-ils.acq', 'open-ils.acq.picklist.clone'],
121 params: [openils.User.authtoken, plId, fields.name],
123 onresponse : function(r) {
124 var resp = openils.Util.readResponse(r);
126 progressDialog.update({progress:resp.li});
129 progressDialog.hide();
130 var pl = resp.picklist;
131 plCache[pl.id()] = pl;
132 pl.owner(openils.User.user);
133 pl.entry_count(entryCount);
134 plListGrid.store.newItem(fieldmapper.acqpl.toStoreItem(pl));
141 function loadLeadPlSelector() {
142 var store = new dojo.data.ItemFileWriteStore({data:acqpl.initStoreData()});
144 plListGrid.getSelectedItems(),
146 var pl = plCache[plListGrid.store.getValue(item, 'id')];
147 store.newItem(fieldmapper.acqpl.toStoreItem(pl));
150 plMergeLeadSelector.store = store;
151 plMergeLeadSelector.startup();
154 function mergeSelectedPl(fields) {
155 if(!fields.lead) return;
159 var leadPl = plCache[fields.lead];
163 plListGrid.getSelectedItems(),
165 var id = plListGrid.store.getValue(item, 'id');
166 if(id == fields.lead) {
170 totalLi += new Number(plListGrid.store.getValue(item, 'entry_count'));
175 progressDialog.show();
176 progressDialog.update({maximum:totalLi, progress:0});
178 fieldmapper.standardRequest(
179 ['open-ils.acq', 'open-ils.acq.picklist.merge'],
181 params: [openils.User.authtoken, fields.lead, ids],
182 onresponse : function(r) {
183 var resp = openils.Util.readResponse(r);
185 progressDialog.update({progress:resp.li});
188 progressDialog.hide();
189 leadPl.entry_count( leadPl.entry_count() + totalLi );
190 plListGrid.store.setValue(leadPlItem, 'entry_count', leadPl.entry_count());
192 // remove the deleted lists from the grid
194 plListGrid.getSelectedItems(),
196 var id = plListGrid.store.getValue(item, 'id');
197 if(id != fields.lead)
198 plListGrid.store.deleteItem(item);
207 openils.Util.addOnLoad(loadGrid);