Archived
added sc_comm_singleton to coordinate interaction with clients (e.g. web
browser)
This commit is contained in:
1 parent
29bd95fb6d
commit
eced81b5ea
35 files changed
+953
-467
No files matched your search
+33
@@ -0,0 +1,33 @@
|
||||
var ws;
|
||||
|
||||
$(function() {
|
||||
ws = new WebSocket('ws://' + document.location.host + '/ws');
|
||||
ws.onopen = function() {
|
||||
console.log('onopen');
|
||||
};
|
||||
ws.onclose = function() {
|
||||
$('#message').text('Lost connection.');
|
||||
console.log('onclose');
|
||||
};
|
||||
ws.onmessage = function(message) {
|
||||
console.log("got '" + message.data + "'");
|
||||
eval(message.data);
|
||||
};
|
||||
ws.onerror = function(error) {
|
||||
console.log('onerror ' + error);
|
||||
console.log(error);
|
||||
};
|
||||
$('#count').click(function() {
|
||||
ws.send($('#count').val());
|
||||
});
|
||||
$('#close').click(function() {
|
||||
ws.send('close');
|
||||
});
|
||||
$('#die').click(function() {
|
||||
ws.send('die');
|
||||
});
|
||||
});
|
||||
|
||||
set = function(value) {
|
||||
$('#count').val(value)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Hello, world</title>
|
||||
<script src='lib/jquery.min.js'></script>
|
||||
<script src='app.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<input id="count" type="button" value="..."></input>
|
||||
<input id="close" type="button" value="Close"></input>
|
||||
<input id="die" type="button" value="Die"></input>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
/*!
|
||||
* jQuery JavaScript Library v1.5.2
|
||||
* http://jquery.com/
|
||||
*
|
||||
* Copyright 2011, John Resig
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* http://sizzlejs.com/
|
||||
* Copyright 2011, The Dojo Foundation
|
||||
* Released under the MIT, BSD, and GPL Licenses.
|
||||
*
|
||||
* Date: Thu Mar 31 15:28:23 2011 -0400
|
||||
*/
|
||||
(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h==="string"&&(f[h.toLowerCase()]=a.converters[h]);l=k,k=e[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=f[m]||f["* "+k];if(!n){p=b;for(o in f){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=f[j[1]+" "+k];if(p){o=f[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&d.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bR(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bQ(a,b,c,e){if(d.isArray(b)&&b.length)d.each(b,function(b,f){c||bs.test(a)?e(a,f):bQ(a+"["+(typeof f==="object"||d.isArray(f)?b:"")+"]",f,c,e)});else if(c||b==null||typeof b!=="object")e(a,b);else if(d.isArray(b)||d.isEmptyObject(b))e(a,"");else for(var f in b)bQ(a+"["+f+"]",b[f],c,e)}function bP(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bJ,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bP(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bP(a,c,d,e,"*",g));return l}function bO(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){var e=b.toLowerCase().split(bD),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bq(a,b,c){var e=b==="width"?bk:bl,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return f;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}function bc(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}function bb(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function ba(a,b){if(b.nodeType===1){var c=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function _(a,b){if(b.nodeType===1&&d.hasData(a)){var c=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){delete f.handle,f.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)d.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function $(a,b){return d.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Q(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){return a===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){return a.nodeType===1});if(L.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){return d.inArray(a,b)>=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(r,"")===a.type?q.push(g.selector):t.splice(i--,1);f=d(a.target).closest(q,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&p.push({elem:h,handleObj:g,level:m.leveLine truncated
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
<!doctype html>
|
||||
<html lang=en>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<title>system output</title>
|
||||
<style>
|
||||
h1 { font-family: helvetica, sans-serif; margin: 0; }
|
||||
h1+p { margin: 0; }
|
||||
li { font-family: Courier; list-style-type: '>';}
|
||||
pre { margin-top:0; margin-bottom:0;}
|
||||
.term { background-color:black; color:white; font-weight:bold;padding-top:10px; padding-bottom:10px; max-height:400px; overflow: scroll;}
|
||||
span.timestamp { font-family: monospace; white-space: pre;width: 50px;}
|
||||
span.value_1 { background-color: green;}
|
||||
span.value_0 { background-color: blue;}
|
||||
span.value_x { background-color: red;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>system output</h1>
|
||||
<div id="top">
|
||||
</div>
|
||||
<script>
|
||||
String.format = function() {
|
||||
// The string containing the format items (e.g. "{0}")
|
||||
// will and always has to be the first argument.
|
||||
var theString = arguments[0];
|
||||
// start with the second argument (i = 1)
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
// "gm" = RegEx options for Global search (more than one instance)
|
||||
// and for Multiline search
|
||||
var regEx = new RegExp("\\{" + (i - 1) + "\\}", "gm");
|
||||
theString = theString.replace(regEx, arguments[i]);
|
||||
}
|
||||
|
||||
return theString;
|
||||
}
|
||||
String.prototype.paddingLeft = function (paddingValue) {
|
||||
return String(paddingValue + this).slice(-paddingValue.length);
|
||||
};
|
||||
var log = function (n, m) {
|
||||
console.log(m);
|
||||
var data = JSON.parse(m);
|
||||
if( data.hasOwnProperty("message") ) {
|
||||
var ul = document.getElementById(n);
|
||||
var li = document.createElement('li');
|
||||
var p = document.createElement('pre');
|
||||
// i.innerText = new Date().toISOString()+': '+m;
|
||||
p.innerText = '['+data.time.paddingLeft(' ')+'] '+ data.message;
|
||||
li.appendChild(p);
|
||||
ul.appendChild(li);
|
||||
var objDiv = document.getElementById(n + '_container');
|
||||
objDiv.scrollTop = objDiv.scrollHeight;
|
||||
} else if(data.hasOwnProperty("data")){
|
||||
var ul = document.getElementById(n);
|
||||
var li = document.createElement('li');
|
||||
var span = document.createElement('span');
|
||||
span.className="timestamp";
|
||||
span.innerText='['+data.time.paddingLeft(' ')+']'
|
||||
li.appendChild(span);
|
||||
var s = data.data;
|
||||
for ( var i = 0; i < s.length; i++ ){
|
||||
var spani = document.createElement('span');
|
||||
if(s.charAt(i) == 'Z')
|
||||
spani.className="value_z";
|
||||
else if(s.charAt(i) == '1')
|
||||
spani.className="value_1";
|
||||
else if(s.charAt(i) == '0')
|
||||
spani.className="value_0";
|
||||
else if(s.charAt(i) == 'X')
|
||||
spani.className="value_x";
|
||||
spani.appendChild(document.createTextNode('\u00A0'));
|
||||
li.appendChild(spani);
|
||||
}
|
||||
ul.appendChild(li);
|
||||
var objDiv = document.getElementById(n + '_container');
|
||||
objDiv.scrollTop = objDiv.scrollHeight;
|
||||
}
|
||||
}
|
||||
var open_connection = function(name){
|
||||
var s = new WebSocket('ws://'+window.location.host+'/ws/i_simple_system.i_'+name);
|
||||
s.addEventListener('error', function (m) { log(name, new Date().toISOString()+': ===connection error ==='); });
|
||||
s.addEventListener('open', function (m) { log(name, new Date().toISOString()+': ===connection opened==='); });
|
||||
s.addEventListener('message', function (m) { log(name, m.data); });
|
||||
s.addEventListener('close', function (m) { log(name, new Date().toISOString()+': ===connection closed==='); });
|
||||
}
|
||||
var createElem = function(n){
|
||||
var top = document.getElementById('top');
|
||||
var p = document.createElement('p');
|
||||
p.innerText="Component " + n;
|
||||
var div = document.createElement('div');
|
||||
div.className = "term";
|
||||
div.id= n + '_container';
|
||||
var ul = document.createElement('ul');
|
||||
ul.id= n;
|
||||
div.appendChild(ul);
|
||||
top.appendChild(p);
|
||||
top.appendChild(div);
|
||||
open_connection(n);
|
||||
}
|
||||
createElem("uart0");
|
||||
createElem("gpio0");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user