$(document).ready(function() {

  /* Done setting the chart up? Time to render it!*/
  var data = [
    {
      values: [],
      key: 'Event queue length',
      color: '#000000'
    },
  ]

  /*These lines are all chart setup.  Pick and choose which chart features you want to utilize. */
  nv.addGraph(function() {
    var chart = nv.models.lineChart()
                  .margin({right: 80})  //Adjust chart margins to give the x-axis some breathing room.
                  .useInteractiveGuideline(true)  //We want nice looking tooltips and a guideline!
                  .transitionDuration(350)  //how fast do you want the lines to transition?
                  .showLegend(false)       //Show the legend, allowing users to turn on/off line series.
                  .showYAxis(true)        //Show the y-axis
                  .showXAxis(true)        //Show the x-axis
                  .noData("Waiting for queue length data...")
    ;

    // Chart x-axis settings
    chart.xAxis
        .tickPadding(9)
        .tickFormat(function(d) {
            return d3.time.format('%H:%M:%S')(new Date(d))
        });

    // Chart y-axis settings
    chart.yAxis
        .tickPadding(7)
        .tickFormat(d3.format(',d'));

    d3.select('#chart svg')
        .datum(data)
        .call(chart);

    updateData();
    chart.update();

    // Poll every 5 seconds
    setInterval(function() {
        updateData()

        d3.select('#chart svg')
            .datum(data)
            .transition();

        d3.select("#chart svg rect")
            .style("opacity", 1)
            .style("fill", '#fff')

        chart.update()
    }, 3000);

    // Update the chart when window resizes.
    nv.utils.windowResize(function() { chart.update() });
    return chart;
  });

  function 
() {
    var api_url = $('div#data-api-url').data('api-url');
    $.get(api_url + 'metrics?fields=event_queue_length', function(json) {
      var d = new Date().getTime();
      var value = {x: d, y: json.event_queue_length}
      data[0].values.push(value);

      // Remove old data, to keep the graph performant
      if (data[0].values.length > 100) {
        data[0].values.shift()
      }
    }, 'json')
  }

});

updateData