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);
</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 %]