Draft code for approving lineitems (untested because of proxy bug),
authordjfiander <djfiander@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 11 Jun 2008 01:46:24 +0000 (01:46 +0000)
committerdjfiander <djfiander@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 11 Jun 2008 01:46:24 +0000 (01:46 +0000)
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
Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/common/jubgrid.js
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/common/jubgrid.html

index 00aeec3..7d377e5 100644 (file)
@@ -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 = {};
index 1fb7919..82ebb49 100644 (file)
@@ -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();
index 57c7134..0142b8a 100644 (file)
@@ -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,
+           },
+        ]]
+    }];
     </script>
 
     <div id="${domprefix + '-container'}"
         dojoType="dijit.layout.ContentPane" sizeMin="20" sizeShare="50">
+       <div dojoType="dijit.layout.ContentPane"
+            id=${domprefix+"-jub-buttonbar"}>
+           <button dojoType="dijit.form.Button" onclick="JUBGrid.approveJUB">
+               ${_('Approve Selected Titles')}
+           </button>
+       </div>
            <div structure='JUBGrid.jubGridLayout' jsid='${grid_jsid}' 
-            dojoType='dojox.Grid' id="${domprefix + '-JUB-grid'}"> </div>
+                dojoType='dojox.Grid' id="${domprefix + '-JUB-grid'}">
+           </div>
     </div>
     <div dojoType="dijit.layout.ContentPane" sizeMin="20" sizeShare="50">
-       <div jsid="lineItemButtonbar" dojoType="dijit.layout.ContentPane"
+       <div dojoType="dijit.layout.ContentPane"
             id=${domprefix+"-details-buttonbar"}>
            <div dojoType="dijit.form.DropDownButton">
                <span>${_('New Copy')}</span>
@@ -117,7 +136,7 @@ pointing to the JUB model (and store) that you have created.
                    </table>
                </div>
            </div>
-           <button dojotype='dijit.form.Button' onclick='JUBGrid.deleteLID'>
+           <button dojoType='dijit.form.Button' onclick='JUBGrid.deleteLID'>
                ${_('Delete Selected Copy')}
            </button>
        </div>