Optionalize size check
[dygraphs.git] / gallery / plotter.js
index be39eb3..08bdf0f 100644 (file)
@@ -1,4 +1,6 @@
-// Use this as a template for new Gallery entries.
+/*global Gallery,Dygraph,data */
+/*jshint evil:true */
+/*global fn */
 Gallery.register(
   'plotter',
   {
@@ -11,11 +13,11 @@ Gallery.register(
         "  return [0.1 * x, 0.1 * x + Math.sin(x), 0.1*x + Math.cos(x)];",
         "}</textarea><br/>",
         "<b>Preset functions:</b> <select id='presets'>",
-        "<option id='custom'>(custom)</option>",
+        "<option selected id='custom'>(custom)</option>",
         "<option id='id'>Identity</option>",
         "<option id='sine'>Sine Wave</option>",
         "<option id='taylor'>Taylor series</option>",
-        "<option selected id='sawtooth'>Sawtooth</option>",
+        "<option id='sawtooth'>Sawtooth</option>",
         "</select>",
         "</p>",
         "",
@@ -27,31 +29,32 @@ Gallery.register(
 
     },
     run: function() {
+      var plot;  // defined below
       var select = document.getElementById("presets");
+      var presets = {
+        'id': [ -10, 10, 'function(x) {\n  return x;\n}' ],
+        'sine': [ -10, 10, 'function(x) {\n  return Math.sin(x);\n}' ],
+        'taylor': [ -3, 3, 'function(x) {\n  return [Math.cos(x), 1 - x*x/2 + x*x*x*x/24];\n}' ],
+        'sawtooth': [-10, 10, 'function(x) {\n  var y = 0;\n  for (var i = 1; i < 20; i+=2) {\n    y += Math.sin(i * x)/i;\n  }\n  var final = 1 - 2*(Math.abs(Math.floor(x / Math.PI)) % 2);\n  return [4/Math.PI * y, final];\n}' ]
+      };
       select.onchange = function() {
         var sel = select.selectedIndex;
         var id = select.options[sel].id;
-        var presets = {
-          'id': [ -10, 10, 'function(x) {\n  return x;\n}' ],
-          'sine': [ -10, 10, 'function(x) {\n  return Math.sin(x);\n}' ],
-          'taylor': [ -3, 3, 'function(x) {\n  return [Math.cos(x), 1 - x*x/2 + x*x*x*x/24];\n}' ],
-          'sawtooth': [-10, 10, 'function(x) {\n  var y = 0;\n  for (var i = 1; i < 20; i+=2) {\n    y += Math.sin(i * x)/i;\n  }\n  var final = 1 - 2*(Math.abs(Math.floor(x / Math.PI)) % 2);\n  return [4/Math.PI * y, final];\n}' ]
-        };
 
         if (id == "custom") { return; }
         document.getElementById("x1").value = presets[id][0];
         document.getElementById("x2").value = presets[id][1];
         document.getElementById("eq").value = presets[id][2];
         plot();
-      }
+      };
 
       var plotButton = document.getElementById("plot");
-      var plot = function() {
+      plot = function() {
         var eq = document.getElementById("eq").value;
         eval("fn = " + eq);
 
         var graph = document.getElementById("graph_div");
-        var width = parseInt(graph.style.width);
+        var width = parseInt(graph.style.width, 10);
         var x1 = parseFloat(document.getElementById("x1").value);
         var x2 = parseFloat(document.getElementById("x2").value);
         var xs = 1.0 * (x2 - x1) / width;
@@ -71,9 +74,9 @@ Gallery.register(
           data.push(row);
         }
 
-        g = new Dygraph(graph, data);
-      }
-      plot.onclick = plot;
+        new Dygraph(graph, data);
+      };
+      plotButton.onclick = plot;
       plot();
     }
   });