diff options
Diffstat (limited to 'examples/ajax/index.html')
-rw-r--r-- | examples/ajax/index.html | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/examples/ajax/index.html b/examples/ajax/index.html new file mode 100644 index 0000000..35ce10d --- /dev/null +++ b/examples/ajax/index.html @@ -0,0 +1,173 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <title>Flot Examples: AJAX</title> + <link href="../examples.css" rel="stylesheet" type="text/css"> + <!--[if lte IE 8]><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> + <script type="text/javascript"> + + $(function() { + + var options = { + lines: { + show: true + }, + points: { + show: true + }, + xaxis: { + tickDecimals: 0, + tickSize: 1 + } + }; + + var data = []; + + $.plot("#placeholder", data, options); + + // Fetch one series, adding to what we already have + + var alreadyFetched = {}; + + $("button.fetchSeries").click(function () { + + var button = $(this); + + // Find the URL in the link right next to us, then fetch the data + + var dataurl = button.siblings("a").attr("href"); + + function onDataReceived(series) { + + // Extract the first coordinate pair; jQuery has parsed it, so + // the data is now just an ordinary JavaScript object + + var firstcoordinate = "(" + series.data[0][0] + ", " + series.data[0][1] + ")"; + button.siblings("span").text("Fetched " + series.label + ", first point: " + firstcoordinate); + + // Push the new data onto our existing data array + + if (!alreadyFetched[series.label]) { + alreadyFetched[series.label] = true; + data.push(series); + } + + $.plot("#placeholder", data, options); + } + + $.ajax({ + url: dataurl, + type: "GET", + dataType: "json", + success: onDataReceived + }); + }); + + // Initiate a recurring data update + + $("button.dataUpdate").click(function () { + + data = []; + alreadyFetched = {}; + + $.plot("#placeholder", data, options); + + var iteration = 0; + + function fetchData() { + + ++iteration; + + function onDataReceived(series) { + + // Load all the data in one pass; if we only got partial + // data we could merge it with what we already have. + + data = [ series ]; + $.plot("#placeholder", data, options); + } + + // Normally we 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. + + $.ajax({ + url: "data-eu-gdp-growth-" + iteration + ".json", + type: "GET", + dataType: "json", + success: onDataReceived + }); + + if (iteration < 5) { + setTimeout(fetchData, 1000); + } else { + data = []; + alreadyFetched = {}; + } + } + + setTimeout(fetchData, 1000); + }); + + // Load the first series by default, so we don't have an empty plot + + $("button.fetchSeries:first").click(); + + // Add the Flot version string to the footer + + $("#footer").prepend("Flot " + $.plot.version + " – "); + }); + + </script> +</head> +<body> + + <div id="header"> + <h2>AJAX</h2> + </div> + + <div id="content"> + + <div class="demo-container"> + <div id="placeholder" class="demo-placeholder"></div> + </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> + <button class="fetchSeries">First dataset</button> + [ <a href="data-eu-gdp-growth.json">see data</a> ] + <span></span> + </p> + + <p> + <button class="fetchSeries">Second dataset</button> + [ <a href="data-japan-gdp-growth.json">see data</a> ] + <span></span> + </p> + + <p> + <button class="fetchSeries">Third dataset</button> + [ <a href="data-usa-gdp-growth.json">see data</a> ] + <span></span> + </p> + + <p>If you combine AJAX with setTimeout, you can poll the server for new data.</p> + + <p> + <button class="dataUpdate">Poll for data</button> + </p> + + </div> + + <div id="footer"> + Copyright © 2007 - 2013 IOLA and Ole Laursen + </div> + +</body> +</html> |