[tor-commits] [compass/master] Set options based on request args

karsten at torproject.org karsten at torproject.org
Sun Sep 9 21:04:19 UTC 2012


commit 6238c95aa80a6f1a109a64a0ada093976d1e834e
Author: Sathyanarayanan Gunasekaran <gsathya.ceg at gmail.com>
Date:   Fri Aug 31 10:45:24 2012 +0530

    Set options based on request args
---
 static/js/custom.js  |   54 +++++++++++++++++++++++++++++++++++++-------------
 templates/index.html |   37 ++++++++++++----------------------
 2 files changed, 53 insertions(+), 38 deletions(-)

diff --git a/static/js/custom.js b/static/js/custom.js
index 6ede41b..6ef85be 100644
--- a/static/js/custom.js
+++ b/static/js/custom.js
@@ -10,24 +10,10 @@ function addListener(){
     });
 }
 
-function parseArgs(query){
-    var newQuery = {}, key, value;
-    query = String(query);
-    query = query.split("?")[1];
-    query = query.split("&");
-    $.each(query, function(i, arg){
-        arg = arg.split("=");
-        if (arg[0] != "sort") {
-            newQuery[arg[0]] = arg[1];
-        }
-    });
-    return newQuery;
-}
 
 function doAjax(){
     var path = window.location.search;
     if(path) {
-        console.log("Sending request");
         $.ajax({
             url: "result"+path,
             type: "GET",
@@ -39,3 +25,43 @@ function doAjax(){
         });
     }
 }
+
+function filterArgs() {
+    var myForm = document.getElementById('form');
+    var allInputs = myForm.getElementsByTagName('input');
+    var input, i;
+    for(i = 0; input = allInputs[i]; i++) {
+        if(input.getAttribute('name') && !input.value) {
+            input.setAttribute('name', '');
+        }
+    }
+}
+
+function parseArgs(query){
+    var newQuery = {}, key, value;
+    query = String(query);
+    query = query.split("?")[1];
+    query = query.split("&");
+    $.each(query, function(i, arg){
+        arg = arg.split("=");
+        newQuery[arg[0]] = arg[1];
+    });
+    return newQuery;
+}
+
+function setOptions(){
+    var path = window.location.search;
+    if (path) {
+        var args = parseArgs(path);
+        $.each(args, function (arg, value) {
+            type = ($('input.'+arg).attr("type") || $('input#'+arg).attr("type"));
+            if (type == "checkbox" || type == "radio") {
+                $('input.'+arg).val([value]);
+                $('input#'+arg).val([value]);
+            } else if( type == "text") {
+                $('input.'+arg).val(value);
+                $('input#'+arg).val(value);
+            }
+        });
+    }
+}
diff --git a/templates/index.html b/templates/index.html
index bdb4421..85fd634 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -63,14 +63,14 @@
             <label class="control-label" for="guards">Guards</label>
             <div class="controls">
               <label class="checkbox">
-                <input type="checkbox" id="guards" value="True" name="guards_only">
+                <input type="checkbox" id="guards_only" value="True" name="guards_only">
                  select only relays suitable for guard position
               </label>
             </div>
-            <label class="control-label" for="exit">Exits</label>
+            <label class="control-label" for="exits_only">Exits</label>
             <div class="controls">
               <label class="checkbox">
-                <input type="checkbox" id="exit" value="True" name="exits_only">
+                <input type="checkbox" id="exits_only" value="True" name="exits_only">
                   select only relays suitable for exit position</label>
             </div>
             <label class="control-label" for="family">Family</label>
@@ -81,13 +81,13 @@
               </div>              
             <label class="control-label" for="asNo">AS Number</label>
               <div class="controls">
-                <input type="text" class="input-xlarge" id="asNo" name="ases"
+                <input type="text" class="input-xlarge" id="ases" name="ases"
                        placeholder="AS39138">
                   <span class="help-inline">select only relays from AS number</span>
               </div>              
             <label class="control-label" for="cc">Country Code</label>
               <div class="controls">
-                <input type="text" class="input-xlarge" id="cc" name="country"
+                <input type="text" class="input-xlarge" id="country" name="country"
                        placeholder="de">
                   <span class="help-inline">select only relays from country with code</span>
               </div>              
@@ -95,20 +95,20 @@
             <label class="control-label" for="exits">Exits</label>
             <div class="controls">
               <label class="radio">
-                <input type="radio" name="exits" id="all_relays" value="all_relays" checked>
+                <input type="radio" class="exits" name="exits" id="all_relays" value="all_relays" checked>
                   All relays
                 </label>
                 <label class="radio">
-                  <input type="radio" name="exits" id="exits_only" value="fast_exits_only">
+                  <input type="radio" class="exits" name="exits" id="fast_exits_only" value="fast_exits_only">
                     Fast exit relays (95+ Mbit/s, 5000+ KB/s,
                     80/443/554/1755, 2 relays per /24)
                   </label>
                 <label class="radio">
-                  <input type="radio" name="exits" id="almost_fast_relays" value="almost_fast_exits_only">
+                  <input type="radio" class="exits" name="exits" id="almost_fast_exits_only" value="almost_fast_exits_only">
                     Almost fast exit relays (80+ Mbit/s, 2000+ KB/s, 80/443, not in set of fast exits)
                   </label>
                 <label class="radio">
-                  <input type="radio" name="exits" id="exit_relays_any_nw" value="fast_exits_only_any_network">
+                  <input type="radio" class="exits" name="exits" id="fast_exits_only_any_network" value="fast_exits_only_any_network">
                     Fast exits relays any network (95+ Mbit/s, 5000+ KB/s, 80/443/554/1755)
                   </label>
                 </div>
@@ -117,12 +117,12 @@
               <label class="control-label" for="country">Country</label>
             <div class="controls">
               <label class="checkbox">
-                <input type="checkbox" id="country" value="True" name="by_country">
+                <input type="checkbox" id="by_country" value="True" name="by_country">
                  group relays by country </label>
             </div>
               <label class="control-label" for="as">AS</label>
             <div class="controls">
-                <input type="checkbox" id="as" value="True" name="by_as">
+                <input type="checkbox" id="by_as" value="True" name="by_as">
                  group relays by AS </label>
             </div>
             </div>
@@ -165,20 +165,9 @@
     <script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
     <script src="{{ url_for('static', filename='js/custom.js') }}"></script>
     <script>
+      filterArgs();
       doAjax();
-    var myForm = document.getElementById('form');
-
-      myForm.onsubmit = function() {
-         var allInputs = myForm.getElementsByTagName('input');
-         var input, i;
-         for(i = 0; input = allInputs[i]; i++) {
-            if(input.getAttribute('name') && !input.value) {
-               input.setAttribute('name', '');
-            }
-         }
-      };
-
-
+      setOptions();
     </script>
   </body>
 </html>



More information about the tor-commits mailing list