--- /dev/null
+//dojo.require('dojox.grid.DataGrid');
+dojo.require('openils.widget.AutoGrid');
+dojo.require('dojo.data.ItemFileWriteStore');
+dojo.require('dijit.Dialog');
+dojo.require('dijit.form.Button');
+dojo.require('dijit.form.TextBox');
+dojo.require('dijit.form.FilteringSelect');
+dojo.require('dijit.form.Button');
+dojo.require('dojox.grid.cells.dijit');
+dojo.require('openils.acq.Picklist');
+dojo.require('openils.Util');
+dojo.require('openils.widget.ProgressDialog');
+
+var listAll = false;
+var plCache = {};
+
+function loadGrid() {
+ dojo.connect(plMergeDialog, 'onOpen', function(){loadLeadPlSelector();});
+ plListGrid.dataLoader = gridDataLoader;
+ gridDataLoader();
+}
+
+function gridDataLoader() {
+
+ var method = 'open-ils.acq.picklist.user.retrieve';
+ if(listAll)
+ method = method.replace(/user/, 'user.all');
+
+ plListGrid.showLoadProgressIndicator();
+
+ fieldmapper.standardRequest(
+ ['open-ils.acq', method],
+ { async: true,
+ params: [
+ openils.User.authtoken,
+ {
+ flesh_lineitem_count:1,
+ flesh_owner:1,
+ offset : plListGrid.displayOffset,
+ limit : plListGrid.displayLimit,
+ }
+ ],
+ onresponse : function(r) {
+ var pl = openils.Util.readResponse(r);
+ if(pl) {
+ plCache[pl.id()] = pl;
+ plListGrid.store.newItem(acqpl.toStoreItem(pl));
+ }
+ },
+ oncomplete : function() {
+ plListGrid.hideLoadProgressIndicator();
+ }
+ }
+ );
+}
+function getOwnerName(rowIndex, item) {
+ if(!item) return '';
+ var id= this.grid.store.getValue(item, 'id');
+ var pl = plCache[id];
+ return pl.owner().usrname();
+}
+
+function createPL(fields) {
+ if(fields.name == '') return;
+
+ openils.acq.Picklist.create(fields,
+
+ function(plId) {
+ fieldmapper.standardRequest(
+
+ ['open-ils.acq', 'open-ils.acq.picklist.retrieve.authoritative'],
+ { async: true,
+ params: [openils.User.authtoken, plId,
+ {flesh_lineitem_count:1, flesh_owner:1}],
+
+ oncomplete: function(r) {
+ if(pl = openils.Util.readResponse(r)) {
+ plCache[pl.id()] = pl;
+ plListGrid.store.newItem(acqpl.toStoreData([pl]).items[0]);
+ }
+ }
+ }
+ );
+ }
+ );
+}
+
+function getDateTimeField(rowIndex, item) {
+ if(!item) return '';
+ var data = this.grid.store.getValue(item, this.field);
+ var date = dojo.date.stamp.fromISOString(data);
+ return dojo.date.locale.format(date, {formatLength:'short'});
+}
+function deleteFromGrid() {
+ progressDialog.show(true);
+ var list = [];
+ dojo.forEach(
+ plListGrid.getSelectedItems(),
+ function(item) {
+ list.push(plListGrid.store.getValue(item, 'id'));
+ plListGrid.store.deleteItem(item);
+ }
+ );
+ openils.acq.Picklist.deleteList(list, function(){progressDialog.hide();});
+}
+
+function cloneSelectedPl(fields) {
+
+ var item = plListGrid.getSelectedItems()[0];
+ if(!item) return;
+
+ var plId = plListGrid.store.getValue(item, 'id');
+ var entryCount = Number(plListGrid.store.getValue(item, 'entry_count'));
+
+ progressDialog.show();
+ progressDialog.update({maximum:entryCount, progress:0});
+
+ fieldmapper.standardRequest(
+ ['open-ils.acq', 'open-ils.acq.picklist.clone'],
+ { async: true,
+ params: [openils.User.authtoken, plId, fields.name],
+
+ onresponse : function(r) {
+ var resp = openils.Util.readResponse(r);
+ if(!resp) return;
+ progressDialog.update({progress:resp.li});
+
+ if(resp.complete) {
+ progressDialog.hide();
+ var pl = resp.picklist;
+ plCache[pl.id()] = pl;
+ pl.owner(openils.User.user);
+ pl.entry_count(entryCount);
+ plListGrid.store.newItem(fieldmapper.acqpl.toStoreItem(pl));
+ }
+ }
+ }
+ );
+}
+
+function loadLeadPlSelector() {
+ var store = new dojo.data.ItemFileWriteStore({data:acqpl.initStoreData()});
+ dojo.forEach(
+ plListGrid.getSelectedItems(),
+ function(item) {
+ var pl = plCache[plListGrid.store.getValue(item, 'id')];
+ store.newItem(fieldmapper.acqpl.toStoreItem(pl));
+ }
+ );
+ plMergeLeadSelector.store = store;
+ plMergeLeadSelector.startup();
+}
+
+function mergeSelectedPl(fields) {
+ if(!fields.lead) return;
+
+ var ids = [];
+ var totalLi = 0;
+ var leadPl = plCache[fields.lead];
+ var leadPlItem;
+
+ dojo.forEach(
+ plListGrid.getSelectedItems(),
+ function(item) {
+ var id = plListGrid.store.getValue(item, 'id');
+ if(id == fields.lead) {
+ leadPlItem = item;
+ return;
+ }
+ totalLi += new Number(plListGrid.store.getValue(item, 'entry_count'));
+ ids.push(id);
+ }
+ );
+
+ progressDialog.show();
+ progressDialog.update({maximum:totalLi, progress:0});
+
+ fieldmapper.standardRequest(
+ ['open-ils.acq', 'open-ils.acq.picklist.merge'],
+ { async: true,
+ params: [openils.User.authtoken, fields.lead, ids],
+ onresponse : function(r) {
+ var resp = openils.Util.readResponse(r);
+ if(!resp) return;
+ progressDialog.update({progress:resp.li});
+
+ if(resp.complete) {
+ progressDialog.hide();
+ leadPl.entry_count( leadPl.entry_count() + totalLi );
+ plListGrid.store.setValue(leadPlItem, 'entry_count', leadPl.entry_count());
+
+ // remove the deleted lists from the grid
+ dojo.forEach(
+ plListGrid.getSelectedItems(),
+ function(item) {
+ var id = plListGrid.store.getValue(item, 'id');
+ if(id != fields.lead)
+ plListGrid.store.deleteItem(item);
+ }
+ );
+ }
+ }
+ }
+ );
+}
+
+openils.Util.addOnLoad(loadGrid);
+
+