by default, load the most recently accessed 'local' purchase orders. made filters...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 21 Apr 2009 20:24:01 +0000 (20:24 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 21 Apr 2009 20:24:01 +0000 (20:24 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@12952 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/css/skin/default/acq.css
Open-ILS/web/js/ui/default/acq/po/search.js
Open-ILS/web/templates/default/acq/po/search.tt2

index e16d4f4..a3a6877 100644 (file)
@@ -7,7 +7,7 @@
 */
 
 .oils-acq-detail-content-pane {height:600px;width:100%}
-.oils-acq-basic-form-table td {padding:4px;}
+.oils-acq-basic-form-div {padding:4px; width:95%;}
 
 /* bib search */
 #oils-acq-search-container { width:100%; }
@@ -49,6 +49,7 @@
 /* list of pos */
 #oils-acq-po-list-table {width: 100%;}
 #oils-acq-po-list-table td {padding: 3px;}
+#oils-acq-po-search-form .dijit {width:130px;}
 
 /* a single po */
 #oils-acq-po-table { width: 100%; }
index 956ffe7..b50ff16 100644 (file)
@@ -2,80 +2,63 @@ dojo.require('dijit.form.Form');
 dojo.require('dijit.form.Button');
 dojo.require('dijit.form.FilteringSelect');
 dojo.require('dijit.form.NumberTextBox');
-dojo.require('dojox.grid.DataGrid');
 dojo.require('dojo.data.ItemFileWriteStore');
-dojo.require('openils.acq.Provider');
-dojo.require('fieldmapper.OrgUtils');
 dojo.require('dojo.date.locale');
 dojo.require('dojo.date.stamp');
 dojo.require('openils.User');
 dojo.require('openils.Util');
-dojo.require('openils.acq.PO');
-dojo.require('openils.widget.OrgUnitFilteringSelect');
+dojo.require('openils.widget.AutoGrid');
+dojo.require('openils.widget.AutoFieldWidget');
+dojo.require('openils.PermaCrud');
 
 
-function getOrgInfo(rowIndex, item) {
-    if(!item) return '';
-    var data = this.grid.store.getValue(item, 'ordering_agency')
-    return fieldmapper.aou.findOrgUnit(data).shortname();
-}
-
-function getProvider(rowIndex, item) {
-    if(!item) return '';
-    var data = this.grid.store.getValue(item, 'provider');
-    return openils.acq.Provider.retrieve(data).code();
-}
-
 function getPOOwner(rowIndex, item) {
     if(!item) return '';
     var data = this.grid.store.getValue(item, 'owner');
     return new openils.User({id:data}).user.usrname();
 }
 
-function getDateTimeField(rowIndex, item) {
-    if(!item) return '';
-    var data = this.grid.store.getValue(item, this.field);
-    var date = dojo.date.stamp.fromISOString(data);
-    return dojo.date.locale.format(date, {formatLength:'medium'});
-}
-
 function doSearch(fields) {
-    if(!isNaN(fields.id)) 
-        fields = {id:fields.id};
-    else
+    
+    if(isNaN(fields.id)) {
         delete fields.id;
+        for(var k in fields) {
+            if(fields[k] == '' || fields[k] == null)
+                delete fields[k];
+        }
+    } else {
+        // ID search trumps other searches
+        fields = {id:fields.id};
+    }
 
-    var store = new dojo.data.ItemFileWriteStore({data:acqpo.initStoreData()});
-    poGrid.setStore(store);
-    poGrid.render();
+    // no search fields
+    var some = false;
+    for(var k in fields) some = true;
+    if(!some) fields.id = {'!=' : null};
 
-    fieldmapper.standardRequest(
-        ['open-ils.acq', 'open-ils.acq.purchase_order.search'],
-        {   async:1,
-            params: [openils.User.authtoken, fields],
-            onresponse : function(r) {
-                if(po = openils.Util.readResponse(r)) {
-                    openils.acq.PO.cache[po.id()] = po;
-                    store.newItem(acqpo.toStoreItem(po));
-                }
-                dojo.style('po-grid', 'visibility', 'visible');
-            } 
-        }
-    );
+    poGrid.resetStore();
+    poGrid.loadAll({order_by:{acqpo : 'edit_time DESC'}, limit: 30}, fields);
 }
 
 function loadForm() {
 
-    /* load the providers */
-    openils.acq.Provider.createStore(
-        function(store) {
-            providerSelector.store = 
-                new dojo.data.ItemFileReadStore({data:store});
-        },
-        'MANAGE_PROVIDER'
-    );
+    new openils.widget.AutoFieldWidget({
+        fmClass : 'acqpo', 
+        fmField : 'provider', 
+        parentNode : dojo.byId('po-search-provider-selector'),
+        orgLimitPerms : ['VIEW_PURCHASE_ORDER'],
+        dijitArgs : {name:'provider', required:false}
+    }).build();
+
+    new openils.widget.AutoFieldWidget({
+        fmClass : 'acqpo', 
+        fmField : 'ordering_agency', 
+        parentNode : dojo.byId('po-search-agency-selector'),
+        orgLimitPerms : ['VIEW_PURCHASE_ORDER'],
+        dijitArgs : {name:'ordering_agency', required:false}
+    }).build();
 
-    new openils.User().buildPermOrgSelector('VIEW_PURCHASE_ORDER', poSearchOrderingAgencySelect);
+    doSearch({ordering_agency : openils.User.user.ws_ou()});
 }
 
 openils.Util.addOnLoad(loadForm);
index 3b77c89..4945db1 100644 (file)
 </script>
 
 
-<form dojoType='dijit.form.Form' action='' method=''>
+<form dojoType='dijit.form.Form' action='' method='' id='oils-acq-po-search-form'>
+
     <script type="dojo/method" event="onSubmit">
-        fields = this.getValues();
-        if(fields.provider == '')
-            delete fields.provider;
-        if(isNaN(fields.id))
-            delete fields.id;
-        doSearch(fields);
+        doSearch(this.getValues());
         return false; /* don't redirect */
     </script>
-    <table class='oils-acq-basic-form-table'>
-        <tr>
-            <td><label for='id'>ID</label></td>
-            <td><input dojoType='dijit.form.NumberTextBox' name='id'> </input></td>
-        </tr>
-        <tr>
-            <td><label for='provider'>Provider</label></td>
-            <td><select labelAttr='code' searchAttr='code' name='provider' 
-                        style='overflow-y:auto;' jsId="providerSelector" dojoType="dijit.form.FilteringSelect"> </select></td>
-        </tr>
-        <tr>
-            <td><label for='state'>State</label></td>
-            <td>
-                <select dojoType='dijit.form.FilteringSelect' name='state' value=''>
-                    <option value='new'>New</option>
-                    <option value='in-process'>In Process</option>
-                </select>
-            </td>
-        </tr>
-        <tr>
-            <td><label for='ordering_agency'>Ordering Agency</label></td>
-            <td><select jsId='poSearchOrderingAgencySelect' labelAttr='shortname' searchAttr='shortname'
-                dojoType='openils.widget.OrgUnitFilteringSelect' name='ordering_agency'>
-                </select>
-            </td>
-        </tr>
-        <tr>
-            <td style='text-align:center;'><div dojoType='dijit.form.Button' type='submit'>Search</div></td>
-        </tr>
-    </table>
+
+    <div class='oils-acq-basic-form-div'>
+
+        <label for='id'>ID</label>
+        <input dojoType='dijit.form.NumberTextBox' name='id'> </input>
+
+        <label for='provider'>Provider</label>
+        <input id='po-search-provider-selector'/>
+
+        <label for='state'>State</label></td>
+        <select dojoType='dijit.form.FilteringSelect' name='state' required='false'>
+            <option value='new'>New</option>
+            <option value='in-process'>In Process</option>
+        </select>
+
+        <label for='ordering_agency'>Ordering Agency</label>
+        <input id='po-search-agency-selector'/>
+
+        <span dojoType='dijit.form.Button' type='submit'>Search</span>
+    </div>
 </form>
+<br/>
 <div dojoType="dijit.layout.ContentPane" layoutAlign="top"> 
     <div dojoType="dijit.layout.ContentPane" layoutAlign="client" style='height:600px;'> 
-        <table id="po-grid" jsId="poGrid" dojoType="dojox.grid.DataGrid" query="{id: '*'}" rowSelector='20px'> 
+        <table 
+                id="po-grid" 
+                jsId="poGrid" 
+                dojoType="openils.widget.AutoGrid" 
+                query="{id: '*'}" 
+                fieldOrder="['id', 'owner', 'ordering_agency', 'provider', 'create_time', 'edit_time', 'state']"
+                suppressFields="['editor', 'creator']"
+                query="{id: '*'}"
+                defaultCellWidth='"auto"'
+                showSequenceFields='true'
+                fmClass='acqpo'> 
             <thead> 
                 <tr> 
                     <th field="id" get='getId'>ID</th> 
-                    <th field="owner" get='getPOOwner'>Owner</th> 
-                    <th field="ordering_agency" get='getOrgInfo'>Ordering Agency</th> 
-                    <th field="create_time" get='getDateTimeField' width='auto'>Create Time</th> 
-                    <th field="edit_time" get='getDateTimeField' width ='auto'>Edit Time</th> 
-                    <th field="provider" get='getProvider' width='auto'>Provider</th>
-                    <th field="state">State</th> 
+                    <th field="owner" get='getPOOwner'/>
                 </tr> 
             </thead> 
         </table>     
     </div> 
 </div>
-
-<script>dojo.style('po-grid', 'visibility', 'hidden');</script>
 [% END %]