Changeset 9463
- Timestamp:
- 04/27/08 21:32:44 (3 weeks ago)
- Location:
- branches/acq-experiment/Open-ILS/web
- Files:
-
- 2 modified
-
js/dojo/openils/acq/Picklist.js (modified) (2 diffs)
-
oilsweb/oilsweb/templates/oils/default/acq/picklist/view.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/acq-experiment/Open-ILS/web/js/dojo/openils/acq/Picklist.js
r9326 r9463 1 /* --------------------------------------------------------------------------- 2 * Copyright (C) 2008 Georgia Public Library Service 3 * David J. Fiander <david@fiander.info> 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * --------------------------------------------------------------------------- 15 */ 16 1 17 if(!dojo._hasResource['openils.acq.Picklist']) { 2 18 dojo._hasResource['openils.acq.Picklist'] = true; 3 19 dojo.provide('openils.acq.Picklist'); 4 dojo.require('util.Dojo'); 20 21 dojo.require('fieldmapper.Fieldmapper'); 5 22 6 23 /** Declare the Picklist class with dojo */ … … 9 26 }); 10 27 11 openils.acq.Picklist.find_attr = function(li, at_name, at_type) { 12 for (var i in li.attributes()) { 13 var attr = li.attributes()[i]; 14 if (attr.attr_type() == at_type && attr.attr_name() == at_name) { 15 return attr.attr_value(); 16 } 28 openils.acq.Picklist.cache = {}; 29 30 openils.acq.Picklist.createStore = function(pl_id, onComplete) { 31 // Fetches the list of titles in a picklist and builds a grid 32 33 function mkStore(r) { 34 var msg; 35 var items = []; 36 while (msg = r.recv()) { 37 var data = msg.content(); 38 openils.acq.Picklist.cache[data.id()] = data; 39 40 items.push(data); 17 41 } 18 return '';19 } ;42 onComplete(jub.toStoreData(items)); 43 } 20 44 45 fieldmapper.standardRequest( 46 ['open-ils.acq', 'open-ils.acq.lineitem.picklist.retrieve'], 47 { async: true, 48 params: [openils.User.authtoken, pl_id, {flesh_attrs:1}], 49 oncomplete: mkStore 50 }); 51 }; 21 52 22 openils.acq.Picklist.loadGrid = function(domId, columns, pl_id) { 23 /** Fetches the list of picklists and builds a grid from them */ 53 openils.acq.Picklist.find_attr = function(id, at_name, at_type) { 54 var li = openils.acq.Picklist.cache[id]; 55 for (var i in li.attributes()) { 56 var attr = li.attributes()[i]; 57 if (attr.attr_type() == at_type && attr.attr_name() == at_name) { 58 return attr.attr_value(); 59 } 60 } 61 return ''; 62 }; 24 63 25 var gridRefs = util.Dojo.buildSimpleGrid(domId, columns, [], 'id', true); 26 var ses = new OpenSRF.ClientSession('open-ils.acq'); 27 var req = ses.request('open-ils.acq.lineitem.picklist.retrieve', 28 openils.User.authtoken, pl_id, {flesh_attrs:1}); 64 openils.acq.Picklist.onRowClick = function(evt) { 65 var gridRefs = openils.acq.Picklist._gridRefs; 66 var row = gridRefs.grid.model.getRow(evt.rowIndex); 29 67 30 req.oncomplete = function(r) { 31 var msg 32 gridRefs.grid.setModel(gridRefs.model); 33 gridRefs.model.query = {id:'*'}; 34 while(msg = r.recv()) { 35 var jub = msg.content(); 36 //alert(js2JSON(jub)); 37 gridRefs.store.newItem({ 38 id:jub.id(), 39 title:openils.acq.Picklist.find_attr(jub, "title", "lineitem_marc_attr_definition"), 40 price:openils.acq.Picklist.find_attr(jub, "price", "lineitem_marc_attr_definition"), 41 provider:jub.provider(), 42 copies:jub.item_count() 43 }); 44 } 45 gridRefs.grid.update(); 46 }; 47 48 req.send(); 49 return gridRefs.grid; 68 openils.acq.Lineitems.loadGrid('oils-acq-picklist-details-grid', row.id); 50 69 }; 51 70 } -
branches/acq-experiment/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view.html
r9384 r9463 12 12 <script type="text/javascript"> 13 13 dojo.require("dijit.layout.SplitContainer") 14 dojo.require('openils.acq.Picklist'); 15 </script> 16 <script type='text/javascript'> 17 function getJUBTitle(rowIndex) { 18 data = pickListGrid.model.getRow(rowIndex); 19 if (!data) return ''; 20 return openils.acq.Picklist.find_attr(data.id, "title", "lineitem_marc_attr_definition") 21 } 22 function getJUBPrice(rowIndex) { 23 data = pickListGrid.model.getRow(rowIndex); 24 if (!data) return; 25 return openils.acq.Picklist.find_attr(data.id, "price", "lineitem_marc_attr_definition") 26 } 14 27 </script> 15 28 </%def> … … 23 36 <div dojoType="dijit.layout.SplitContainer" 24 37 orientation="vertical" sizerWidth="5" 25 activeSizing=" 0" layoutAlign="client">26 <div dojoType="dijit.layout.ContentPane" sizeMin="20" sizeShare="20">27 <div id="oils-acq-picklist-grid"> </div>28 < script type="text/javascript" src="${c.oils.core.media_prefix.value}/js/util/Dojo.js"></script>29 <script type="text/javascript" src="${c.oils.core.media_prefix.value}/js/openils/acq/Picklist.js"></script>38 activeSizing="1" layoutAlign="client"> 39 <div id="oils-acq.picklist-container" 40 dojoType="dijit.layout.ContentPane" sizeMin="20" sizeShare="20"> 41 <div jsid='pickListGrid' dojoType='dojox.Grid' 42 id="oils-acq-picklist-grid"> </div> 30 43 <script type="text/javascript"> 31 dojo.require('openils.acq.Picklist'); 32 33 var cols = [ 34 {name: "${_('ID')}", field: 'id'}, 35 {name: "${_('Title')}", width: "50%", field: 'title'}, 36 {name: "${_('Price')}", field: 'price'}, 37 {name: "${_('Vendor')}", field: 'provider'}, 38 {name: "${_('# of Copies')}", field: 'copies'} 39 ]; 40 41 dojo.addOnLoad(function(){openils.acq.Picklist.loadGrid('oils-acq-picklist-grid', cols, ${c.oils.acq.picklist.value.id()})}); 44 dojo.require("openils.acq.Picklist"); 45 dojo.require('dojo.data.ItemFileWriteStore'); 46 var layout = [{ 47 cells: [[ 48 {name: "ID", field: 'id'}, 49 {name: "Title", width: "50%", get:getJUBTitle}, 50 {name: "Price", get:getJUBPrice}, 51 {name: "Vendor", field: 'provider'}, 52 {name: "# of Copies", field: 'item_count'} 53 ]] 54 }]; 55 56 openils.acq.Picklist.createStore(${c.oils.acq.picklist.value.id()}, 57 function(storeData) { 58 var store = new dojo.data.ItemFileReadStore({data:storeData}); 59 var model = new dojox.grid.data.DojoData(null, store, 60 {rowsPerPage:20, clientSort:true, 61 query:{id:'*'}}); 62 pickListGrid.setStructure(layout); 63 pickListGrid.setModel(model); 64 pickListGrid.update(); 65 }); 42 66 </script> 43 67 </div> 44 68 <div dojoType="dijit.layout.ContentPane" sizeMin="20" 45 69 sizeShare="80"> 46 <p>Hi!</p> 47 <div id="oils-acq-picklist-details-grid"> </div> 70 <script type="text/javascript"> 71 dojo.require("openils.acq.Lineitems"); 72 73 var li_cols = [ 74 {name: ('Fund'), field: 'fund'}, 75 {name: ('Location'), field: 'location'} 76 ]; 77 78 dojo.addOnLoad(function(){openils.acq.Lineitems.initGrid('oils-acq-picklist-details-grid', li_cols);}); 79 </script> 80 <div id="oils-acq-picklist-details-grid"> 81 <p>Copy order details go here...</p> 82 </div> 48 83 </div> 49 84 </div>
