<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- Example HTML/javascript file that display the content of a RRD archive file Part of the javascriptRRD package Copyright (c) 2009 Frank Wuerthwein, fkw@ucsd.edu Original repository: http://javascriptrrd.sourceforge.net/ MIT License [http://www.opensource.org/licenses/mit-license.php] --> <!-- This example will print out RRD content in integer format. Make sure all RRD values can fit in an integer --> <html> <script type="text/javascript" src="../lib/binaryXHR.js"></script> <script type="text/javascript" src="../lib/rrdFile.js"></script> <head> <title>RRD Content</title> </head> <body> <h1 id="title">RRD Content</h1> RRD URL: <input type="text" id="input_fname" value="example1.rrd" onchange="fname_update()"> <button onclick="fname_update()">Update</button> <hr> <table border=0> <tr> <td>DS: <select id="select_ds"></select></td> <td>RRA: <select id="select_rra"></select></td> <td><button id="dsrra_button" onclick="element_update()" disabled=1>Update</button></td> </tr> </table> <hr> <table id="infotable" border=1> <tr><td colspan="21"><b>Javascript needed for this page to work</b></td></tr> <tr><td><b>RRD file</b></td><td id="fname" colspan="20">None</td></tr> <tr> <td><b>DS</b></td><td id="ds_el" colspan="9">None</td> <td colspan="3"><b>RRA</b></td><td id="rra_el" colspan="8">None</td> </tr> <tr><th>Offset</th><th colspan="20">Data</th></tr> </table> <script type="text/javascript"> // Remove the Javascript warning document.getElementById("infotable").deleteRow(0); // fname and rrd_data are the global variable used by all the functions below fname=document.getElementById("input_fname").value; rrd_data=undefined; // This function updates the Web Page with the data from the RRD archive header // when a new file is selected function update_fname() { // Update DS info var nrDSs=rrd_data.getNrDSs() // But first cleanup anything that may be there from before document.getElementById("ds_el").firstChild.data="None"; var oSelect=document.getElementById("select_ds"); while (oSelect.options.length>=1) { oSelect.remove(0); } for (var i=0; i<nrDSs; i++) { var ds_name=rrd_data.getDS(i).getName(); oSelect.options.add(new Option(ds_name,i,false,false)); } // Update RRA info var nrRRAs=rrd_data.getNrRRAs() // But first cleanup anything that may be there from before document.getElementById("rra_el").firstChild.data="None"; var oSelect=document.getElementById("select_rra"); while (oSelect.options.length>=1) { oSelect.remove(0); } for (var i=0; i<nrRRAs; i++) { oSelect.options.add(new Option(i,i,false,false)); } // cleanup // rows may have been added during previous updates var oTable=document.getElementById("infotable"); while (oTable.rows.length>=4) { oTable.deleteRow(3); } // Finally, update the file name and enable the update button document.getElementById("fname").firstChild.data=fname; document.getElementById("dsrra_button").disabled=0; } // This function updates the Web Page with the data from the RRD archive function element_update() { oSelDS=document.getElementById("select_ds"); ds_idx=oSelDS.options[oSelDS.selectedIndex].value; oSelRRA=document.getElementById("select_rra"); rra_idx=oSelRRA.options[oSelRRA.selectedIndex].value; // cleanup // rows may have been added during previous updates var oTable=document.getElementById("infotable"); while (oTable.rows.length>=4) { oTable.deleteRow(3); } // Generic header info document.getElementById("ds_el").firstChild.data=rrd_data.getDS(ds_idx).getName();; document.getElementById("rra_el").firstChild.data=rra_idx; // get RRA info var rra=rrd_data.getRRA(rra_idx); var rows=rra.getNrRows(); var oRow=undefined; for (var i=0; i<rows;i++) { if ((i%20)==0) { // One new row every 20 oRow=oTable.insertRow(-1); var oCell=oRow.insertCell(-1); oCell.innerHTML=i; } var oCell=oRow.insertCell(-1); var el=rra.getElFast(i,ds_idx); if (el!=undefined) { oCell.innerHTML=Math.round(rra.getElFast(i,ds_idx)); } else { oCell.innerHTML="-"; } } } // This is the callback function that, // given a binary file object, // verifies that it is a valid RRD archive // and performs the update of the Web page function update_fname_handler(bf) { var i_rrd_data=undefined; try { var i_rrd_data=new RRDFile(bf); } catch(err) { alert("File "+fname+" is not a valid RRD archive!"); } if (i_rrd_data!=undefined) { rrd_data=i_rrd_data; update_fname() } } // this function is invoked when the RRD file name changes function fname_update() { fname=document.getElementById("input_fname").value; try { FetchBinaryURLAsync(fname,update_fname_handler); } catch (err) { alert("Failed loading "+fname+"\n"+err); } } // Uncomment this part if you want the Web page to load the // default RRD file at load time // //try { // FetchBinaryURLAsync(fname,update_fname_handler); //} catch (err) { // alert("Failed loading "+fname+"\n"+err); //} </script> </body> </html>