<!DOCTYPE html>
<meta charset="utf-8">
<style>
    @import url(http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:400,700);
    @import url(http://square.github.io/cubism/style.css);
</style>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="http://square.github.io/cubism/cubism.v1.js"></script>
<div id="body"> <div id="graph" /></div>
 
<script>

// create context and horizon
var context = cubism.context().serverDelay(3 * 1000).step(1000).size(1000)
var horizon = context.horizon().extent([0, 100])
 
// define metric accessor
function wally_source(name) {
    function selector(start, stop, step, callback){
        function on_result(data) { 
            callback(null, data);
        };

        url = "/sensors?start=" + start + "&stop=" + stop + "&step=" + step + "&name=" + name;
        d3.json(url, on_result);
    }

    return context.metric(selector, name);
}
 
// draw graph
var metrics = ["testnodes:io_q", "testnodes:cpu"];
horizon.metric(wally_source);
 
d3.select("#graph").selectAll(".horizon")
    .data(metrics)
    .enter()
    .append("div")
    .attr("class", "horizon")
    .call(horizon.height(120));
 
// set rule
d3.select("#body").append("div")
    .attr("class", "rule")
    .call(context.rule());
 
// set focus
context.on("focus", function(i) {
    d3.selectAll(".value")
        .style( "right", i == null ? null : context.size() - i + "px");
});

// set axis 
var axis = context.axis()
d3.select("#graph").append("div").attr("class", "axis").append("g").call(axis);

</script>
