]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/fx/tests/test_Nodelist-fx.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / fx / tests / test_Nodelist-fx.html
diff --git a/static/dojo-release-1.1.1/dojox/fx/tests/test_Nodelist-fx.html b/static/dojo-release-1.1.1/dojox/fx/tests/test_Nodelist-fx.html
new file mode 100644 (file)
index 0000000..75c7a94
--- /dev/null
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+        "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+       <title>dojo.NodeList-fx and dojox.fx.ext-dojo.Nodelist | fx add-ons to dojo.query()</title>
+               
+       <script type="text/javascript" src="../../../dojo/dojo.js" djConfig="parseOnLoad:true, isDebug:true"></script>
+       <style type="text/css">
+               @import "../../../dojo/resources/dojo.css";
+               @import "../../../dijit/themes/dijit.css";
+               @import "../../../dijit/themes/tundra/tundra.css";
+               @import "../../../dijit/tests/css/dijitTests.css";
+
+               .testBoxContainer {
+                       position:relative;
+                       width:418px;
+                       height:240px;
+                       margin-left:50px; 
+                       border-top:1px dashed #b7b7b7;
+                       border-bottom:1px dashed #b7b7b7;
+               }
+
+                .testBox {
+                        position:absolute;
+                        top:0; left:0;
+                        width:50px;
+                        height:50px;
+                        background:#ededed;
+                        border:1px solid #b7b7b7;
+                        -moz-border-radius:6pt;
+                        -webkit-border-radius:5pt;
+                        overflow:hidden; 
+                }
+                .rowOne { top:0; }
+                .rowTwo { top:60px; }
+                .rowThree { top:120px; }
+               .rowFour { top:180px; }
+               
+                .iOne { left:0; }
+                .iTwo { left:60px; }
+                .iThree { left:120px; }
+               .iFour { left:180px; }
+               .iFive { left:240px; }
+               .iSix { left:300px; }
+               .iSeven { left:360px; }
+               
+       </style>
+       <script type="text/javascript">
+
+       dojo.require("dojox.fx.ext-dojo.NodeList"); 
+       dojo.require("dijit.form.Button");
+       dojo.require("dijit.form.CheckBox");
+
+       // its funny...
+       var dQuery = dojo.query;
+       var d$ = dQuery;
+       
+       var anim2 = null;
+
+       var init = function(){
+               var anim = d$(".rowOne").highlight({
+                       duration:700,
+                       onEnd: function(){
+                               d$(".rowTwo").fadeTo({ end: 0.5, 
+                                       duration:700,
+                                       onEnd: function(){
+                                               
+                                               anim2 = d$(".rowThree").fadeOut({
+                                                       top:20, left:20,
+                                                       duration:500
+                                               }).play(700);
+                                       }                                       
+                               }).play(300);   
+                       }
+               });
+
+               dojo.connect(anim,"onEnd",function(){
+
+                       var q1v = true;
+                       var q1 = ".iSix"; // colum six 
+                       // this will setup a connection on each of the nodes to toggle their fade state
+                       d$(q1).connect("onclick",function(){
+                               d$(q1)[(q1v ? "fadeOut" : "fadeIn")]().play();
+                               q1v = !q1v;
+                       });
+
+                       // this highlights all the nodes via a mouseenter event, which automatically
+                       // 
+                       d$(".testBox").connect("onmouseenter",function(e){
+                               dojox.fx.highlight({ node: e.target, duration:250 }).play(); 
+                       });
+
+
+                       var q3 = ".rowOne.iSeven"; // top right node
+                       d$(q3).connect("onclick",function(){
+                               d$(q3).sizeTo({ 
+                                       width:300, height:300, duration:300, 
+                                       onEnd: function(){
+                                               // FIXME: sizeTo isn't calculating it's start value properly
+                                               d$(q3).sizeTo({ width: 50, height:50, duration:115, delay:1000, method:"combine" }).play();     
+                                       }
+                               }).play(); 
+                       });
+
+                       
+
+               });
+               // main animation
+               anim.play(700); 
+       };
+       // start the code
+       dojo.addOnLoad(init);
+       
+       // for our dojo.query() form, some animations take different params which would be kind of difficult
+       // to make both dynamic and robust and easy to explain. see each function individually in the API
+       // for the breakdown. just going to hard-code some values in for somet things:
+       var animArgs = {
+               // dojo.NodeList-fx ones:
+               animateProperty: {
+                       properties: {
+                               borderWidth: { end: 5, unit:"px" },
+                               marginTop: { end: 8, unit:"px" }
+                       }
+       
+               },
+               
+               slideTo: { top:0, left: 0 },
+               
+               // dojox extension ones:
+               sizeTo: {
+                       width: 75, height:75
+               },
+               fadeTo: {
+                       end: 0.35
+               },
+               slideBy: {
+                       top:55, left: 55                        
+               },
+               
+               // mix these into every 'custom query animation'
+               defaultArgs: {
+                       // duration: 500 //,
+                       // onEnd: function(){ console.log('ended animation') }
+               }
+       };
+       
+       
+
+       </script>
+</head>
+<body class="tundra">
+
+        <h1 class="testTitle">NodeList and dojo.query "magic"</h1>
+
+       <div style="width:200px; float:right; padding:10px">
+               <h4>stuff going on:</h4>
+               <ul>
+                       <li>watch the startup cycle</li>
+                       <li>click col 6</li>
+                       <li>click top right box</li>    
+                       <li>hover to highlight() node</li>
+               </ul> 
+       </div>
+
+       <div style="width:200px; float:right; padding:10px">
+               <h4>custom query:</h4>
+               <form id="whichAnim">
+               <p>
+                       dojo.query("<input type="text" name="str" id="customStr" value=".noIdHere" size="10" />");      
+                       <br>(dojo:)<br>
+                       <input type="radio" name="g2" id="g2rb1" value="fadeIn" dojoType="dijit.form.RadioButton" checked="checked"/>
+                       <label for="g2rb1">.fadeIn</label><br>
+
+                       <input type="radio" name="g2" id="g2rb2" value="fadeOut" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb2">.fadeOut</label><br>
+
+                       <input type="radio" name="g2" id="g2rb3" value="wipeOut" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb3">.wipeOut</label><br>
+
+                       <input type="radio" name="g2" id="g2rb4" value="wipeIn" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb4">.wipeIn</label><br>
+
+                       <input type="radio" name="g2" id="g2rb0" value="slideTo" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb0">.slideTo</label> (x: 0, y:0)<br>
+
+                       <br>(dojox:)<br>
+               
+                       <input type="radio" name="g2" id="g2rb5" value="highlight" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb5">.highlight</label><br>
+
+                       <input type="radio" name="g2" id="g2rb6" value="sizeTo" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb6">.sizeTo (a fixed size)</label><br>
+
+                       <input type="radio" name="g2" id="g2rb7" value="slideBy" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb7">.slideBy (top: left: offset fixed)</label><br>
+
+                       <input type="radio" name="g2" id="g2rb8" value="fadeTo" dojoType="dijit.form.RadioButton"/>
+                       <label for="g2rb8">.fadeTo (35% opacity)</label><br>
+
+               </p>
+               <script type="dojo/method" event="onSubmit">
+                       // it's like cheating, but we don't event want this form to submit. you can type
+                       // a query(), use the arrows to select a method, and hit enter. (or should be able to)
+                       return false; 
+               </script>
+
+               <button dojoType="dijit.form.Button" type="submit" id="runnerButton" />
+                       Run
+                       <script type="dojo/method" event="onClick">
+                               // our runner / submit button                           
+                               var str = dojo.byId("customStr").value;
+                               var animType;
+                               dojo.query('.dijitRadioChecked').forEach(function(n){
+                                       animType = dijit.byNode(n).getValue();
+                               });
+                               if(str && animType){
+                                       var theseArgs = animArgs[animType] || {};
+                                       // combine our base args with 'theseArgs' if they exist
+                                       var args = dojo.mixin(theseArgs,animArgs.defaultArgs)
+                                       //var nodelist = dojo.query(str); 
+                                       dojo.query(str)[(animType)](args).play();
+                               }
+                               return false; 
+                       </script>
+               </button>
+
+               </form>
+       </div>
+
+        <div class="testBoxContainer">        
+                <div id="node1" class="testBox rowOne iOne">1</div>
+                <div id="node2" class="testBox rowOne iTwo">2</div>
+                <div class="testBox noIdHere rowOne iThree">3</div>
+               <div class="testBox noIdHere rowOne iFour">4</div>
+               <div class="testBox noIdHere rowOne iFive">5</div>
+               <div class="testBox noIdHere rowOne iSix">6</div>
+               <div class="testBox noIdHere rowOne iSeven">7</div>
+
+                <div id="node4" class="testBox rowTwo iOne">2</div>
+                <div class="testBox noIdHere rowTwo iTwo"></div>
+                <div id="node6" class="testBox rowTwo iThree"></div>
+               <div class="testBox noIdHere rowTwo iFour"></div>
+               <div class="testBox noIdHere rowTwo iFive"></div>
+               <div class="testBox noIdHere rowTwo iSix"></div>
+               <div class="testBox noIdHere rowTwo iSeven"></div>
+
+                <div id="node7" class="testBox rowThree iOne">3</div>
+                <div class="testBox noIdHere rowThree iTwo"></div>
+                <div id="node9" class="testBox rowThree iThree"></div>
+               <div class="testBox noIdHere rowThree iFour"></div>
+               <div class="testBox noIdHere rowThree iFive"></div>
+               <div class="testBox noIdHere rowThree iSix"></div>
+               <div id="aNode" class="testBox rowThree iSeven"></div>
+
+                <div id="node7" class="testBox rowFour iOne">4</div>
+                <div class="testBox noIdHere rowFour iTwo"></div>
+                <div id="node9" class="testBox rowFour iThree"></div>
+               <div class="testBox noIdHere rowFour iFour"></div>
+               <div class="testBox noIdHere rowFour iFive"></div>
+               <div id="randomNode" class="testBox rowFour iSix"></div>
+               <div class="testBox noIdHere rowFour iSeven"></div>
+
+        </div>
+
+        <br style="clear:both;">
+       HTML AFTER
+       <br>
+               
+       <h3>classes available to play with:</h3>
+       
+       <code><pre>
+               .testBox
+               .noIdHere
+               each row: .rowOne .rowTwo .rowThree .rowFour
+               each col: .iOne .iTwo .. iSeven
+               #randomNode, #node9, #node7, #aNode, #node1, #node2, #node4, #node6
+       </pre></code>
+
+       <p>the dojo.query() isn't limited to the testDiv, it parses the body. try: dojo.query("fieldset") and slideBy animation</p>
+
+</body>
+</html>