--- /dev/null
+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.widget.ProgressDialog");
+
+function getPlOwnerName(rowIndex, item) {
+ try {
+ return resultManager.plCache[this.grid.store.getValue(item, "id")].
+ owner().usrname();
+ } catch (E) {
+ return "";
+ }
+}
+
+function formatPlName(pl) {
+ if (pl) {
+ return "<a href='" + oilsBasePath + "/acq/picklist/view/" +
+ pl.id + "'>" + pl.name + "</a>";
+ }
+}
+
+function deleteSelectedPl() {
+ var grid = resultManager.result_types.picklist.interface;
+
+ progressDialog.show(true);
+
+ openils.acq.Picklist.deleteList(
+ grid.getSelectedItems().map(
+ function(item) {
+ var id = grid.store.getValue(item, "id");
+ grid.store.deleteItem(item);
+ return id;
+ }
+ ), function() { progressDialog.hide(); }
+ );
+}
+
+function cloneSelectedPl(fields) {
+ var grid = resultManager.result_types.picklist.interface;
+
+ var item = grid.getSelectedItems()[0];
+ if (!item) return;
+
+ var plId = grid.store.getValue(item, "id");
+ var entryCount = Number(grid.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) {
+ progressDialog.update({"progress": resp.li});
+
+ if (resp.complete) {
+ progressDialog.hide();
+ var pl = resp.picklist;
+ pl.owner(openils.User.user);
+ pl.entry_count(entryCount);
+ resultManager.plCache[pl.id()] = pl;
+ grid.store.newItem(fieldmapper.acqpl.toStoreItem(pl));
+ }
+ }
+ }
+ }
+ );
+}
+
+function loadLeadPlSelector() {
+ var grid = resultManager.result_types.picklist.interface;
+ var data = acqpl.initStoreData();
+ var store = new dojo.data.ItemFileWriteStore({"data": data});
+
+ grid.getSelectedItems().forEach(
+ function(item) {
+ store.newItem(
+ fieldmapper.acqpl.toStoreItem(
+ resultManager.plCache[grid.store.getValue(item, "id")]
+ )
+ );
+ }
+ );
+
+ plMergeLeadSelector.store = store;
+ plMergeLeadSelector.startup();
+}
+
+function mergeSelectedPl(fields) {
+ var grid = resultManager.result_types.picklist.interface;
+
+ if (!fields.lead) return;
+
+ var ids = [];
+ var totalLi = 0;
+ var leadPl = resultManager.plCache[fields.lead];
+ var leadPlItem;
+
+ grid.getSelectedItems().forEach(
+ function(item) {
+ var id = grid.store.getValue(item, "id");
+ if (id == fields.lead) {
+ leadPlItem = item;
+ return;
+ }
+ totalLi += new Number(grid.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) {
+ if (resp.li)
+ progressDialog.update({"progress": resp.li});
+
+ if (resp.complete) {
+ progressDialog.hide();
+ leadPl.entry_count(leadPl.entry_count() + totalLi);
+
+ grid.store.setValue(
+ leadPlItem, "entry_count", leadPl.entry_count()
+ );
+ if (resp.picklist) {
+ grid.store.setValue(
+ leadPlItem, "edit_time",
+ resp.picklist.edit_time()
+ );
+ }
+
+ // remove the deleted lists from the grid
+ grid.getSelectedItems().filter(
+ function(o) {
+ return grid.store.getValue(o, "id") !=
+ fields.lead;
+ }
+ ).forEach(function(o) { grid.store.deleteItem(o); });
+ }
+ }
+ }
+ }
+ );
+}
+
+function createPl(fields) {
+ if (fields.name == '') return;
+
+ var grid = resultManager.result_types.picklist.interface;
+
+ 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) {
+ var pl = openils.Util.readResponse(r);
+ if (pl) {
+ resultManager.plCache[pl.id()] = pl;
+ grid.store.newItem(
+ acqpl.toStoreData([pl]).items[0]
+ );
+ }
+ }
+ }
+ );
+ }
+ );
+}
+