<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “www.w3.org/TR/html4/loose.dtd”> <html>

<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Flot Examples</title>
   <link href="layout.css" rel="stylesheet" type="text/css"></link>
   <!--[if IE]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]-->
   <script language="javascript" type="text/javascript" src="../jquery.js"></script>
   <script language="javascript" type="text/javascript" src="../jquery.flot.js"></script>
</head>
   <body>
   <h1>Flot Examples</h1>

   <div id="placeholder" style="width:600px;height:300px;"></div>

   <p>Example of loading data dynamically with AJAX. Percentage change in GDP (source: <a href="http://epp.eurostat.ec.europa.eu/tgm/table.do?tab=table&init=1&plugin=1&language=en&pcode=tsieb020">Eurostat</a>). Click the buttons below.</p>

   <p>The data is fetched over HTTP, in this case directly from text
   files. Usually the URL would point to some web server handler
   (e.g. a PHP page or Java/.NET/Python/Ruby on Rails handler) that
   extracts it from a database and serializes it to JSON.</p>

   <p>
     <input class="fetchSeries" type="button" value="First dataset"> -
     <a href="data-eu-gdp-growth.json">data</a> -
     <span></span>
   </p>

   <p>
     <input class="fetchSeries" type="button" value="Second dataset"> -
     <a href="data-japan-gdp-growth.json">data</a> -
     <span></span>
   </p>

   <p>
     <input class="fetchSeries" type="button" value="Third dataset"> -
     <a href="data-usa-gdp-growth.json">data</a> -
     <span></span>
   </p>

   <p>If you combine AJAX with setTimeout, you can poll the server
      for new data.</p>

   <p>
     <input class="dataUpdate" type="button" value="Poll for data">
   </p>

<script id=“source” language=“javascript” type=“text/javascript”> $(function () {

var options = {
    lines: { show: true },
    points: { show: true },
    xaxis: { tickDecimals: 0, tickSize: 1 }
};
var data = [];
var placeholder = $("#placeholder");

$.plot(placeholder, data, options);

// fetch one series, adding to what we got
var alreadyFetched = {};

$("input.fetchSeries").click(function () {
    var button = $(this);

    // find the URL in the link right next to us 
    var dataurl = button.siblings('a').attr('href');

    // then fetch the data with jQuery
    function onDataReceived(series) {
        // extract the first coordinate pair so you can see that
        // data is now an ordinary Javascript object
        var firstcoordinate = '(' + series.data[0][0] + ', ' + series.data[0][1] + ')';

        button.siblings('span').text('Fetched ' + series.label + ', first point: ' + firstcoordinate);

        // let's add it to our current data
        if (!alreadyFetched[series.label]) {
            alreadyFetched[series.label] = true;
            data.push(series);
        }

        // and plot all we got
        $.plot(placeholder, data, options);
     }

    $.ajax({
        url: dataurl,
        method: 'GET',
        dataType: 'json',
        success: onDataReceived
    });
});

// initiate a recurring data update
$("input.dataUpdate").click(function () {
    // reset data
    data = [];
    alreadyFetched = {};

    $.plot(placeholder, data, options);

    var iteration = 0;

    function fetchData() {
        ++iteration;

        function onDataReceived(series) {
            // we get all the data in one go, if we only got partial
            // data, we could merge it with what we already got
            data = [ series ];

            $.plot($("#placeholder"), data, options);
        }

        $.ajax({
            // usually, we'll just call the same URL, a script
            // connected to a database, but in this case we only
            // have static example files so we need to modify the
            // URL
            url: "data-eu-gdp-growth-" + iteration + ".json",
            method: 'GET',
            dataType: 'json',
            success: onDataReceived
        });

        if (iteration < 5)
            setTimeout(fetchData, 1000);
        else {
            data = [];
            alreadyFetched = {};
        }
    }

    setTimeout(fetchData, 1000);
});

}); </script>

</body>

</html>