]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/grid/tests/test_yahoo_images.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / grid / tests / test_yahoo_images.html
diff --git a/static/dojo-release-1.1.1/dojox/grid/tests/test_yahoo_images.html b/static/dojo-release-1.1.1/dojox/grid/tests/test_yahoo_images.html
new file mode 100644 (file)
index 0000000..fbab070
--- /dev/null
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+       <title>dojox.Grid - Image Search Test</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+       <style>
+               @import "../_grid/Grid.css";
+               body {
+                       font-size: 0.9em;
+                       font-family: Geneva, Arial, Helvetica, sans-serif;
+               }
+               .grid {
+                       height: 30em;
+                       width: 51em;
+                       border: 1px solid silver;
+               }
+               #info { width: 700px; }
+       </style>
+       <script type="text/javascript" src="../../../dojo/dojo.js" 
+               djConfig="debugAtAllCosts: false, isDebug:false, parseOnLoad: true">
+       </script>
+       <script type="text/javascript">
+               dojo.require("dojox.grid.Grid");
+               dojo.require("dojo.parser");
+       </script>
+       <script type="text/javascript" src="yahooSearch.js"></script>   
+       <script type="text/javascript">
+               // model fields
+               imageFields = [
+                       { name: 'Title', na: '' }, 
+                       { name: 'Thumbnail', na: ''},
+                       { name: 'Summary', na: '' },
+                       { name: 'Url', na: '' },
+                       { name: 'FileSize', na: ''},
+                       { name: 'Height', na: ''},
+                       { name: 'Width', na: ''}
+               ];
+               // create data model
+               var model = new dojox.grid.data.yahooSearch(imageFields, null, "searchInput");
+               model.url = 'http://search.yahooapis.com/ImageSearchService/V1/imageSearch';
+               model.observer(this);
+               
+               // report some model send/receive status
+               model.onSend = function(inParams){
+                       dojo.byId('sendInfo').innerHTML = dojo.string.substitute(
+                               'Request rows ${0} to ${1}.&nbsp&nbsp;',
+                               [inParams.start, inParams.start + inParams.results -1]
+                       );
+               }
+               model.onReceive = function(inData) {
+                       dojo.byId('receiveInfo').innerHTML = dojo.string.substitute(
+                               'Receive rows ${0} to ${1}.&nbsp&nbsp;', 
+                               [
+                                       inData.firstResultPosition, 
+                                       inData.firstResultPosition + inData.totalResultsReturned-1
+                               ]
+                       );
+               }
+
+
+               // Define grid structure
+               // remove the height from the header image cell / row cells have a default height so there's less adjustment when thumb comes in.
+               beforeImageRow = function(inRowIndex, inSubRows){
+                       inSubRows[0].hidden = (inRowIndex == -1);
+               }
+               
+               var imageLayout = [ 
+                       { onBeforeRow: beforeImageRow,
+                               cells: [
+                                       [       { name: 'Image', cellStyles: "height: 100px;", styles: "text-align: center;", width: 12, field: 3, extraField: 1, formatter: formatImage },
+                                               { name: 'Image', cellStyles: "height: 100px;", styles: "text-align: center;", width: 12, field: 3, extraField: 1, formatter: formatImage },
+                                               { name: 'Image', cellStyles: "height: 100px;", styles: "text-align: center;", width: 12, field: 3, extraField: 1, formatter: formatImage },
+                                               { name: 'Image', cellStyles: "height: 100px;", styles: "text-align: center;", width: 12, field: 3, extraField: 1, formatter: formatImage }
+                                       ]
+                       ]}
+               ];
+               
+               // Create grid subclass to function as we need to display images only.
+               // adds indirection between model row and grid row.
+               dojo.declare("dojox.ImageGrid", dojox.Grid, {
+                       postCreate: function() {
+                               this.inherited(arguments);
+                               this.modelDatumChange = this.modelRowChange;
+                               this.colCount = this.layout.cells.length;
+                       },
+                       getDataRowIndex: function(inCell, inRowIndex) {
+                               var r = inCell.index + Math.floor(inRowIndex * this.colCount);
+                               return r;
+                       },
+                       // called in cell context
+                       get: function(inRowIndex) {
+                               var r = this.grid.getDataRowIndex(this, inRowIndex);
+                               return dojox.Grid.prototype.get.call(this, r);
+                       },
+                       modelAllChange: function(){
+                               this.rowCount = Math.ceil(this.model.getRowCount() / this.colCount);
+                               this.updateRowCount(this.rowCount);
+                       },
+                       modelRowChange: function(inData, inRowIndex) {
+                               if(
+                                       (inRowIndex % this.colCount == this.colCount - 1)||
+                                       (inRowIndex == this.model.count - 1)
+                               ){
+                                       this.updateRow(Math.floor(inRowIndex / this.colCount));
+                               }
+                       }
+               });
+               
+               getCellData = function(inCell, inRowIndex, inField) {
+                       var m = inCell.grid.model, r = inCell.grid.getDataRowIndex(inCell, inRowIndex);
+                       return m.getDatum(r, inField);
+               }
+               
+               // execute search
+               doSearch = function(){
+                       model.clearData();
+                       model.setRowCount(0);
+                       grid.render();
+                       grid.resize();
+                       model.requestRows();
+               }
+               
+               dojo.addOnLoad(function(){
+                       dojo.query("#searchInput").onkeypress(function(e){
+                               if(e.keyCode == dojo.keys.ENTER){ doSearch(); }
+                       });
+                       doSearch();
+               });
+               
+       </script>
+</head>
+<body>
+       <div style="font-weight: bold; padding-bottom: 0.25em;">dojox.Grid - Image Search Test</div>
+       <input id="searchInput" type="text" value="apple">
+       <button onclick="doSearch()" style="clear: both;">Search</button>
+       <div jsId="grid" class="grid" structure="imageLayout" dojoType="dojox.ImageGrid" model="model"></div>
+       <br>
+       <div id="info">
+               <div id="rowCount" style="float: left"></div>
+               <div style="float: right">
+                       <div id="sendInfo" style="text-align: right"></div>
+                       <div id="receiveInfo" style="text-align: right"></div>
+               </div>
+       </div>
+       <br /><br />
+       <p>Note: requires PHP for proxy.</p>
+       </body>
+</html>