}
return '';
},
+ onJUBSet: function (griditem, attr, oldVal,newVal) {
+ var item;
+ var updateDone = function(r) {
+ var stat = r.recv().content();
+ var evt = openils.Event.parse(stat);
+
+ if (evt) {
+ alert("Error: "+evt.desc);
+ console.dir(evt);
+ }
+ };
+
+ if (oldVal == newVal) {
+ return;
+ }
+
+ item = this._data[griditem.id];
+ if (attr = "provider") {
+ item.provider(newVal);
+ } else {
+ alert("Unexpected attr in Picklist.onSet: '"+attr+"'");
+ return;
+ }
+
+ fieldmapper.standardRequest(
+ ["open-ils.acq", "open-ils.acq.lineitem.update"],
+ {params: [openils.User.authtoken, item],
+ oncomplete: updateDone
+ });
+ },
});
/** Creates a new picklist. fields.name is required */
);
}
+openils.acq.Provider.storeCache = [];
+
+openils.acq.Provider.buildPermProviderSelector = function(perm, selector) {
+ dojo.require('dojo.data.ItemFileReadStore');
+
+ function hookupStore(store) {
+ selector.store = store;
+ selector.startup();
+ }
+
+ function buildPicker(r) {
+ var msg;
+ var providerList = [];
+ while (msg = r.recv()) {
+ var provider = msg.content();
+ providerList.push(provider);
+ }
+
+ var store = new dojo.data.ItemFileReadStore({data:acqpro.toStoreData(providerList)});
+
+ hookupStore(store);
+ openils.acq.Provider.storeCache[perm] = store;
+ }
+
+ if (openils.acq.Provider.storeCache[perm]) {
+ hookupStore(openils.acq.Provider.storeCache[perm]);
+ } else {
+ fieldmapper.standardRequest(
+ ['open-ils.acq', 'open-ils.acq.provider.org.retrieve'],
+ { params: [openils.User.authtoken, null,
+ {flesh_summary:1, limit_perm:perm}],
+ oncomplete: buildPicker,
+ async: true
+ }
+ )
+ }
+}
}
dojo.require('dijit.form.FilteringSelect');
dojo.require("openils.widget.FundSelector");
+dojo.require("openils.widget.ProviderSelector");
dojo.require("openils.widget.OrgUnitFilteringSelect");
dojo.require("openils.acq.Fund");
},
});
+dojo.declare('openils.editors.ProviderSelectEditor', dojox.grid.editors.Dijit, {
+ editorClass: "openils.widget.ProviderSelector",
+ createEditor: function(inNode, inDatum, inRowIndex) {
+ console.log("openils.widget.ProviderSelectEditor");
+ var editor = new this.editorClass(this.getEditorProps(inDatum), inNode);
+ openils.acq.Provider.buildPermProviderSelector(this.cell.perm || this.perm,
+ editor);
+ return editor;
+ },
+});
+
dojo.declare('openils.editors.OrgUnitSelectEditor', dojox.grid.editors.Dijit, {
editorClass: "openils.widget.OrgUnitFilteringSelect",
createEditor: function(inNode, inDatum, inRowIndex) {
--- /dev/null
+if(!dojo._hasResource["openils.widget.ProviderSelector"]){
+ dojo._hasResource["openils.widget.ProviderSelector"] = true;
+ dojo.provide("openils.widget.ProviderSelector");
+
+ dojo.require('openils.acq.Provider');
+ dojo.require('fieldmapper.Fieldmapper');
+ dojo.require('fieldmapper.dojoData');
+
+ /**
+ * This widget provides a specific selector for selecting
+ * a provider.
+ */
+
+ dojo.declare(
+ "openils.widget.ProviderSelector", [dijit.form.FilteringSelect],
+ {
+ });
+}
dojo.byId("oils-acq-picklist-attr-cdate").innerHTML = plist.create_time();
dojo.byId("oils-acq-picklist-attr-edate").innerHTML = plist.edit_time();
dojo.byId("oils-acq-picklist-attr-owner").innerHTML = plist.owner();
- JUBGrid.populate(pickListGrid, model, plist._items);
+ JUBGrid.populate(pickListGrid,
+ model,
+ plist._items);
+ dojo.connect(model.store,
+ "onSet",
+ function(griditem,
+ attr,
+ oldVal,
+ newVal) {
+ plist.onJUBSet(griditem,
+ attr,
+ oldVal,
+ newVal);
+ });
});
}
dojo.addOnLoad(loadPL);
{name: '${_("ISBN")}', get:JUBGrid.getJUBIsbn},
{name: '${_("Pubdate")}', get:JUBGrid.getJUBPubdate},
{name: '${_("Price")}', get:JUBGrid.getJUBPrice},
- {name: '${_("Vendor")}', get:JUBGrid.getProvider},
+ {name: '${_("Vendor")}',
+ field: 'provider', width:'auto', get:JUBGrid.getProvider,
+ editor:openils.editors.ProviderSelectEditor,
+ },
{name: '${_("No. Copies")}', field: 'item_count'},
{name: '${_("State")}', field: 'state'},
{name: '${_("PO")}', get:JUBGrid.getPO}
editor: openils.editors.OrgUnitSelectEditor
},
{name:"Barcode", field:"barcode", width:'auto',
- editor:dojox.grid.editors.Dijit,
- editorClass: "dijit.form.TextBox"
+ editor:dojox.grid.editors.TextBox,
},
{name:"Call Number", field:"cn_label", width:'auto',
editor:dojox.grid.editors.Dijit,