From f43428cb897159ce3aee60919d679721d1dabca6 Mon Sep 17 00:00:00 2001 From: djfiander Date: Wed, 11 Jun 2008 01:46:24 +0000 Subject: [PATCH] Draft code for approving lineitems (untested because of proxy bug), Disable editing lineitem details when lineitem as been approved. TODO: disable creating and deleting lineitem details when lineitem has been approved git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9810 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/js/dojo/openils/acq/Lineitems.js | 7 +++- .../media/ui_js/oils/default/common/jubgrid.js | 41 ++++++++++++++++++++-- .../templates/oils/default/common/jubgrid.html | 25 +++++++++++-- 3 files changed, 66 insertions(+), 7 deletions(-) diff --git a/Open-ILS/web/js/dojo/openils/acq/Lineitems.js b/Open-ILS/web/js/dojo/openils/acq/Lineitems.js index 00aeec3f65..7d377e531e 100644 --- a/Open-ILS/web/js/dojo/openils/acq/Lineitems.js +++ b/Open-ILS/web/js/dojo/openils/acq/Lineitems.js @@ -52,7 +52,12 @@ dojo.declare('openils.acq.Lineitems', null, { } } ); - } + }, + + setState: function(newState, oncomplete) { + this.lineitem.state(newState); + this.update(oncomplete); + }, }); openils.acq.Lineitems.ModelCache = {}; 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 1fb7919687..82ebb49c48 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 @@ -70,18 +70,53 @@ var JUBGrid = { return fieldmapper.aou.findOrgUnit(data.owning_lib).shortname(); }, populate : function(gridWidget, model, lineitems) { - JUBGrid.lineitems = lineitems; + for (var i in lineitems) { + JUBGrid.lineitems[lineitems[i].id()] = lineitems[i]; + } JUBGrid.jubGrid = gridWidget; JUBGrid.jubGrid.setModel(model); dojo.connect(gridWidget, "onRowClick", function(evt) { - JUBGrid.jubDetailGrid.lineitemID = model.getRow(evt.rowIndex).id; + var jub = model.getRow(evt.rowIndex); + var grid; + + JUBGrid.jubDetailGrid.lineitemID = jub.id; + + if (jub.state == "approved") { + grid = JUBGrid.jubDetailGridLayoutReadOnly; + } else { + grid = JUBGrid.jubDetailGridLayout; + } openils.acq.Lineitems.loadGrid( JUBGrid.jubDetailGrid, - JUBGrid.jubGrid.model.getRow(evt.rowIndex).id, JUBGrid.jubDetailGridLayout); + JUBGrid.jubGrid.model.getRow(evt.rowIndex).id, grid); }); gridWidget.update(); }, + + approveJUB: function(evt) { + var list = []; + var selected = JUBGrid.jubGrid.selection.getSelected(); + + for (var idx = 0; idx < selected.length; idx++) { + var rowIdx = selected[idx]; + var jub = JUBGrid.jubGrid.model.getRow(rowIdx); + var li = new openils.acq.Lineitems({lineitem:JUBGrid.getLi(jub.id)}); + var approveStore = function() { + var approveACQLI = function(jub, rq) { + JUBGrid.jubGrid.model.store.setValue(jub, + "state", "approved"); + }; + JUBGrid.jubGrid.model.store.fetch({query:{id:jub.id}, + onItem: approveACQLI}); + }; + + li.setState("approved", approveStore); + } + + JUBGrid.jubGrid.update(); + }, + deleteLID: function(evt) { var list =[]; var selected = JUBGrid.jubDetailGrid.selection.getSelected(); 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 57c71341bd..0142b8a9c3 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 @@ -70,15 +70,34 @@ pointing to the JUB model (and store) that you have created. }, ]] }]; + + JUBGrid.jubDetailGridLayoutReadOnly = [{ + cells: [[ + {name:"ID", field:"id"}, + {name:"Fund", field:"fund", + get:JUBGrid.getLIDFundName, + }, + {name:"Branch", field:"owning_lib", + get:JUBGrid.getLIDLibName, + }, + ]] + }];
+
+ +
+ dojoType='dojox.Grid' id="${domprefix + '-JUB-grid'}"> +
-
${_('New Copy')} @@ -117,7 +136,7 @@ pointing to the JUB model (and store) that you have created.
-
-- 2.11.0