Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterfacePlusHostname NTPClient Onewire RdWebServer SDFileSystem-RTOS mbed-rtos mbed-src
index.html
- Committer:
- Bobty
- Date:
- 2015-10-16
- Revision:
- 23:fd5a5a9f30bc
File content as of revision 23:fd5a5a9f30bc:
<!DOCTYPE html>
<html>
<head>
<title>Gas Use Monitor</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
var pathToServer = "./";
function callAjax(url, callback, contentType, usePost) {
var xmlhttp;
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
callback(xmlhttp.responseText);
}
}
if (typeof usePost !== "undefined") {
xmlhttp.open("POST", url, true);
} else {
xmlhttp.open("GET", url, true);
}
if (typeof contentType !== "undefined") {
if (contentType === "json") {
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
}
}
xmlhttp.send();
}
function ajaxCallback() {}
function dataRefresh() {
updateCurData();
setTimeout(function() {
dataRefresh();
}, 10000);
}
function updateCurData() {
callAjax(pathToServer+"getcurdata", curDataCallback, "json");
}
function curDataCallback(resp) {
console.log("Response " + resp);
var respObj = JSON.parse(resp);
// Handle elements
if ("e" in respObj) {
// Remove temperature and pump elements
var elem = document.getElementById("tempValues");
while (elem.firstChild) {
elem.removeChild(elem.firstChild);
}
var elem = document.getElementById("pumpValues");
while (elem.firstChild) {
elem.removeChild(elem.firstChild);
}
// Extract data from ajax json block and show
var i;
for (i = 0; i < respObj.e.length; i++) {
dataRec = respObj.e[i];
if ("n" in dataRec) {
if (dataRec.n === "gasCount") {
var elem = document.getElementById("gasCountValue");
elem.innerHTML = "" + dataRec.v;
} else if (dataRec.n.indexOf("temp_") > -1) {
var tempStr = dataRec.n.slice(dataRec.n.lastIndexOf("_") + 1);
var elem = document.getElementById("tempValues");
var para = document.createElement("p");
para.className = "label";
var node = document.createTextNode(tempStr);
para.appendChild(node);
elem.appendChild(para);
para = document.createElement("p");
para.className = "value";
node = document.createTextNode("" + dataRec.v);
para.appendChild(node);
elem.appendChild(para);
} else if (dataRec.n.indexOf("pump_") > -1) {
var pumpStr = dataRec.n.slice(dataRec.n.lastIndexOf("_") + 1);
var elem = document.getElementById("pumpValues");
var para = document.createElement("p");
para.className = "label";
var node = document.createTextNode(pumpStr);
para.appendChild(node);
elem.appendChild(para);
para = document.createElement("p");
para.className = "value";
node = document.createTextNode(dataRec.bv ? "On" : "Off");
para.appendChild(node);
elem.appendChild(para);
}
}
}
}
if ("bt" in respObj) {
var elem = document.getElementById("lastUpdateTime");
ud = new Date(respObj.bt * 1000);
elem.innerHTML = "" + ud.getFullYear() + "/" + padZero(ud.getMonth() + 1, 2) + "/" + padZero(ud.getDate(), 2) + " " + padZero(ud.getHours(), 2) + ":" + padZero(ud.getMinutes(), 2) + ":" + padZero(ud.getSeconds(), 2);
}
}
function padZero(val, zeroes) {
return ("00000000" + val).slice(-zeroes);
}
function dispGasNewVal() {
document.getElementById("gasadjust").style.display = "none";
document.getElementById("gasnewval").style.display = "block";
document.getElementById("setgasnewval").style.display = "block";
}
function setGasNewVal() {
document.getElementById("gasadjust").style.display = "block";
document.getElementById("gasnewval").style.display = "none";
document.getElementById("setgasnewval").style.display = "none";
var elem = document.getElementById("gasnewval");
var newVal = elem.value;
callAjax(pathToServer + "setgascount?newVal=" + newVal, setValCallback, "json", "POST")
}
function setValCallback(resp) {
console.log("setGasValue returned " + resp)
updateCurData();
}
function showLog() {
document.getElementById("logtext").style.display = "block";
callAjax(pathToServer+"log.txt", getLogTextCallback);
}
function showUpload() {
document.getElementById("fileuploadform").style.display = "block";
}
function getLogTextCallback(resp) {
var elem = document.getElementById("logtext");
elem.innerHTML = resp;
}
$(document).ready(function() {
$('#UploadNow').click(function() {
var formData = new FormData($('form')[0]);
$.ajax({
url: pathToServer + 'upload', //Server script to process data
type: 'POST',
xhr: function() { // Custom XMLHttpRequest
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) { // Check if upload property exists
myXhr.upload.addEventListener('progress', progressHandlingFunction, false); // For handling the progress of the upload
}
return myXhr;
},
//Ajax events
// beforeSend: beforeSendHandler,
success: completeHandler,
error: errorHandler,
// Form data
data: formData,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
});
});
function progressHandlingFunction(e) {
if (e.lengthComputable) {
$('progress').attr({
value: e.loaded,
max: e.total
});
}
}
function completeHandler(e) {
alert("Completed file upload");
}
function errorHandler(jqXHR, textStatus, errorThrown) {
alert("Error uploading file " + textStatus + " " + errorThrown);
}
});
</script>
<style>
body {
font-family: Helvetica;
line-height: 1rem;
font-size: 12pt;
}
.layout {
display: table;
width: 360px;
margin: 0 auto 0 auto;
}
.pageheading {
background-color: #00344c;
display: block;
min-height: 60px;
text-align: center;
}
.headingtxt {
height: 100%;
padding: 10px;
padding-top: 20px;
color: White;
vertical-align: middle;
text-align: center;
}
.label,
.value,
#gasnewval {
width: 100%;
text-align: center;
}
#gasadjust,
#setgasnewval {
text-align: center;
padding: 10px;
border: 10px;
margin: 5%;
width: 90%;
background-color: grey;
color: White;
}
.label {
color: grey;
margin: 0.6em 0 0.6em 0;
}
.value {
font-size: 110%;
font-weight: bold;
color: green;
margin: 0.6em 0 0.6em 0;
}
.datacell {
display: block;
width: 116px;
min-height: 180px;
margin: 0;
border: solid lightgrey 2px;
float: left;
}
#gasnewval {
display: none;
font-size: 120%;
}
#setgasnewval {
display: none;
}
#logtext {
display: none;
margin: 0;
border: solid lightgrey 2px;
padding: 5px;
width: 346px;
height: 100%;
min-height: 200px;
}
#fileuploadform {
display: none;
border: solid lightgrey 2px;
padding: 5px;
width: 346px;
}
#setupbtns {
display: block;
position: relative;
top:-40px;
left:270px;
height: 0px;
text-align: left;
}
.setupbtn {
display: block;
position: relative;
padding-top: 3px;
}
.setupbtn button {
width: 80px;
}
</style>
</head>
<body onload="dataRefresh();">
<div class="layout">
<div class="pageheading">
<div class="headingtxt">
Gas Use Monitor
</div>
<div id="setupbtns">
<div id="showlog" class="setupbtn"><button href="#" onclick="showLog();">Log</button></div>
<div id="showupload" class="setupbtn"><button href="#" onclick="showUpload();">Upload</button></div>
</div>
</div>
</div>
<div class="layout">
<div class="datacell">
<p class="label">Update time</p>
<p class="value" id="lastUpdateTime"></p>
<p class="label">Gas Count</p>
<p class="value" id="gasCountValue"></p>
<button id="gasadjust" href="#" onclick="dispGasNewVal();">Change</button>
<input id="gasnewval" type="text" name="newGasCountValue" />
<button id="setgasnewval" type="button" href="#" onclick="setGasNewVal();">Set New Value</button>
</div>
<div class="datacell" id="tempValues">
</div>
<div class="datacell" id="pumpValues">
</div>
</div>
<div class="layout">
<textarea id="logtext">
</textarea>
</div>
<div class="layout" id="fileuploadform">
<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="button" value="Upload" id="UploadNow" />
</form>
<progress></progress>
</div>
</body>
</html>