forked from lbsadmin/nodeMessageBoard
174 lines
3.7 KiB
HTML
174 lines
3.7 KiB
HTML
|
<!DOCTYPE HTML>
|
||
|
<html>
|
||
|
<head>
|
||
|
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
|
||
|
<style>
|
||
|
body {
|
||
|
margin: 0px;
|
||
|
padding: 0px;
|
||
|
}
|
||
|
#rData{
|
||
|
float:left;
|
||
|
margin-left:100px;
|
||
|
margin-right:auto;
|
||
|
width:470px;
|
||
|
}
|
||
|
#sData{
|
||
|
float: left;
|
||
|
margin-left:100px;
|
||
|
margin-right:auto;
|
||
|
width:470px;
|
||
|
}
|
||
|
h2{
|
||
|
text-align:center;
|
||
|
}
|
||
|
#myCanvas {
|
||
|
border: 2px dashed grey;
|
||
|
}
|
||
|
#btnHolder, #sliderTxt{
|
||
|
text-align:center;
|
||
|
}
|
||
|
</style>
|
||
|
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
|
||
|
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
|
||
|
<script src="/socket.io/socket.io.js"></script>
|
||
|
<script>
|
||
|
// canvas request for all browsers
|
||
|
window.requestAnimFrame = (function(callback) {
|
||
|
return window.requestAnimationFrame ||
|
||
|
window.webkitRequestAnimationFrame ||
|
||
|
window.mozRequestAnimationFrame ||
|
||
|
window.oRequestAnimationFrame ||
|
||
|
window.msRequestAnimationFrame ||
|
||
|
function(callback) {
|
||
|
window.setTimeout(callback, 1000 / 30); // 30 frames per second
|
||
|
};
|
||
|
})();
|
||
|
|
||
|
var iosocket;
|
||
|
var pollOneH = 0;
|
||
|
var poll1;
|
||
|
var text;
|
||
|
var potValue;
|
||
|
var prevPotValue;
|
||
|
//var onOff = false;
|
||
|
var toggleVal = 0;
|
||
|
|
||
|
function animation(poll1,text)
|
||
|
{
|
||
|
var canvas = document.getElementById("myCanvas");
|
||
|
var content = canvas.getContext("2d");
|
||
|
|
||
|
// clear canvas
|
||
|
content.clearRect(0, 0, 460, 540);
|
||
|
|
||
|
content.fillStyle = 'black';
|
||
|
content.textAlign = 'center';
|
||
|
content.font = '20pt Calibri';
|
||
|
|
||
|
// make the wobbely values stop
|
||
|
if(pollOneH*2 > prevPotValue+2 || pollOneH*2 < prevPotValue-2){
|
||
|
prevPotValue = potValue;
|
||
|
potValue = pollOneH*2;
|
||
|
}
|
||
|
|
||
|
content.fillText('Potmeter value: ' + potValue, text.x, text.y);
|
||
|
|
||
|
// render graph
|
||
|
content.fillStyle = 'orange';
|
||
|
content.fillRect(poll1.x,(poll1.y-poll1.h),poll1.w,poll1.h);
|
||
|
|
||
|
content.fill();
|
||
|
|
||
|
// request new frame
|
||
|
requestAnimFrame(function() {
|
||
|
|
||
|
if(poll1.h < pollOneH){
|
||
|
poll1.h += (pollOneH - poll1.h)*.15;
|
||
|
}
|
||
|
else if(poll1.h > pollOneH){
|
||
|
poll1.h -= (poll1.h - pollOneH)*.15;
|
||
|
}
|
||
|
text.y = (poll1.y - poll1.h) - 5;
|
||
|
animation(poll1,text);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function initSocketIO()
|
||
|
{
|
||
|
iosocket = io.connect();
|
||
|
iosocket.on('onconnection', function(value) {
|
||
|
pollOneH = value.pollOneValue/2; // recieve start poll value from server
|
||
|
initPoll();
|
||
|
initButton();
|
||
|
initSlider();
|
||
|
|
||
|
// recieve changed values by other client from server
|
||
|
iosocket.on('updateData', function (recievedData) {
|
||
|
pollOneH = recievedData.pollOneValue/2; // recieve start poll value from server
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function initPoll()
|
||
|
{
|
||
|
poll1 = {
|
||
|
x: 10,
|
||
|
y: 540,
|
||
|
w: 440,
|
||
|
h: 0
|
||
|
}
|
||
|
text = {
|
||
|
x:poll1.w/2,
|
||
|
y:100
|
||
|
}
|
||
|
potValue = pollOneH*2;
|
||
|
prevPotValue = potValue;
|
||
|
animation(poll1,text);
|
||
|
}
|
||
|
|
||
|
function initButton()
|
||
|
{
|
||
|
$( "#check" ).button();
|
||
|
}
|
||
|
|
||
|
function initSlider()
|
||
|
{
|
||
|
$( "#slider" ).slider({
|
||
|
min:0,
|
||
|
max:255,
|
||
|
change: function(event,ui) {
|
||
|
iosocket.emit('sliderval',ui.value);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
window.onload = function() {
|
||
|
initSocketIO();
|
||
|
};
|
||
|
|
||
|
$(document).ready(function() {
|
||
|
$('#check').click(function() {
|
||
|
toggleVal += 1;
|
||
|
toggleVal %= 2;
|
||
|
iosocket.emit('buttonval',toggleVal);
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div id="rData">
|
||
|
<h2>Data from Arduino</h2>
|
||
|
<canvas id="myCanvas" width="460" height="540"></canvas>
|
||
|
</div>
|
||
|
<div id="sData">
|
||
|
<h2>Data to Arduino</h2>
|
||
|
<div id="btnHolder">
|
||
|
<input type="checkbox" id="check" value="toggle"/><label for="check">Toggle LED</label>
|
||
|
</div>
|
||
|
<p id="sliderTxt">LED Dimmer</p>
|
||
|
<div id="slider"></div>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|