From 605380bd9c74d3a1663b10c96dc0763bf3ae07fa Mon Sep 17 00:00:00 2001 From: djfiander Date: Tue, 27 May 2008 01:41:37 +0000 Subject: [PATCH] Create new acqlids and edit existing ones. todo: update display. git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9709 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/js/dojo/openils/User.js | 48 ++++++++++++++++++++- Open-ILS/web/js/dojo/openils/acq/Lineitems.js | 19 ++++++++ Open-ILS/web/js/dojo/openils/editors.js | 38 ++++++++++++++++ .../web/js/dojo/openils/widget/FundSelector.js | 23 ++-------- .../media/ui_js/oils/default/common/jubgrid.js | 11 ++++- .../templates/oils/default/common/jubgrid.html | 50 +++++++++++++++++++--- 6 files changed, 161 insertions(+), 28 deletions(-) create mode 100644 Open-ILS/web/js/dojo/openils/editors.js diff --git a/Open-ILS/web/js/dojo/openils/User.js b/Open-ILS/web/js/dojo/openils/User.js index 57fdcccd1c..a277cd9120 100644 --- a/Open-ILS/web/js/dojo/openils/User.js +++ b/Open-ILS/web/js/dojo/openils/User.js @@ -43,7 +43,7 @@ if(!dojo._hasResource["openils.User"]) { this.location = kwargs.location; this.authcookie = kwargs.authcookie || openils.User.authcookie; this.orgCache = {perm: null, store: null}; - this.fundStore = null; + this.fundCache = []; if (this.id && this.authtoken) this.user = this.getById( this.id ); else if (this.authtoken) this.getBySession(); @@ -256,7 +256,51 @@ if(!dojo._hasResource["openils.User"]) { } ) } - } + }, + + /** + * Sets the store for an existing openils.widget.FundFilteringSelect + * using the funds where the user has the requested permission. + * @param perm The permission to check + * @param selector The pre-created dijit.form.FilteringSelect object. + */ + buildPermFundSelector : function(perm, selector) { + var _u = this; + + dojo.require('dojo.data.ItemFileReadStore'); + + function hookupStore(store) { + selector.store = store; + selector.startup(); + } + + function buildPicker(r) { + var msg; + var fundList = []; + while (msg = r.recv()) { + var fund = msg.content(); + fundList.push(fund); + } + + var store = new dojo.data.ItemFileReadStore({data:acqf.toStoreData(fundList)}); + + hookupStore(store); + _u.fundCache[perm] = store; + } + + if (this.fundCache[perm]) { + hookupStore(this.fundCache[perm]); + } else { + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.fund.org.retrieve'], + { params: [this.authtoken, null, {flesh_summary:1, limit_perm:perm}], + oncomplete: buildPicker, + async: true + } + ) + } + } + }); diff --git a/Open-ILS/web/js/dojo/openils/acq/Lineitems.js b/Open-ILS/web/js/dojo/openils/acq/Lineitems.js index 62dc8c5602..3c0e5c169e 100644 --- a/Open-ILS/web/js/dojo/openils/acq/Lineitems.js +++ b/Open-ILS/web/js/dojo/openils/acq/Lineitems.js @@ -125,6 +125,25 @@ openils.acq.Lineitems.deleteLID = function(id, onComplete) { }); }; +openils.acq.Lineitems.createLID = function(fields, onCreateComplete) { + var lid = new acqlid() + for (var field in fields) { + lid[field](fields[field]); + } + + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.lineitem_detail.create'], + { async: true, + params: [openils.User.authtoken, lid], + oncomplete: function(r) { + var msg = r.recv(); + if (onCreateComplete) { + onCreateComplete(lid); + } + } + }); +}; + openils.acq.Lineitems.loadGrid = function(domNode, id, layout) { if (!openils.acq.Lineitems.ModelCache[id]) { openils.acq.Lineitems.createStore(id, diff --git a/Open-ILS/web/js/dojo/openils/editors.js b/Open-ILS/web/js/dojo/openils/editors.js new file mode 100644 index 0000000000..981bf7cb46 --- /dev/null +++ b/Open-ILS/web/js/dojo/openils/editors.js @@ -0,0 +1,38 @@ +if(!dojo._hasResource["openils.editors"]){ +dojo._hasResource["openils.editors"] = true; +dojo.provide("openils.editors"); + +dojo.require("dojox.grid._data.dijitEditors"); +dojo.require("dojox.grid._data.editors"); +dojo.require("dijit.form.NumberSpinner"); +dojo.require('dijit.form.FilteringSelect'); + +dojo.declare("openils.editors.NumberSpinner", dojox.grid.editors.Dijit, { + editorClass: "dijit.form.NumberSpinner", + + getvalue: function() { + var e = this.editor; + // make sure to apply the displayed value + e.setDisplayedValue(e.getDisplayedValue()); + return e.getValue(); + }, + + getEditorProps: function(inDatum){ + return dojo.mixin({}, this.cell.editorProps||{}, { + constraints: dojo.mixin({}, this.cell.constraints) || {}, + value: inDatum + }); + }, +}); + +dojo.declare('openils.editors.FundSelectEditor', dojox.grid.editors.Dijit, { + editorClass: "openils.widget.FundSelector", + createEditor: function(inNode, inDatum, inRowIndex) { + var editor = new this.editorClass(this.getEditorProps(inDatum), inNode); + globalUser.buildPermFundSelector(this.cell.perm || this.perm, + editor); + return editor; + }, +}); + +} diff --git a/Open-ILS/web/js/dojo/openils/widget/FundSelector.js b/Open-ILS/web/js/dojo/openils/widget/FundSelector.js index 9ffeea99d7..38442cd494 100644 --- a/Open-ILS/web/js/dojo/openils/widget/FundSelector.js +++ b/Open-ILS/web/js/dojo/openils/widget/FundSelector.js @@ -2,8 +2,6 @@ if(!dojo._hasResource["openils.widget.FundSelector"]){ dojo._hasResource["openils.widget.FundSelector"] = true; dojo.provide("openils.widget.FundSelector"); - dojo.require("dojox.grid.editors"); - dojo.require('openils.acq.Fund'); dojo.require('fieldmapper.Fieldmapper'); dojo.require('fieldmapper.dojoData'); @@ -13,23 +11,8 @@ if(!dojo._hasResource["openils.widget.FundSelector"]){ * a fund. */ - dojo.declare("openils.widget.FundSelector", dojox.grid.editors.Select, { - - constructor: function(inCell) { - this.options = openils.widget.FundSelector.fundNames; - this.values = openils.widget.FundSelector.fundCodes; - } - }); - - openils.widget.FundSelector.fundNames = []; - openils.widget.FundSelector.fundCodes = []; - - dojo.addOnLoad( - function() { - openils.acq.Fund.nameMapping( - function(ids, names) { - openils.widget.FundSelector.fundCodes = ids; - openils.widget.FundSelector.fundNames = names; - }); + dojo.declare( + "openils.widget.FundSelector", [dijit.form.FilteringSelect], + { }); } diff --git a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/common/jubgrid.js b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/common/jubgrid.js index 76f71e5021..8d34c8d335 100644 --- a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/common/jubgrid.js +++ b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/common/jubgrid.js @@ -1,11 +1,20 @@ dojo.require('dojo.data.ItemFileReadStore'); dojo.require('dijit.layout.SplitContainer'); +dojo.require('dijit.Dialog'); +dojo.require('dijit.form.FilteringSelect'); +dojo.require('dijit.form.Button'); dojo.require('dojox.grid.Grid'); + +dojo.require("openils.User"); dojo.require("openils.acq.Fund"); dojo.require("openils.acq.Lineitems"); +dojo.require('openils.acq.Provider'); dojo.require("openils.widget.FundSelector"); +dojo.require('openils.editors'); +dojo.require("openils.widget.OrgUnitFilteringSelect"); dojo.require("fieldmapper.OrgUtils"); -dojo.require('openils.acq.Provider'); + +var globalUser = new openils.User(); /* put all the accessors, etc. into a local object for namespacing */ var JUBGrid = { diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/common/jubgrid.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/common/jubgrid.html index ddc287d24f..151e208e51 100644 --- a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/common/jubgrid.html +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/common/jubgrid.html @@ -62,11 +62,18 @@ pointing to the JUB model (and store) that you have created. {name:"ID", field:"id"}, {name:"Fund", field:"fund", get:JUBGrid.getLIDFundName, - editor: openils.widget.FundSelector, + editor: openils.editors.FundSelectEditor, }, {name:"Location", field:"location", get:JUBGrid.getLIDLibName} ]] }]; + + function createLID(fields) { + fields['lineitem'] = JUBGrid.jubDetailGrid.lineitemID; + openils.acq.Lineitems.createLID(fields, + function (lidId) { + }); + }
- +
+ ${_('New Copy')} +
+ + + + + + + + + + + + + +
+ +
+
+ +
+
+
-- 2.11.0