code(JavaScript?){{
?xml version="1.0">
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head>
title>adk-wiki-graph</title>
script language="javascript" type="text/javascript">
var ctx; var bool_first = true; var canvases=new Array; var contexts=new Array; var images; var xList; var yList; var imagesPointer; var pictIndex = 0; var logInterval = 10;
var tabLinks = new Array(); var contentDivs = new Array();
var debugFlag = true;
window.addEventListener?("load", initial, false); var tempArray=new Array; tempArray['p']=0; tempArray['max']=60; tempArray['x-label']=''; var lightArray=new Array; lightArray['p']=0; lightArray['max']=60; lightArray['x-label']=''; var pirArray=new Array; pirArray['p']=0; pirArray['max']=60; pirArray['x-label']=''; var airPolArray?=new Array; airPolArray?['p']=0; airPolArray?['max']=60; airPolArray?['x-label']=''; function initial() {
document.getElementById('message').textContent = "initial";
canvases['tempGraph']=document.getElementById('tempGraph'); canvases['lightGraph']=document.getElementById('lightGraph'); canvases['pirGraph']=document.getElementById('pirGraph'); canvases['airPolGraph']=document.getElementById('airPolGraph');
contexts['tempGraph']=canvases['tempGraph'].getContext('2d'); contexts['lightGraph']=canvases['lightGraph'].getContext('2d'); contexts['pirGraph']=canvases['pirGraph'].getContext('2d'); contexts['airPolGraph']=canvases['airPolGraph'].getContext('2d');
if (document.referrer.length !=0 ){ var myRef = document.referrer; if ( myRef.indexOf( "http://www.google.co.jp" ) == 0 ){ } else if ( myRef == "http://www.red.oit-net.jp/tatsuya/java/index.htm" ){ } else{ document.form1.urlbox.value=myRef; phase1(document.form1.urlbox.value) } } else{ }
} function $(id) { return document.getElementById?(id); } function appendMessage(m){ }
var multiGraphColor?=new Array; multiGraphColor?[0]='rgb(255, 0, 0)'; multiGraphColor?[1]='rgb( 0,255, 0)'; multiGraphColor?[2]='rgb( 0,0 ,255)'; multiGraphColor?[3]='rgb(255, 255, 0)'; multiGraphColor?[4]='rgb( 0,255, 255)'; multiGraphColor?[5]='rgb( 255,0,255)'; multiGraphColor?[6]='rgb(120,120, 0)'; multiGraphColor?[7]='rgb( 90,150, 0)'; multiGraphColor?[8]='rgb(230, 20, 0)'; multiGraphColor?[9]='rgb(200, 50, 0)'; multiGraphColor?[10]='rgb(180, 70, 0)'; multiGraphColor?[11]='rgb(150,100, 0)'; multiGraphColor?[12]='rgb( 60,180, 0)'; multiGraphColor?[13]='rgb( 30,210, 0)'; multiGraphColor?[14]='rgb(255, 0, 20)'; multiGraphColor?[15]='rgb(230, 20,40)'; multiGraphColor?[16]='rgb(200, 50,60)'; multiGraphColor?[17]='rgb(180, 70,80)'; multiGraphColor?[18]='rgb(150,100,100)'; multiGraphColor?[19]='rgb(120,120,120)'; multiGraphColor?[20]='rgb( 90,150,140)'; multiGraphColor?[21]='rgb( 60,180,160)'; multiGraphColor?[22]='rgb( 30,210,180)';
function drawGraph(array,field,area,color) {
var w=250; var h=200; var lm=30; var rm=30; var tm=30; var bm=30; var canvas = canvases[area]; var context = contexts[area]; context.save(); context.beginPath(); context.clearRect(0, 0, w+lm+rm, h+tm+bm); context.strokeStyle='rgb(0, 0, 0)' ; context.strokeRect(lm, tm, w, h); context.lineWidth=1; var xvals=new Array; var lines; if(array['p']<=0) return; var mlines=array['lines']; var lines=mlines[0]; var lmaxw=getMax(lines); var lmax=5; var scale=1; for(var i=0;i<10;i++){ if(lmax>lmaxw) break; if(lmaxw>5*scale) lmax=10*scale; if(lmaxw>10*scale) lmax=20*scale; if(lmaxw>20*scale) lmax=50*scale; scale=scale*10; } var recs=array[0]; var minRecs=recs[0]; var minXVal=getItemFromRecord(array['x-label'],minRecs); var maxRecs=recs[recs.length-1]; var maxXVal=getItemFromRecord(array['x-label'],maxRecs); context.strokeText("0",10,h+tm); context.strokeText(""+lmax,10,tm); context.strokeStyle='rgb(0,0,0)'; context.moveTo(lm,h/5+tm); context.lineTo(lm+w,h/5+tm); context.strokeText(""+(lmax*4/5),10,h/5+tm); context.moveTo(lm,h*2/5+tm); context.lineTo(lm+w,h*2/5+tm); context.strokeText(""+(lmax*3/5),10,h*2/5+tm); context.moveTo(lm,h*3/5+tm); context.lineTo(lm+w,h*3/5+tm); context.strokeText(""+(lmax*2/5),10,h*3/5+tm); context.moveTo(lm,h*4/5+tm); context.lineTo(lm+w,h*4/5+tm); context.strokeText(""+(lmax/5),10,h*4/5+tm); context.stroke(); context.beginPath() var xmax= lines.length; // parseInt(xvals[array['p']-1]); var xmin= 0; // parseInt(xvals[0]); var minxlen=context.measureText(minXVal); var maxxlen=context.measureText(maxXVal); context.strokeText(minXVal,lm-(minxlen.width)/3,h+tm+20); context.strokeText(maxXVal,lm+w-(maxxlen.width)/3,h+tm+20); context.strokeText(field,lm+w/2,h+tm+bm+10); context.strokeStyle='rgb(0,0,0)'; for(var i=1;i<24;i++){ context.moveTo(lm+(i*w)/24,tm); context.lineTo(lm+(i*w)/24,h+tm); } context.strokeText("12",lm+w/2-5,h+tm+15); context.strokeText("6",lm+w/4-5,h+tm+15); context.strokeText("18",lm+(w*3)/4-5,h+tm+15);
var xwidth=w; var yheight=h; if(xmax-xmin==0) return; context.strokeStyle=color; var x0=xwidth*(xmin-xmin)/(xmax-xmin); var y0=yheight-yheight*lines[0]/lmax; context.moveTo(x0+lm,y0+tm); for (var i = 1; i <lines.length; i ++) { var x1=xwidth*(i-xmin)/(xmax-xmin); var y1=yheight-yheight*(lines[i])/(lmax); context.lineTo(x1+lm, y1+tm); } context.stroke(); context.restore();
}
function getFloatDataOfLabel?(label,array){
var mlines=new Array; var lines=new Array; var rec=array[0]; var p=0; for(var j=0;j<rec.length;j++){ var oneRecord=rec[j]; var ds=getItemFromRecord(label, oneRecord); ds=ds.replace(/[\n\r]/g,""); if(ds==""){ } else{ try{ lines[p]=parseFloat(ds); p++; } catch(e) { alert(e+"...parseFloat("+ds+")"); continue; } } } mlines[0]=lines; array['lines']=mlines;
}
function getItemFromRecord?(label, rec){
var items=rec.split(','); for(var j=0;j<items.length;j++){ var item=items[j]; var pos=item.indexOf(label+"="); if(pos>=0){ var ds=item.substring((label+"=").length+pos); if(ds=="") ds=0; return ds; } } return "";
}
function getMax(data){ var max=data[0]; for(var i=1;i<data.length;i++){ if(data[i]>max) max=data[i]; } return max; } function getMin(data){ var min=data[0]; for(var i=1;i<data.length;i++){ if(data[i]<min) min=data[i]; } return min; }
function requestNextFrame?() { wSocket.send("get"); }
function onUnload() { wSocket.close(); } function onError(){ appendMessage("WebScreenShare? : Error.\n"); } function buttonClicked(btnName){
if(btnName=="joinButton"){ // Join the Group var addr=document.getElementById('rootAddress').value; var port=document.getElementById('rootPort').value; var sending="action join "+addr+" "+port; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="leaveButton"){ // Join the Group var sending="action leave group"; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="connectButton"){ var addr=document.getElementById('upAddress').value; var port=document.getElementById('upPort').value; var sending="action connect "+addr+" "+port; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="disConnectButton"){ var sending="action disConnect"; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="listenStartButton"){ } else if(btnName=="send"){ var cmd=document.getElementById('commandField').value; var sending="action send "+cmd; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="myHostListenReStart"){ var addr=document.getElementById('myHostPort').value; var port=document.getElementById('relayWSPort').value; var sending="action myHostRestart "+addr+" "+port; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="adminRestartButton"){ var addr=document.getElementById('adminPPort').value; var port=document.getElementById('adminWSPort').value; var sending="action adminRestart "+addr+" "+port; appendMessage(sending+"\n"); wSocket.send(sending); } else if(btnName=="clientsAssignmentPolicyChanged"){ var v=document.getElementById('clientsAssignmentPolicy').value; var sending="action clientsAssignmentPolicy "+v; appendMessage(sending); wSocket.send(sending); } else if(btnName=="maxWebClientsChanged"){ var v=document.getElementById('clientsLimit').value; var sending="action clientsLimit "+v; appendMessage(sending); wSocket.send(sending); } else if(btnName=="traceLevelCheckChanged"){ var v="off"; if(document.getElementById('traceLevelChk').checked) v="on"; var sending="action traceLevelCheck "+v; appendMessage(sending); wSocket.send(sending); } else if(btnName=="traceLevelChanged"){ var v=document.getElementById('traceLevel').value; var sending="action traceLevelx "+v; appendMessage(sending); wSocket.send(sending); } else if(btnName=="logLevelCheckChanged"){ var v="off"; if(document.getElementById('logLevelChk').checked) v="on"; var sending="action logLevelCheck "+v; appendMessage(sending); wSocket.send(sending); } else if(btnName=="logLevelChanged"){ var v=document.getElementById('logLevel').value; var sending="action logLevelx "+v; appendMessage(sending); wSocket.send(sending); } else if(btnName=="showPrivateServers"){ var sending="action showPrivateServers "; appendMessage(sending); wSocket.send(sending); } else if(btnName=="gotoRoot"){ var addr=document.getElementById('rootAddress').value; var port=8880; var xurl="http://"+addr+":"+port+"/controller.html"; location.href=xurl; } else if(btnName=="gotoUp"){ var addr=document.getElementById('upAddress').value; var port=8880; var xurl="http://"+addr+":"+port+"/controller.html"; location.href=xurl; } else if(btnName=="gotoLeft"){ var addr=document.getElementById('downLeft').value; var addr2=addr.split("/"); var port=8880; var xurl="http://"+addr2[0]+":"+port+"/controller.html"; location.href=xurl; } else if(btnName=="gotoRight"){ var addr=document.getElementById('downRight').value; var addr2=addr.split("/"); var port=8880; var xurl="http://"+addr2[0]+":"+port+"/controller.html"; location.href=xurl; }
} function onChangeFunction?(name,value){
if(name=="myAddressList"){ var sending="action myAddress "+value; appendMessage(sending); wSocket.send(sending); }
}
function getFloatDataOf?(intext,array,kind,xKind,field){
if(getNumbers(intext,array,kind)){ getFloatDataOfLabel(field,array); array['x-label']=xKind; }
}
function getMultiDataOf?(intext,marray,kind,field){
var clog=grep(intext,kind); if(clog==null) return false; var date=new Date(); var timeNow=date.getTime(); clog=timeNow+","+clog; var recarray=clog.split(","); var ds=getItemFromRecord('id',recarray); if(ds=="") return false; if(marray['labels']==null) { marray['lmax']=0; var labels=new Array; marray['labels']=labels; } var labels=marray['labels']; for(var i=0;i<marray['lmax'];i++){ if(ds==labels[i]) break; } if(i>=marray['lmax']) { labels[marray['lmax']]=ds; marray['lmax']++; } marray['lables']=labels; if(marray[ds]==null){ var array=new Array; array['p']=0; array['max']=60; marray[ds]=array; } var array=marray[ds]; if(array['p']>=array['max']){ for(var i=0;i<array['max'];i++){ array[i]=array[i+1]; } array['p']--; } array[array['p']]=recarray; array['p']++; var data=getFloatDataOfLabel(field,array); array['lines']=data; return true;
} function getNumbers(intext,array,kind){
var clog=grep(intext,kind); if(clog==null) return false; var date=new Date(); var clog2 = clog.replace(/[\n\r]/g,"\n"); var recarray=clog2.split("\n"); recarray.length=recarray.length-1; if(array['p']>=array['max']){ for(var i=0;i<array['max'];i++){ array[i]=array[i+1]; } array['p']--; } array[array['p']]=recarray; array['p']++; return true; // var
}
function getMultiNumbers?(intext,array,kind){
var clog=grep(intext,kind); if(clog==null) return false; var date=new Date(); var timeNow=date.getTime(); clog=timeNow+","+clog; var recarray=clog.split(","); if(array['p']>=array['max']){ for(var i=0;i<array['max'];i++){ array[i]=array[i+1]; } array['p']--; } array[array['p']]=recarray; array['p']++; return true; // var
} function grep(intext,matchtext){
if(intext.indexOf(matchtext)>=0){ return intext; } return null;
}
function createhttprequest(){
var request=null; if("XMLHttpRequest" in window){ request= new XMLHttpRequest(); } else if("ActiveXObject" in window){ try{ request=new ActiveXobject("Msxml2.XMLHTTP"); }catch(e){ try{ request=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ } } } return request;
}
var request;
function requestsource(url){
request=createhttprequest();
request.open("GET",url,true); request.onreadystatechange=sourceget; request.send(null); }
function filter(intext,key){
var lines = intext.split( '\n' ); var outText=""; for ( var i = 0; i < lines.length; i++ ) { // 空行は無視する var l=grep(lines[i],key); if(l!=null){ outText=outText+l+"\n"; } } return outText;
}
function sourceget(){
var xpage; if (request.readyState == 4 && request.status == 200){
xpage=request.responseText; var prePosition=xpage.search("<pre>"); var postPosition=xpage.search("</pre>"); var ypage=xpage.substring(prePosition,postPosition); var dataPosition=ypage.search("result:"); var dataPage=ypage.substring(dataPosition); var work1=dataPage.replace(/\r\n|\r/g, "\n");
/*
var lines = work1.split( '\n' ); var outArray = new Array(); for ( var i = 0; i < lines.length; i++ ) { // 空行は無視する if ( lines[i].search("a-2")>0) { outArray.push( lines[i]+"\n" ); } }
document.getElementById('source').value=work1; phase2();
} else{
}
}
function phase1(url){
requestsource(url);
} function phase2(){
var text=document.getElementById('source').value; var wtext=filter(text,'device=a-2'); getFloatDataOf(wtext,tempArray,'device=a-2','Date','cd'); drawGraph(tempArray,'Temprature(c)', 'tempGraph', 'rgb(255,0,0)'); wtext=filter(text,'device=a-1'); getFloatDataOf(wtext,lightArray,'device=a-1','Date','ave'); drawGraph(lightArray,'Lux', 'lightGraph', 'rgb(0,255,0)'); wtext=filter(text,'device=a-0'); getFloatDataOf(wtext,pirArray,'device=a-0','Date','ave'); drawGraph(pirArray, 'Pir', 'pirGraph','rgb(0,0,255)'); wtext=filter(text,'device=a-3'); getFloatDataOf(wtext,airPolArray,'device=a-3','Date','ave'); drawGraph(airPolArray, 'AirPol', 'airPolGraph','rgb(255,255,0)');
}
/script>
/head>
body> A URL of the adk-wiki-1(daily) collected data;
form name="form1">
input type="text" name="urlbox" size="40" value="http://www.yama-lab.org/adk-wiki-1/index.php?daily-1-1">
input type="button" value="Show the graph" onclick="phase1(document.form1.urlbox.value)">
/form>
<p>Graph Area</p> <canvas id="tempGraph" width="350" height="300"></canvas> <canvas id="lightGraph" width="350" height="300"></canvas> <canvas id="pirGraph" width="350" height="300"></canvas> <canvas id="airPolGraph" width="350" height="300"></canvas>
<br>
textarea id="source" name="source" rows="20" cols="100"> source data
/textarea>
textarea id="message" name="message" rows="20" cols="100">
/textarea>
/body>
/html>
}}