diff options
author | yvesf <yvesf-git@xapek.org> | 2011-07-24 11:05:42 +0200 |
---|---|---|
committer | yvesf <yvesf-git@xapek.org> | 2011-07-24 11:05:42 +0200 |
commit | 75017423563a18986aa096566d8a2969c32c3588 (patch) | |
tree | bd86ab746dd06f71ebd1b723e3bec754805e8736 /ebus/webapp/static/lib/flot-0.7/examples/ajax.html | |
parent | a0382ecfbef32b47b7438170feaa7b81d7bc22db (diff) | |
download | ebus-alt-75017423563a18986aa096566d8a2969c32c3588.tar.gz ebus-alt-75017423563a18986aa096566d8a2969c32c3588.zip |
clean up file structure, use bottle soup plugin
Diffstat (limited to 'ebus/webapp/static/lib/flot-0.7/examples/ajax.html')
-rw-r--r-- | ebus/webapp/static/lib/flot-0.7/examples/ajax.html | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/ebus/webapp/static/lib/flot-0.7/examples/ajax.html b/ebus/webapp/static/lib/flot-0.7/examples/ajax.html new file mode 100644 index 0000000..9b5ec85 --- /dev/null +++ b/ebus/webapp/static/lib/flot-0.7/examples/ajax.html @@ -0,0 +1,143 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://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"> + <!--[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> + </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 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> |