scale = base_scale * mults[j];
low_val = Math.floor(minV / scale) * scale;
high_val = Math.ceil(maxV / scale) * scale;
- nTicks = (high_val - low_val) / scale;
+ nTicks = Math.abs(high_val - low_val) / scale;
var spacing = self.height_ / nTicks;
// wish I could break out of both loops at once...
if (spacing > pixelsPerTick) break;
k_labels = [ "k", "M", "G", "T" ];
}
+ // Allow reverse y-axis if it's explicitly requested.
+ if (low_val > high_val) scale *= -1;
+
for (var i = 0; i < nTicks; i++) {
var tickV = low_val + i * scale;
var absTickV = Math.abs(tickV);
// TODO(danvk): this doesn't match the constructor logic
this.layout_.updateOptions({ 'errorBars': this.attr_("errorBars") });
- if (attrs['file'] && attrs['file'] != this.file_) {
+ if (attrs['file']) {
this.file_ = attrs['file'];
this.start_();
} else {
--- /dev/null
+<html>
+ <head>
+ <title>Live random data</title>
+ <!--[if IE]>
+ <script type="text/javascript" src="excanvas.js"></script>
+ <![endif]-->
+ <script type="text/javascript" src="../dygraph-combined.js"></script>
+ <script type="text/javascript" src="../dygraph-canvas.js"></script>
+ <script type="text/javascript" src="../dygraph.js"></script>
+ </head>
+ <body>
+ <h3 style="width:800px; text-align: center;">Live random data</h3>
+ <div id="div_g" style="width:800px; height:400px;"></div>
+
+ <script type="text/javascript">
+ var data = [];
+ var t = new Date();
+ for (var i = 10; i >= 0; i--) {
+ var x = new Date(t.getTime() - i * 1000);
+ data.push([x, Math.random()]);
+ }
+
+ var g = new Dygraph(document.getElementById("div_g"), data,
+ {
+ drawPoints: true,
+ showRoller: true,
+ valueRange: [0.0, 1.2],
+ labels: ['Time', 'Random']
+ });
+ setInterval(function() {
+ var x = new Date(); // current time
+ var y = Math.random();
+ data.push([x, y]);
+ g.updateOptions( { 'file': data } );
+ }, 1000);
+
+ </script>
+
+ <p>This test is modeled after a <a
+ href="http://www.highcharts.com/demo/?example=dynamic-update&theme=default">highcharts
+ test</a>. New points should appear once per second. Try zooming and
+ panning over to the right edge to watch them show up.</p>
+ </body>
+</html>
--- /dev/null
+<html>
+ <head>
+ <title>reverse y-axis</title>
+ <!--[if IE]>
+ <script type="text/javascript" src="excanvas.js"></script>
+ <![endif]-->
+ <script type="text/javascript" src="../dygraph-combined.js"></script>
+ <script type="text/javascript" src="../dygraph-canvas.js"></script>
+ <script type="text/javascript" src="../dygraph.js"></script>
+ </head>
+ <body>
+ <h2>Reverse y-axis</h2>
+ <font size=-1>This test uses the same data as the <a
+ href='demo.html'>demo</a> test, but reverses the y-axis.</font><br/>
+ <table><tr><td>
+ <div id="demodiv"></div>
+ </td><td valign=top>
+ <div id="status" style="width:200px; font-size:0.8em; padding-top:5px;"></div>
+ </td>
+ </tr></table>
+ <script type="text/javascript">
+ g = new DateGraph(
+ document.getElementById("demodiv"),
+ function() {
+ var zp = function(x) { if (x < 10) return "0"+x; else return x; };
+ var r = "date,parabola,line,another line,sine wave\n";
+ for (var i=1; i<=31; i++) {
+ r += "200610" + zp(i);
+ r += "," + 10*(i*(31-i));
+ r += "," + 10*(8*i);
+ r += "," + 10*(250 - 8*i);
+ r += "," + 10*(125 + 125 * Math.sin(0.3*i));
+ r += "\n";
+ }
+ return r;
+ },
+ null,
+ {
+ rollPeriod: 1,
+ labelsDiv: document.getElementById('status'),
+ labelsSeparateLines: true,
+ labelsKMB: true,
+ colors: ["rgb(51,204,204)",
+ "rgb(255,100,100)",
+ "#00DD55",
+ "rgba(50,50,200,0.4)"],
+ padding: {left: 40, right: 30, top: 15, bottom: 15},
+ width: 480,
+ height: 320,
+ valueRange: [3000, 0] // Reverse y-axis
+ }
+ );
+ </script>
+</body>
+</html>