”2016-06-14”

This commit is contained in:
Martin Donnelly 2016-06-14 16:45:04 +01:00
parent 3b08c6bfe7
commit b90759f36f
33 changed files with 1734 additions and 4039 deletions

View File

@ -1,8 +1,3 @@
body {
font-family: Ubuntu, "Helvetica Neue", Helvetica, arial, sans-serif;
}
#lightR, #projR { color: red !important; }
@ -17,7 +12,6 @@ body {
}
.h105 {
height: 100px;
}
@ -82,57 +76,6 @@ body {
/* Smartphones (portrait and landscape) ----------- */
@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
/* Styles */
.time, .date, .temp {
font-family: 'Ubuntu Condensed', sans-serif;
font-size: 33px;
/*color: #ff0000;*/
}
.time {
font-size: 50px;
line-height: 1;
}
.time span.hour:after {
content: "\a";
white-space: pre;
}
.temp {
font-size: 70px;
}
.temp::after {
content: "°";
}
.wd-we {
font-size: 75%;
}
.mo {
font-size: 85%;
}
.mo.mo-1, .mo.mo-10 {
font-size: 70%;
}
.mo.mo-2 {
font-size: 65%;
}
.mo.mo-8 {
font-size: 80%;
}
.mo.mo-9 {
font-size: 55%;
}
.mo.mo-11, .mo.mo-12 {
font-size: 60%;
}
}
@ -258,3 +201,13 @@ color:#78909C;
{
color:#2196F3;
}
/* svg classes */
svg text {
font-family:'Ubuntu Condensed',sans-serif;
font-size:12;
fill: #004c6d;
text-align:right;
}

View File

@ -1,9 +1,14 @@
@import "app/libs/mui/src/sass/mui/colors";
$mui-body-bg-color: mui-color('grey', '100');
$mui-body-bg-color: /*#003F5a*/ mui-color('grey', '800');
$mui-base-font-color: rgba(#FFF, 0.87) !default;
$mui-base-font-family: Ubuntu, "Helvetica Neue", Helvetica, Arial, Verdana, Tahoma !default;
$mui-panel-bg-color : /*#004c6d*/ mui-color('grey', '900');
//$mui-accent-color: #bad649;
$mui-accent-color: #004c6d;
$mui-accent-color: #00aeef;
$mui-btn-accent-font-color: #004c6d;
//$mui-accent-color-dark: mui-color('green', 'A100');
$mui-accent-color-dark: #004c6d;

File diff suppressed because one or more lines are too long

View File

@ -92,6 +92,7 @@
<!-- build:vendor -->
<script type="text/javascript" src="libs/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="libs/mui/packages/cdn/js/mui.js"></script>
<script type="text/javascript" src="libs/ejs/ejs.js"></script>
<script type="text/javascript"
src="libs/bluebird/js/browser/bluebird.js"></script>
<!-- endbuild -->

View File

@ -99,7 +99,13 @@ var CC2650_BAR = function(p) {
var temp = this.frameID + '-t';
var pressure = this.frameID + '-p';
var row = $('<div />', {class: 'mui-row'});
var settings = {data: {baseID: this.frameID}};
var html = new EJS({url: './partials/cc2650_barometer.ejs'}).render(settings);
this.$id.append(html);
/* var row = $('<div />', {class: 'mui-row'});
$('<div />', { class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'Temp:'}).appendTo(row);
@ -150,7 +156,7 @@ var CC2650_BAR = function(p) {
class: 'mui-tabs__pane',
id: (pressure + '-pane')
}).append(blankChart));
}
}*/
this.$result.temp = $('#' + temp);
this.$result.pressure = $('#' + pressure);

View File

@ -104,7 +104,14 @@ var CC2650_TMP = function(p) {
var temp = this.frameID + '-t';
var amb = this.frameID + '-a';
var row = $('<div />', {class: 'mui-row'});
var settings = {data: {baseID: this.frameID}};
var html = new EJS({url: './partials/cc2650_thermopile.ejs'}).render(settings);
this.$id.append(html);
/*var row = $('<div />', {class: 'mui-row'});
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'Temp:'}).appendTo(row);
@ -152,7 +159,7 @@ var CC2650_TMP = function(p) {
this.$id.append($('<div>',{class: 'mui-tabs__pane',id: (amb + '-pane')}).append(blankChart));
}
*/
this.$result.temp = $('#' + temp);

View File

@ -5,7 +5,7 @@
* Time: 10:13
*
*/
/* global CAPABILITY, inheritsFrom, capabilityManager */
/* global CAPABILITY, inheritsFrom, capabilityManager, EJS, ejs */
/* global ble */
/* jshint browser: true , devel: true*/
@ -48,6 +48,13 @@ var TSL = function(p) {
this.$result = {temp: null, tempMax: null, tempMin: null};
this.data = [];
this.setFrame();
this.read = {};
this.html = {};
this.history = null;
this.historyloops = 0;
this.arrayToHex = function(a) {
return a.map(function(i) {
@ -55,20 +62,122 @@ var TSL = function(p) {
});
};
this.convertToTemp = function(raw) {
this.convertToPercent = function(raw) {
return ((raw[1] << 8) + (raw[0])) / 100;
};
/*
this.$result.temp = $('#' + tslTemp);
this.convertToPressure = function(raw) {
return ((raw[1] << 8) + (raw[0])) ;
};
this.convertToHumidity = function(raw) {
return ((raw[1] << 8) + (raw[0])) ;
};
/*
This.$result.temp = $('#' + tslTemp);
this.$result.tempMax = $('#' + tslTempMax);
this.$result.tempMin = $('#' + tslTempMin);
*/
this.onReadVelState = function(d) {
var raw = new Uint8Array(d);
var output = [], signedOutput = new Int16Array(9);
// Var humidity = this.convertToPercent(raw);
console.log('Vel State:', raw);
// This.$result.h.text(humidity.toFixed(2) + '%');
/* output.push(((raw[1] << 8) + (raw[0])));
output.push(((raw[3] << 8) + (raw[2])));
output.push(((raw[5] << 8) + (raw[4])));
output.push(((raw[7] << 8) + (raw[6])));
output.push(((raw[9] << 8) + (raw[8])));
output.push(((raw[11] << 8) + (raw[10])));
output.push(((raw[13] << 8) + (raw[12])));
output.push(((raw[15] << 8) + (raw[14])));
output.push(((raw[17] << 8) + (raw[16])));
for (var t = 0;t < output.length;t++) {
signedOutput[t] = (output[t] * 1.0) / (32768/ 2);
}
console.log(output);
console.log(signedOutput);*/
};
this.onReadAccelState = function(d) {
var raw = new Uint8Array(d);
var output = [], signedOutput = new Int16Array(9);
// Var humidity = this.convertToPercent(raw);
console.log('Accel State:', raw);
// This.$result.h.text(humidity.toFixed(2) + '%');
output.push(((raw[1] << 8) + (raw[0])));
output.push(((raw[3] << 8) + (raw[2])));
output.push(((raw[5] << 8) + (raw[4])));
output.push(((raw[7] << 8) + (raw[6])));
output.push(((raw[9] << 8) + (raw[8])));
output.push(((raw[11] << 8) + (raw[10])));
output.push(((raw[13] << 8) + (raw[12])));
output.push(((raw[15] << 8) + (raw[14])));
output.push(((raw[17] << 8) + (raw[16])));
for (var t = 0;t < output.length;t++) {
signedOutput[t] = (output[t] * 1.0) / (32768/ 2);
}
console.log(output);
console.log(signedOutput);
};
this.onReadHumidityState = function(d) {
var raw = new Uint8Array(d);
var humidity = this.convertToPercent(raw);
console.log('Humidity State:', humidity);
this.$result.h.text(humidity.toFixed(2) + '%');
};
this.onReadHumidityMaxState = function(d) {
var raw = new Uint8Array(d);
var humidity = this.convertToPercent(raw);
console.log('Humidity Max State:', humidity);
this.$result.hMax.text(humidity.toFixed(2) + '%');
};
this.onReadHumidityMinState = function(d) {
var raw = new Uint8Array(d);
var humidity = this.convertToPercent(raw);
console.log('Humidity Min State:', humidity);
this.$result.hMin.text(humidity.toFixed(2) + '%');
};
this.onReadPressureState = function(d) {
var raw = new Uint8Array(d);
var pressure = this.convertToPressure(raw);
console.log('Pressure State:', pressure);
this.$result.p.text(pressure + 'Pa');
};
this.onReadPressureMaxState = function(d) {
var raw = new Uint8Array(d);
var pressure = this.convertToPressure(raw);
console.log('Pressure Max State:', pressure);
this.$result.pMax.text(pressure + 'Pa');
};
this.onReadPressureMinState = function(d) {
var raw = new Uint8Array(d);
var pressure = this.convertToPressure(raw);
console.log('Pressure Min State:', pressure);
this.$result.pMin.text(pressure + 'Pa');
};
this.onReadTempState = function(d) {
var raw = new Uint8Array(d);
var temp = this.convertToTemp(raw);
var temp = this.convertToPercent(raw);
console.log('Temp State:', temp);
this.$result.temp.text(temp.toFixed(2) + '°C');
@ -76,27 +185,152 @@ var TSL = function(p) {
this.onReadTempMax = function(d) {
var raw = new Uint8Array(d);
var temp = this.convertToTemp(raw);
var temp = this.convertToPercent(raw);
console.log('Temp Max:', temp);
this.$result.tempMax.text(temp.toFixed(2) + '°C');
};
this.onReadTempMin = function(d) {
var raw = new Uint8Array(d);
var temp = this.convertToTemp(raw);
var temp = this.convertToPercent(raw);
console.log('Temp Min:', temp);
this.$result.tempMin.text(temp.toFixed(2) + '°C');
};
this.onHistoryAck = function(d) {
var raw = new Uint8Array(d);
var raw16 = new Uint16Array(d);
console.log('History Ack:', raw, raw16);
//this.$result.temp.text(temp.toFixed(2) + '°C');
};
this.onReadHistory = function(d) {
var raw = new Uint8Array(d);
console.log('History:', raw);
//this.$result.temp.text(temp.toFixed(2) + '°C');
this.historyloops++;
this.historyAck();
};
this.onHistorySize = function(d) {
var raw = new Uint8Array(d);
var raw16 = new Uint16Array(d);
console.log('History Size:', raw, raw16);
//this.$result.temp.text(temp.toFixed(2) + '°C');
this.history = new Uint8Array(raw16[0]);
this.readHistory();
};
this.historySize = function() {
console.log('historySize');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.historySize,
this.onHistorySize.bind(this),
this.onError);
};
this.historyAck = function() {
console.log('historyAck');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.historyAck,
this.onHistoryAck.bind(this),
this.onError);
};
this.readHistory = function() {
console.log('readTempState');
console.log('readHistory');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.history,
this.onReadTempState.bind(this),
this.onReadHistory.bind(this),
this.onError);
};
this.readAccelState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.accelerationMax,
this.onReadAccelState.bind(this),
this.onError);
};
this.readVelState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.velocityMax,
this.onReadVelState.bind(this),
this.onError);
};
this.readHumidityState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.humidityValue,
this.onReadHumidityState.bind(this),
this.onError);
};
this.readHumidityMaxState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.humidityMax,
this.onReadHumidityMaxState.bind(this),
this.onError);
};
this.readHumidityMinState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.humidityMin,
this.onReadHumidityMinState.bind(this),
this.onError);
};
this.readPressureState = function() {
console.log('readPressureState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.preValue,
this.onReadPressureState.bind(this),
this.onError);
};
this.readPressureMaxState = function() {
console.log('readPressureMaxState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.presMaximum,
this.onReadPressureMaxState.bind(this),
this.onError);
};
this.readPressureMinState = function() {
console.log('readPressureMinState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.presMinimum,
this.onReadPressureMinState.bind(this),
this.onError);
};
this.readTempState = function() {
console.log('readTempState');
ble.read(this.deviceID,
@ -124,6 +358,27 @@ var TSL = function(p) {
this.onError);
};
this.readServices = function() {
this.readTempState();
this.readTempMax();
this.readTempMin();
this.readPressureState();
this.readPressureMaxState();
this.readPressureMinState();
this.readHumidityState();
this.readHumidityMaxState();
this.readHumidityMinState();
this.readAccelState();
this.readVelState();
this.historySize();
// this.readHistory();
// setTimeout(this.readServices.bind(this),20000);
};
this.startService = function() {
if (this.deviceID !== null) {
@ -132,10 +387,7 @@ var TSL = function(p) {
console.log(this.serviceDef);
this.insertFrame();
this.readTempState();
this.readTempMax();
this.readTempMin();
this.readServices();
}
@ -161,41 +413,24 @@ var TSL = function(p) {
this.superClass_.insertFrame.call(self);
var tslTemp = this.frameID + '-t';
var tslTempMax = this.frameID + '-tmax';
var tslTempMin = this.frameID + '-tmin';
var tslP = this.frameID + '-p';
var tslH = this.frameID + '-h';
var row = $('<div />', {class: 'mui-row'});
var settings = {data: {baseID: this.frameID}};
var html = new EJS({url: './partials/tsl.ejs'}).render(settings);
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'Temp:'}).appendTo(
row);
$('<div />',
{class: 'mui-col-xs-9 mui--text-dark', id: tslTemp}).appendTo(row);
this.$id.append(row);
row = $('<div />', {class: 'mui-row'});
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'TMax:'}).appendTo(
row);
$('<div />',
{class: 'mui-col-xs-3 mui--text-dark', id: tslTempMax}).appendTo(row);
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'TMin:'}).appendTo(
row);
$('<div />',
{class: 'mui-col-xs-3 mui--text-dark', id: tslTempMin}).appendTo(row);
this.$id.append(row);
this.$id.append(html);
this.$result.temp = $('#' + tslTemp);
this.$result.tempMax = $('#' + tslTempMax);
this.$result.tempMin = $('#' + tslTempMin);
this.$result.tempMax = $('#' + tslTemp + 'max');
this.$result.tempMin = $('#' + tslTemp + 'min');
this.$result.p = $('#' + tslP);
this.$result.pMax = $('#' + tslP + 'max');
this.$result.pMin = $('#' + tslP + 'min');
this.$result.h = $('#' + tslH);
this.$result.hMax = $('#' + tslH + 'max');
this.$result.hMin = $('#' + tslH + 'min');
};

View File

@ -0,0 +1,42 @@
<%= data.baseID + 'pressure-line' %>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-t' %>">--</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Pressure:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-p' %>">--</div>
</div>
<ul class="mui-tabs__bar mui-tabs__bar--justified">
<li class="mui--is-active tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-t-pane' %>">Temperature</a>
</li>
<li class="tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-p-pane' %>">Pressure</a>
</li>
</ul>
<div class="mui-tabs__pane mui--is-active" id="<%= data.baseID + '-t-pane' %>">
<svg id="<%= data.baseID + 'temp-svg' %>" width="300" height="150" fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'temp-txt1' %>" x="36" y="15" text-anchor="end">--</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'temp-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>
<div class="mui-tabs__pane" id="<%= data.baseID + '-p-pane' %>">
<svg id="<%= data.baseID + 'pressure-svg' %>" width="300" height="150" fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'pressure-txt1' %>" x="36" y="15" text-anchor="end">--</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'pressure-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>

View File

@ -0,0 +1,48 @@
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-3 mui--text-light mui--text-left"
id="<%= data.baseID + '-t' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Ambient:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-a' %>">--
</div>
</div>
<ul class="mui-tabs__bar mui-tabs__bar--justified">
<li class="tabOnWhite mui--is-active"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-t-pane' %>">Temperature</a>
</li>
<li class="tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-a-pane' %>">Ambient</a>
</li>
</ul>
<div class="mui-tabs__pane mui--is-active" id="<%= data.baseID + '-t-pane' %>">
<svg id="<%= data.baseID + 'temp-svg' %>" width="300" height="150"
fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'temp-txt1' %>" x="36" y="15"
text-anchor="end">--
</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'temp-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2" points=""></polyline>
</svg>
</div>
<div class="mui-tabs__pane" id="<%= data.baseID + '-a-pane' %>">
<svg id="<%= data.baseID + 'ambient-svg' %>" width="300" height="150"
fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'ambient-txt1' %>" x="36" y="15"
text-anchor="end">--
</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'ambient-line' %>" fill="none"
stroke="#2196F3" text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>

View File

@ -0,0 +1,45 @@
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-9 mui--text-light" id="<%= data.baseID + '-t' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">TMax:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-tmax' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">TMin:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-tmin' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Pressure:</div>
<div class="mui-col-xs-9 mui--text-light" id="<%= data.baseID + '-p' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">PMax:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-pmax' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">PMin:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-pmin' %>">--
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Humidity:</div>
<div class="mui-col-xs-9 mui--text-light" id="<%= data.baseID + '-h' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">HMax:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-hmax' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">HMin:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-hmin' %>">--
</div>
</div>

View File

@ -79,6 +79,14 @@ gulp.task('mui', function() {
.pipe(gulp.dest('www/css'));
});
gulp.task('customMUI', function() {
return gulp.src(['app/css/custom.scss'])
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
//.pipe(cssnano())
.pipe(rename('mui.custom.css'))
.pipe(gulp.dest('app/css'));
});
gulp.task('styles', function() {
return gulp.src(['app/css/app.css','app/css/progress.css'])
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
@ -149,3 +157,13 @@ gulp.task('watch',function() {
gulp.watch('app/**/*',['copy']);
});
gulp.task('MUIWatcher', function() {
'use strict';
gulp.start('customMUI','watchMUI');
});
gulp.task('watchMUI',function() {
gulp.watch('app/css/custom.scss',['customMUI']);
});

View File

@ -0,0 +1,16 @@
var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(path.join(__dirname, 'www')));
/*
App.get('/', function (req, res) {
res.send('Hello World!');
});
*/
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});

View File

@ -34,5 +34,8 @@
"gulp-watch": "^4.3.6",
"jshint": "^2.9.2",
"scss": "^0.2.4"
},
"dependencies": {
"express": "^4.13.4"
}
}

View File

@ -1,8 +1,3 @@
body {
font-family: Ubuntu, "Helvetica Neue", Helvetica, arial, sans-serif;
}
#lightR, #projR { color: red !important; }
@ -17,7 +12,6 @@ body {
}
.h105 {
height: 100px;
}
@ -82,57 +76,6 @@ body {
/* Smartphones (portrait and landscape) ----------- */
@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
/* Styles */
.time, .date, .temp {
font-family: 'Ubuntu Condensed', sans-serif;
font-size: 33px;
/*color: #ff0000;*/
}
.time {
font-size: 50px;
line-height: 1;
}
.time span.hour:after {
content: "\a";
white-space: pre;
}
.temp {
font-size: 70px;
}
.temp::after {
content: "°";
}
.wd-we {
font-size: 75%;
}
.mo {
font-size: 85%;
}
.mo.mo-1, .mo.mo-10 {
font-size: 70%;
}
.mo.mo-2 {
font-size: 65%;
}
.mo.mo-8 {
font-size: 80%;
}
.mo.mo-9 {
font-size: 55%;
}
.mo.mo-11, .mo.mo-12 {
font-size: 60%;
}
}
@ -258,3 +201,13 @@ color:#78909C;
{
color:#2196F3;
}
/* svg classes */
svg text {
font-family:'Ubuntu Condensed',sans-serif;
font-size:12;
fill: #004c6d;
text-align:right;
}

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,14 @@
@import "app/libs/mui/src/sass/mui/colors";
$mui-body-bg-color: mui-color('grey', '100');
$mui-body-bg-color: /*#003F5a*/ mui-color('grey', '800');
$mui-base-font-color: rgba(#FFF, 0.87) !default;
$mui-base-font-family: Ubuntu, "Helvetica Neue", Helvetica, Arial, Verdana, Tahoma !default;
$mui-panel-bg-color : /*#004c6d*/ mui-color('grey', '900');
//$mui-accent-color: #bad649;
$mui-accent-color: #004c6d;
$mui-accent-color: #00aeef;
$mui-btn-accent-font-color: #004c6d;
//$mui-accent-color-dark: mui-color('green', 'A100');
$mui-accent-color-dark: #004c6d;

File diff suppressed because one or more lines are too long

View File

@ -92,6 +92,7 @@
<!-- build:vendor -->
<script type="text/javascript" src="libs/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="libs/mui/packages/cdn/js/mui.js"></script>
<script type="text/javascript" src="libs/ejs/ejs.js"></script>
<script type="text/javascript"
src="libs/bluebird/js/browser/bluebird.js"></script>
<!-- endbuild -->

View File

@ -99,7 +99,13 @@ var CC2650_BAR = function(p) {
var temp = this.frameID + '-t';
var pressure = this.frameID + '-p';
var row = $('<div />', {class: 'mui-row'});
var settings = {data: {baseID: this.frameID}};
var html = new EJS({url: './partials/cc2650_barometer.ejs'}).render(settings);
this.$id.append(html);
/* var row = $('<div />', {class: 'mui-row'});
$('<div />', { class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'Temp:'}).appendTo(row);
@ -150,7 +156,7 @@ var CC2650_BAR = function(p) {
class: 'mui-tabs__pane',
id: (pressure + '-pane')
}).append(blankChart));
}
}*/
this.$result.temp = $('#' + temp);
this.$result.pressure = $('#' + pressure);

View File

@ -104,7 +104,14 @@ var CC2650_TMP = function(p) {
var temp = this.frameID + '-t';
var amb = this.frameID + '-a';
var row = $('<div />', {class: 'mui-row'});
var settings = {data: {baseID: this.frameID}};
var html = new EJS({url: './partials/cc2650_thermopile.ejs'}).render(settings);
this.$id.append(html);
/*var row = $('<div />', {class: 'mui-row'});
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'Temp:'}).appendTo(row);
@ -152,7 +159,7 @@ var CC2650_TMP = function(p) {
this.$id.append($('<div>',{class: 'mui-tabs__pane',id: (amb + '-pane')}).append(blankChart));
}
*/
this.$result.temp = $('#' + temp);

View File

@ -5,7 +5,7 @@
* Time: 10:13
*
*/
/* global CAPABILITY, inheritsFrom, capabilityManager */
/* global CAPABILITY, inheritsFrom, capabilityManager, EJS, ejs */
/* global ble */
/* jshint browser: true , devel: true*/
@ -48,6 +48,13 @@ var TSL = function(p) {
this.$result = {temp: null, tempMax: null, tempMin: null};
this.data = [];
this.setFrame();
this.read = {};
this.html = {};
this.history = null;
this.historyloops = 0;
this.arrayToHex = function(a) {
return a.map(function(i) {
@ -55,20 +62,122 @@ var TSL = function(p) {
});
};
this.convertToTemp = function(raw) {
this.convertToPercent = function(raw) {
return ((raw[1] << 8) + (raw[0])) / 100;
};
/*
this.$result.temp = $('#' + tslTemp);
this.convertToPressure = function(raw) {
return ((raw[1] << 8) + (raw[0])) ;
};
this.convertToHumidity = function(raw) {
return ((raw[1] << 8) + (raw[0])) ;
};
/*
This.$result.temp = $('#' + tslTemp);
this.$result.tempMax = $('#' + tslTempMax);
this.$result.tempMin = $('#' + tslTempMin);
*/
this.onReadVelState = function(d) {
var raw = new Uint8Array(d);
var output = [], signedOutput = new Int16Array(9);
// Var humidity = this.convertToPercent(raw);
console.log('Vel State:', raw);
// This.$result.h.text(humidity.toFixed(2) + '%');
/* output.push(((raw[1] << 8) + (raw[0])));
output.push(((raw[3] << 8) + (raw[2])));
output.push(((raw[5] << 8) + (raw[4])));
output.push(((raw[7] << 8) + (raw[6])));
output.push(((raw[9] << 8) + (raw[8])));
output.push(((raw[11] << 8) + (raw[10])));
output.push(((raw[13] << 8) + (raw[12])));
output.push(((raw[15] << 8) + (raw[14])));
output.push(((raw[17] << 8) + (raw[16])));
for (var t = 0;t < output.length;t++) {
signedOutput[t] = (output[t] * 1.0) / (32768/ 2);
}
console.log(output);
console.log(signedOutput);*/
};
this.onReadAccelState = function(d) {
var raw = new Uint8Array(d);
var output = [], signedOutput = new Int16Array(9);
// Var humidity = this.convertToPercent(raw);
console.log('Accel State:', raw);
// This.$result.h.text(humidity.toFixed(2) + '%');
output.push(((raw[1] << 8) + (raw[0])));
output.push(((raw[3] << 8) + (raw[2])));
output.push(((raw[5] << 8) + (raw[4])));
output.push(((raw[7] << 8) + (raw[6])));
output.push(((raw[9] << 8) + (raw[8])));
output.push(((raw[11] << 8) + (raw[10])));
output.push(((raw[13] << 8) + (raw[12])));
output.push(((raw[15] << 8) + (raw[14])));
output.push(((raw[17] << 8) + (raw[16])));
for (var t = 0;t < output.length;t++) {
signedOutput[t] = (output[t] * 1.0) / (32768/ 2);
}
console.log(output);
console.log(signedOutput);
};
this.onReadHumidityState = function(d) {
var raw = new Uint8Array(d);
var humidity = this.convertToPercent(raw);
console.log('Humidity State:', humidity);
this.$result.h.text(humidity.toFixed(2) + '%');
};
this.onReadHumidityMaxState = function(d) {
var raw = new Uint8Array(d);
var humidity = this.convertToPercent(raw);
console.log('Humidity Max State:', humidity);
this.$result.hMax.text(humidity.toFixed(2) + '%');
};
this.onReadHumidityMinState = function(d) {
var raw = new Uint8Array(d);
var humidity = this.convertToPercent(raw);
console.log('Humidity Min State:', humidity);
this.$result.hMin.text(humidity.toFixed(2) + '%');
};
this.onReadPressureState = function(d) {
var raw = new Uint8Array(d);
var pressure = this.convertToPressure(raw);
console.log('Pressure State:', pressure);
this.$result.p.text(pressure + 'Pa');
};
this.onReadPressureMaxState = function(d) {
var raw = new Uint8Array(d);
var pressure = this.convertToPressure(raw);
console.log('Pressure Max State:', pressure);
this.$result.pMax.text(pressure + 'Pa');
};
this.onReadPressureMinState = function(d) {
var raw = new Uint8Array(d);
var pressure = this.convertToPressure(raw);
console.log('Pressure Min State:', pressure);
this.$result.pMin.text(pressure + 'Pa');
};
this.onReadTempState = function(d) {
var raw = new Uint8Array(d);
var temp = this.convertToTemp(raw);
var temp = this.convertToPercent(raw);
console.log('Temp State:', temp);
this.$result.temp.text(temp.toFixed(2) + '°C');
@ -76,27 +185,152 @@ var TSL = function(p) {
this.onReadTempMax = function(d) {
var raw = new Uint8Array(d);
var temp = this.convertToTemp(raw);
var temp = this.convertToPercent(raw);
console.log('Temp Max:', temp);
this.$result.tempMax.text(temp.toFixed(2) + '°C');
};
this.onReadTempMin = function(d) {
var raw = new Uint8Array(d);
var temp = this.convertToTemp(raw);
var temp = this.convertToPercent(raw);
console.log('Temp Min:', temp);
this.$result.tempMin.text(temp.toFixed(2) + '°C');
};
this.onHistoryAck = function(d) {
var raw = new Uint8Array(d);
var raw16 = new Uint16Array(d);
console.log('History Ack:', raw, raw16);
//this.$result.temp.text(temp.toFixed(2) + '°C');
};
this.onReadHistory = function(d) {
var raw = new Uint8Array(d);
console.log('History:', raw);
//this.$result.temp.text(temp.toFixed(2) + '°C');
this.historyloops++;
this.historyAck();
};
this.onHistorySize = function(d) {
var raw = new Uint8Array(d);
var raw16 = new Uint16Array(d);
console.log('History Size:', raw, raw16);
//this.$result.temp.text(temp.toFixed(2) + '°C');
this.history = new Uint8Array(raw16[0]);
this.readHistory();
};
this.historySize = function() {
console.log('historySize');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.historySize,
this.onHistorySize.bind(this),
this.onError);
};
this.historyAck = function() {
console.log('historyAck');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.historyAck,
this.onHistoryAck.bind(this),
this.onError);
};
this.readHistory = function() {
console.log('readTempState');
console.log('readHistory');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.history,
this.onReadTempState.bind(this),
this.onReadHistory.bind(this),
this.onError);
};
this.readAccelState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.accelerationMax,
this.onReadAccelState.bind(this),
this.onError);
};
this.readVelState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.velocityMax,
this.onReadVelState.bind(this),
this.onError);
};
this.readHumidityState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.humidityValue,
this.onReadHumidityState.bind(this),
this.onError);
};
this.readHumidityMaxState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.humidityMax,
this.onReadHumidityMaxState.bind(this),
this.onError);
};
this.readHumidityMinState = function() {
console.log('readHumidityState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.humidityMin,
this.onReadHumidityMinState.bind(this),
this.onError);
};
this.readPressureState = function() {
console.log('readPressureState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.preValue,
this.onReadPressureState.bind(this),
this.onError);
};
this.readPressureMaxState = function() {
console.log('readPressureMaxState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.presMaximum,
this.onReadPressureMaxState.bind(this),
this.onError);
};
this.readPressureMinState = function() {
console.log('readPressureMinState');
ble.read(this.deviceID,
this.serviceDef.service,
this.serviceDef.presMinimum,
this.onReadPressureMinState.bind(this),
this.onError);
};
this.readTempState = function() {
console.log('readTempState');
ble.read(this.deviceID,
@ -124,6 +358,27 @@ var TSL = function(p) {
this.onError);
};
this.readServices = function() {
this.readTempState();
this.readTempMax();
this.readTempMin();
this.readPressureState();
this.readPressureMaxState();
this.readPressureMinState();
this.readHumidityState();
this.readHumidityMaxState();
this.readHumidityMinState();
this.readAccelState();
this.readVelState();
this.historySize();
// this.readHistory();
// setTimeout(this.readServices.bind(this),20000);
};
this.startService = function() {
if (this.deviceID !== null) {
@ -132,10 +387,7 @@ var TSL = function(p) {
console.log(this.serviceDef);
this.insertFrame();
this.readTempState();
this.readTempMax();
this.readTempMin();
this.readServices();
}
@ -161,41 +413,24 @@ var TSL = function(p) {
this.superClass_.insertFrame.call(self);
var tslTemp = this.frameID + '-t';
var tslTempMax = this.frameID + '-tmax';
var tslTempMin = this.frameID + '-tmin';
var tslP = this.frameID + '-p';
var tslH = this.frameID + '-h';
var row = $('<div />', {class: 'mui-row'});
var settings = {data: {baseID: this.frameID}};
var html = new EJS({url: './partials/tsl.ejs'}).render(settings);
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'Temp:'}).appendTo(
row);
$('<div />',
{class: 'mui-col-xs-9 mui--text-dark', id: tslTemp}).appendTo(row);
this.$id.append(row);
row = $('<div />', {class: 'mui-row'});
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'TMax:'}).appendTo(
row);
$('<div />',
{class: 'mui-col-xs-3 mui--text-dark', id: tslTempMax}).appendTo(row);
$('<div />',
{class: 'mui-col-xs-3 mui--text-accent mui--text-right', text: 'TMin:'}).appendTo(
row);
$('<div />',
{class: 'mui-col-xs-3 mui--text-dark', id: tslTempMin}).appendTo(row);
this.$id.append(row);
this.$id.append(html);
this.$result.temp = $('#' + tslTemp);
this.$result.tempMax = $('#' + tslTempMax);
this.$result.tempMin = $('#' + tslTempMin);
this.$result.tempMax = $('#' + tslTemp + 'max');
this.$result.tempMin = $('#' + tslTemp + 'min');
this.$result.p = $('#' + tslP);
this.$result.pMax = $('#' + tslP + 'max');
this.$result.pMin = $('#' + tslP + 'min');
this.$result.h = $('#' + tslH);
this.$result.hMax = $('#' + tslH + 'max');
this.$result.hMin = $('#' + tslH + 'min');
};

View File

@ -0,0 +1,505 @@
(function(){
var rsplit = function(string, regex) {
var result = regex.exec(string),retArr = new Array(), first_idx, last_idx, first_bit;
while (result != null)
{
first_idx = result.index; last_idx = regex.lastIndex;
if ((first_idx) != 0)
{
first_bit = string.substring(0,first_idx);
retArr.push(string.substring(0,first_idx));
string = string.slice(first_idx);
}
retArr.push(result[0]);
string = string.slice(result[0].length);
result = regex.exec(string);
}
if (! string == '')
{
retArr.push(string);
}
return retArr;
},
chop = function(string){
return string.substr(0, string.length - 1);
},
extend = function(d, s){
for(var n in s){
if(s.hasOwnProperty(n)) d[n] = s[n]
}
}
EJS = function( options ){
options = typeof options == "string" ? {view: options} : options
this.set_options(options);
if(options.precompiled){
this.template = {};
this.template.process = options.precompiled;
EJS.update(this.name, this);
return;
}
if(options.element)
{
if(typeof options.element == 'string'){
var name = options.element
options.element = document.getElementById( options.element )
if(options.element == null) throw name+'does not exist!'
}
if(options.element.value){
this.text = options.element.value
}else{
this.text = options.element.innerHTML
}
this.name = options.element.id
this.type = '['
}else if(options.url){
options.url = EJS.endExt(options.url, this.extMatch);
this.name = this.name ? this.name : options.url;
var url = options.url
//options.view = options.absolute_url || options.view || options.;
var template = EJS.get(this.name /*url*/, this.cache);
if (template) return template;
if (template == EJS.INVALID_PATH) return null;
try{
this.text = EJS.request( url+(this.cache ? '' : '?'+Math.random() ));
}catch(e){}
if(this.text == null){
throw( {type: 'EJS', message: 'There is no template at '+url} );
}
//this.name = url;
}
var template = new EJS.Compiler(this.text, this.type);
template.compile(options, this.name);
EJS.update(this.name, this);
this.template = template;
};
/* @Prototype*/
EJS.prototype = {
/**
* Renders an object with extra view helpers attached to the view.
* @param {Object} object data to be rendered
* @param {Object} extra_helpers an object with additonal view helpers
* @return {String} returns the result of the string
*/
render : function(object, extra_helpers){
object = object || {};
this._extra_helpers = extra_helpers;
var v = new EJS.Helpers(object, extra_helpers || {});
return this.template.process.call(object, object,v);
},
update : function(element, options){
if(typeof element == 'string'){
element = document.getElementById(element)
}
if(options == null){
_template = this;
return function(object){
EJS.prototype.update.call(_template, element, object)
}
}
if(typeof options == 'string'){
params = {}
params.url = options
_template = this;
params.onComplete = function(request){
var object = eval( request.responseText )
EJS.prototype.update.call(_template, element, object)
}
EJS.ajax_request(params)
}else
{
element.innerHTML = this.render(options)
}
},
out : function(){
return this.template.out;
},
/**
* Sets options on this view to be rendered with.
* @param {Object} options
*/
set_options : function(options){
this.type = options.type || EJS.type;
this.cache = options.cache != null ? options.cache : EJS.cache;
this.text = options.text || null;
this.name = options.name || null;
this.ext = options.ext || EJS.ext;
this.extMatch = new RegExp(this.ext.replace(/\./, '\.'));
}
};
EJS.endExt = function(path, match){
if(!path) return null;
match.lastIndex = 0
return path+ (match.test(path) ? '' : this.ext )
}
/* @Static*/
EJS.Scanner = function(source, left, right) {
extend(this,
{left_delimiter: left +'%',
right_delimiter: '%'+right,
double_left: left+'%%',
double_right: '%%'+right,
left_equal: left+'%=',
left_comment: left+'%#'})
this.SplitRegexp = left=='[' ? /(\[%%)|(%%\])|(\[%=)|(\[%#)|(\[%)|(%\]\n)|(%\])|(\n)/ : new RegExp('('+this.double_left+')|(%%'+this.double_right+')|('+this.left_equal+')|('+this.left_comment+')|('+this.left_delimiter+')|('+this.right_delimiter+'\n)|('+this.right_delimiter+')|(\n)') ;
this.source = source;
this.stag = null;
this.lines = 0;
};
EJS.Scanner.to_text = function(input){
if(input == null || input === undefined)
return '';
if(input instanceof Date)
return input.toDateString();
if(input.toString)
return input.toString();
return '';
};
EJS.Scanner.prototype = {
scan: function(block) {
scanline = this.scanline;
regex = this.SplitRegexp;
if (! this.source == '')
{
var source_split = rsplit(this.source, /\n/);
for(var i=0; i<source_split.length; i++) {
var item = source_split[i];
this.scanline(item, regex, block);
}
}
},
scanline: function(line, regex, block) {
this.lines++;
var line_split = rsplit(line, regex);
for(var i=0; i<line_split.length; i++) {
var token = line_split[i];
if (token != null) {
try{
block(token, this);
}catch(e){
throw {type: 'EJS.Scanner', line: this.lines};
}
}
}
}
};
EJS.Buffer = function(pre_cmd, post_cmd) {
this.line = new Array();
this.script = "";
this.pre_cmd = pre_cmd;
this.post_cmd = post_cmd;
for (var i=0; i<this.pre_cmd.length; i++)
{
this.push(pre_cmd[i]);
}
};
EJS.Buffer.prototype = {
push: function(cmd) {
this.line.push(cmd);
},
cr: function() {
this.script = this.script + this.line.join('; ');
this.line = new Array();
this.script = this.script + "\n";
},
close: function() {
if (this.line.length > 0)
{
for (var i=0; i<this.post_cmd.length; i++){
this.push(pre_cmd[i]);
}
this.script = this.script + this.line.join('; ');
line = null;
}
}
};
EJS.Compiler = function(source, left) {
this.pre_cmd = ['var ___ViewO = [];'];
this.post_cmd = new Array();
this.source = ' ';
if (source != null)
{
if (typeof source == 'string')
{
source = source.replace(/\r\n/g, "\n");
source = source.replace(/\r/g, "\n");
this.source = source;
}else if (source.innerHTML){
this.source = source.innerHTML;
}
if (typeof this.source != 'string'){
this.source = "";
}
}
left = left || '<';
var right = '>';
switch(left) {
case '[':
right = ']';
break;
case '<':
break;
default:
throw left+' is not a supported deliminator';
break;
}
this.scanner = new EJS.Scanner(this.source, left, right);
this.out = '';
};
EJS.Compiler.prototype = {
compile: function(options, name) {
options = options || {};
this.out = '';
var put_cmd = "___ViewO.push(";
var insert_cmd = put_cmd;
var buff = new EJS.Buffer(this.pre_cmd, this.post_cmd);
var content = '';
var clean = function(content)
{
content = content.replace(/\\/g, '\\\\');
content = content.replace(/\n/g, '\\n');
content = content.replace(/"/g, '\\"');
return content;
};
this.scanner.scan(function(token, scanner) {
if (scanner.stag == null)
{
switch(token) {
case '\n':
content = content + "\n";
buff.push(put_cmd + '"' + clean(content) + '");');
buff.cr();
content = '';
break;
case scanner.left_delimiter:
case scanner.left_equal:
case scanner.left_comment:
scanner.stag = token;
if (content.length > 0)
{
buff.push(put_cmd + '"' + clean(content) + '")');
}
content = '';
break;
case scanner.double_left:
content = content + scanner.left_delimiter;
break;
default:
content = content + token;
break;
}
}
else {
switch(token) {
case scanner.right_delimiter:
switch(scanner.stag) {
case scanner.left_delimiter:
if (content[content.length - 1] == '\n')
{
content = chop(content);
buff.push(content);
buff.cr();
}
else {
buff.push(content);
}
break;
case scanner.left_equal:
buff.push(insert_cmd + "(EJS.Scanner.to_text(" + content + ")))");
break;
}
scanner.stag = null;
content = '';
break;
case scanner.double_right:
content = content + scanner.right_delimiter;
break;
default:
content = content + token;
break;
}
}
});
if (content.length > 0)
{
// Chould be content.dump in Ruby
buff.push(put_cmd + '"' + clean(content) + '")');
}
buff.close();
this.out = buff.script + ";";
var to_be_evaled = '/*'+name+'*/this.process = function(_CONTEXT,_VIEW) { try { with(_VIEW) { with (_CONTEXT) {'+this.out+" return ___ViewO.join('');}}}catch(e){e.lineNumber=null;throw e;}};";
try{
eval(to_be_evaled);
}catch(e){
if(typeof JSLINT != 'undefined'){
JSLINT(this.out);
for(var i = 0; i < JSLINT.errors.length; i++){
var error = JSLINT.errors[i];
if(error.reason != "Unnecessary semicolon."){
error.line++;
var e = new Error();
e.lineNumber = error.line;
e.message = error.reason;
if(options.view)
e.fileName = options.view;
throw e;
}
}
}else{
throw e;
}
}
}
};
//type, cache, folder
/**
* Sets default options for all views
* @param {Object} options Set view with the following options
* <table class="options">
<tbody><tr><th>Option</th><th>Default</th><th>Description</th></tr>
<tr>
<td>type</td>
<td>'<'</td>
<td>type of magic tags. Options are '&lt;' or '['
</td>
</tr>
<tr>
<td>cache</td>
<td>true in production mode, false in other modes</td>
<td>true to cache template.
</td>
</tr>
</tbody></table>
*
*/
EJS.config = function(options){
EJS.cache = options.cache != null ? options.cache : EJS.cache;
EJS.type = options.type != null ? options.type : EJS.type;
EJS.ext = options.ext != null ? options.ext : EJS.ext;
var templates_directory = EJS.templates_directory || {}; //nice and private container
EJS.templates_directory = templates_directory;
EJS.get = function(path, cache){
if(cache == false) return null;
if(templates_directory[path]) return templates_directory[path];
return null;
};
EJS.update = function(path, template) {
if(path == null) return;
templates_directory[path] = template ;
};
EJS.INVALID_PATH = -1;
};
EJS.config( {cache: true, type: '<', ext: '.ejs' } );
/**
* @constructor
* By adding functions to EJS.Helpers.prototype, those functions will be available in the
* views.
* @init Creates a view helper. This function is called internally. You should never call it.
* @param {Object} data The data passed to the view. Helpers have access to it through this._data
*/
EJS.Helpers = function(data, extras){
this._data = data;
this._extras = extras;
extend(this, extras );
};
/* @prototype*/
EJS.Helpers.prototype = {
/**
* Renders a new view. If data is passed in, uses that to render the view.
* @param {Object} options standard options passed to a new view.
* @param {optional:Object} data
* @return {String}
*/
view: function(options, data, helpers){
if(!helpers) helpers = this._extras
if(!data) data = this._data;
return new EJS(options).render(data, helpers);
},
/**
* For a given value, tries to create a human representation.
* @param {Object} input the value being converted.
* @param {Object} null_text what text should be present if input == null or undefined, defaults to ''
* @return {String}
*/
to_text: function(input, null_text) {
if(input == null || input === undefined) return null_text || '';
if(input instanceof Date) return input.toDateString();
if(input.toString) return input.toString().replace(/\n/g, '<br />').replace(/''/g, "'");
return '';
}
};
EJS.newRequest = function(){
var factories = [function() { return new ActiveXObject("Msxml2.XMLHTTP"); },function() { return new XMLHttpRequest(); },function() { return new ActiveXObject("Microsoft.XMLHTTP"); }];
for(var i = 0; i < factories.length; i++) {
try {
var request = factories[i]();
if (request != null) return request;
}
catch(e) { continue;}
}
}
EJS.request = function(path){
var request = new EJS.newRequest()
request.open("GET", path, false);
try{request.send(null);}
catch(e){return null;}
if ( request.status == 404 || request.status == 2 ||(request.status == 0 && request.responseText == '') ) return null;
return request.responseText
}
EJS.ajax_request = function(params){
params.method = ( params.method ? params.method : 'GET')
var request = new EJS.newRequest();
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200){
params.onComplete(request)
}else
{
params.onComplete(request)
}
}
}
request.open(params.method, params.url)
request.send(null)
}
})();

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,200 @@
EJS.Helpers.prototype.date_tag = function(name, value , html_options) {
if(! (value instanceof Date))
value = new Date()
var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var years = [], months = [], days =[];
var year = value.getFullYear();
var month = value.getMonth();
var day = value.getDate();
for(var y = year - 15; y < year+15 ; y++)
{
years.push({value: y, text: y})
}
for(var m = 0; m < 12; m++)
{
months.push({value: (m), text: month_names[m]})
}
for(var d = 0; d < 31; d++)
{
days.push({value: (d+1), text: (d+1)})
}
var year_select = this.select_tag(name+'[year]', year, years, {id: name+'[year]'} )
var month_select = this.select_tag(name+'[month]', month, months, {id: name+'[month]'})
var day_select = this.select_tag(name+'[day]', day, days, {id: name+'[day]'})
return year_select+month_select+day_select;
}
EJS.Helpers.prototype.form_tag = function(action, html_options) {
html_options = html_options || {};
html_options.action = action
if(html_options.multipart == true) {
html_options.method = 'post';
html_options.enctype = 'multipart/form-data';
}
return this.start_tag_for('form', html_options)
}
EJS.Helpers.prototype.form_tag_end = function() { return this.tag_end('form'); }
EJS.Helpers.prototype.hidden_field_tag = function(name, value, html_options) {
return this.input_field_tag(name, value, 'hidden', html_options);
}
EJS.Helpers.prototype.input_field_tag = function(name, value , inputType, html_options) {
html_options = html_options || {};
html_options.id = html_options.id || name;
html_options.value = value || '';
html_options.type = inputType || 'text';
html_options.name = name;
return this.single_tag_for('input', html_options)
}
EJS.Helpers.prototype.is_current_page = function(url) {
return (window.location.href == url || window.location.pathname == url ? true : false);
}
EJS.Helpers.prototype.link_to = function(name, url, html_options) {
if(!name) var name = 'null';
if(!html_options) var html_options = {}
if(html_options.confirm){
html_options.onclick =
" var ret_confirm = confirm(\""+html_options.confirm+"\"); if(!ret_confirm){ return false;} "
html_options.confirm = null;
}
html_options.href=url
return this.start_tag_for('a', html_options)+name+ this.tag_end('a');
}
EJS.Helpers.prototype.submit_link_to = function(name, url, html_options){
if(!name) var name = 'null';
if(!html_options) var html_options = {}
html_options.onclick = html_options.onclick || '' ;
if(html_options.confirm){
html_options.onclick =
" var ret_confirm = confirm(\""+html_options.confirm+"\"); if(!ret_confirm){ return false;} "
html_options.confirm = null;
}
html_options.value = name;
html_options.type = 'submit'
html_options.onclick=html_options.onclick+
(url ? this.url_for(url) : '')+'return false;';
//html_options.href='#'+(options ? Routes.url_for(options) : '')
return this.start_tag_for('input', html_options)
}
EJS.Helpers.prototype.link_to_if = function(condition, name, url, html_options, post, block) {
return this.link_to_unless((condition == false), name, url, html_options, post, block);
}
EJS.Helpers.prototype.link_to_unless = function(condition, name, url, html_options, block) {
html_options = html_options || {};
if(condition) {
if(block && typeof block == 'function') {
return block(name, url, html_options, block);
} else {
return name;
}
} else
return this.link_to(name, url, html_options);
}
EJS.Helpers.prototype.link_to_unless_current = function(name, url, html_options, block) {
html_options = html_options || {};
return this.link_to_unless(this.is_current_page(url), name, url, html_options, block)
}
EJS.Helpers.prototype.password_field_tag = function(name, value, html_options) { return this.input_field_tag(name, value, 'password', html_options); }
EJS.Helpers.prototype.select_tag = function(name, value, choices, html_options) {
html_options = html_options || {};
html_options.id = html_options.id || name;
html_options.value = value;
html_options.name = name;
var txt = ''
txt += this.start_tag_for('select', html_options)
for(var i = 0; i < choices.length; i++)
{
var choice = choices[i];
var optionOptions = {value: choice.value}
if(choice.value == value)
optionOptions.selected ='selected'
txt += this.start_tag_for('option', optionOptions )+choice.text+this.tag_end('option')
}
txt += this.tag_end('select');
return txt;
}
EJS.Helpers.prototype.single_tag_for = function(tag, html_options) { return this.tag(tag, html_options, '/>');}
EJS.Helpers.prototype.start_tag_for = function(tag, html_options) { return this.tag(tag, html_options); }
EJS.Helpers.prototype.submit_tag = function(name, html_options) {
html_options = html_options || {};
//html_options.name = html_options.id || 'commit';
html_options.type = html_options.type || 'submit';
html_options.value = name || 'Submit';
return this.single_tag_for('input', html_options);
}
EJS.Helpers.prototype.tag = function(tag, html_options, end) {
if(!end) var end = '>'
var txt = ' '
for(var attr in html_options) {
if(html_options[attr] != null)
var value = html_options[attr].toString();
else
var value=''
if(attr == "Class") // special case because "class" is a reserved word in IE
attr = "class";
if( value.indexOf("'") != -1 )
txt += attr+'=\"'+value+'\" '
else
txt += attr+"='"+value+"' "
}
return '<'+tag+txt+end;
}
EJS.Helpers.prototype.tag_end = function(tag) { return '</'+tag+'>'; }
EJS.Helpers.prototype.text_area_tag = function(name, value, html_options) {
html_options = html_options || {};
html_options.id = html_options.id || name;
html_options.name = html_options.name || name;
value = value || ''
if(html_options.size) {
html_options.cols = html_options.size.split('x')[0]
html_options.rows = html_options.size.split('x')[1];
delete html_options.size
}
html_options.cols = html_options.cols || 50;
html_options.rows = html_options.rows || 4;
return this.start_tag_for('textarea', html_options)+value+this.tag_end('textarea')
}
EJS.Helpers.prototype.text_tag = EJS.Helpers.prototype.text_area_tag
EJS.Helpers.prototype.text_field_tag = function(name, value, html_options) { return this.input_field_tag(name, value, 'text', html_options); }
EJS.Helpers.prototype.url_for = function(url) {
return 'window.location="'+url+'";'
}
EJS.Helpers.prototype.img_tag = function(image_location, alt, options){
options = options || {};
options.src = image_location
options.alt = alt
return this.single_tag_for('img', options)
}

View File

@ -0,0 +1,42 @@
<%= data.baseID + 'pressure-line' %>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-t' %>">--</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Pressure:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-p' %>">--</div>
</div>
<ul class="mui-tabs__bar mui-tabs__bar--justified">
<li class="mui--is-active tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-t-pane' %>">Temperature</a>
</li>
<li class="tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-p-pane' %>">Pressure</a>
</li>
</ul>
<div class="mui-tabs__pane mui--is-active" id="<%= data.baseID + '-t-pane' %>">
<svg id="<%= data.baseID + 'temp-svg' %>" width="300" height="150" fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'temp-txt1' %>" x="36" y="15" text-anchor="end">--</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'temp-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>
<div class="mui-tabs__pane" id="<%= data.baseID + '-p-pane' %>">
<svg id="<%= data.baseID + 'pressure-svg' %>" width="300" height="150" fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'pressure-txt1' %>" x="36" y="15" text-anchor="end">--</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'pressure-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>

View File

@ -0,0 +1,42 @@
<%= data.baseID + 'pressure-line' %>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-t' %>">--</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Pressure:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-p' %>">--</div>
</div>
<ul class="mui-tabs__bar mui-tabs__bar--justified">
<li class="mui--is-active tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-t-pane' %>">Temperature</a>
</li>
<li class="tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-p-pane' %>">Pressure</a>
</li>
</ul>
<div class="mui-tabs__pane mui--is-active" id="<%= data.baseID + '-t-pane' %>">
<svg id="<%= data.baseID + 'temp-svg' %>" width="300" height="150" fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'temp-txt1' %>" x="36" y="15" text-anchor="end">--</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'temp-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>
<div class="mui-tabs__pane" id="<%= data.baseID + '-p-pane' %>">
<svg id="<%= data.baseID + 'pressure-svg' %>" width="300" height="150" fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'pressure-txt1' %>" x="36" y="15" text-anchor="end">--</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'pressure-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>

View File

@ -0,0 +1,48 @@
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right"><%= data.title1 %>:</div>
<div class="mui-col-xs-3 mui--text-light mui--text-left"
id="<%= data.baseID + '-t' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right"><%= data.title2 %>:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-a' %>">--
</div>
</div>
<ul class="mui-tabs__bar mui-tabs__bar--justified">
<li class="tabOnWhite mui--is-active"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-t-pane' %>"><%= data.tab1 %></a>
</li>
<li class="tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-a-pane' %>"><%= data.title2 %></a>
</li>
</ul>
<div class="mui-tabs__pane mui--is-active" id="<%= data.baseID + '-t-pane' %>">
<svg id="<%= data.baseID + 'temp-svg' %>" width="300" height="150"
fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'temp-txt1' %>" x="36" y="15"
text-anchor="end">--
</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'temp-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2" points=""></polyline>
</svg>
</div>
<div class="mui-tabs__pane" id="<%= data.baseID + '-a-pane' %>">
<svg id="<%= data.baseID + 'ambient-svg' %>" width="300" height="150"
fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'ambient-txt1' %>" x="36" y="15"
text-anchor="end">--
</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'ambient-line' %>" fill="none"
stroke="#2196F3" text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>

View File

@ -0,0 +1,48 @@
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-3 mui--text-light mui--text-left"
id="<%= data.baseID + '-t' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Ambient:</div>
<div class="mui-col-xs-3 mui--text-light" id="<%= data.baseID + '-a' %>">--
</div>
</div>
<ul class="mui-tabs__bar mui-tabs__bar--justified">
<li class="tabOnWhite mui--is-active"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-t-pane' %>">Temperature</a>
</li>
<li class="tabOnWhite"><a data-mui-toggle="tab"
data-mui-controls="<%= data.baseID + '-a-pane' %>">Ambient</a>
</li>
</ul>
<div class="mui-tabs__pane mui--is-active" id="<%= data.baseID + '-t-pane' %>">
<svg id="<%= data.baseID + 'temp-svg' %>" width="300" height="150"
fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'temp-txt1' %>" x="36" y="15"
text-anchor="end">--
</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'temp-line' %>" fill="none" stroke="#2196F3"
text-anchor="end" stroke-width="2" points=""></polyline>
</svg>
</div>
<div class="mui-tabs__pane" id="<%= data.baseID + '-a-pane' %>">
<svg id="<%= data.baseID + 'ambient-svg' %>" width="300" height="150"
fill="blue">
<line x1="46" y1="12" x2="280" y2="12"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="<%= data.baseID + 'ambient-txt1' %>" x="36" y="15"
text-anchor="end">--
</text>
<line x1="46" y1="136" x2="280" y2="136"
style="stroke:#004c6d;stroke-width:2;"></line>
<text id="undefined" x="36" y="139" text-anchor="end">0</text>
<polyline id="<%= data.baseID + 'ambient-line' %>" fill="none"
stroke="#2196F3" text-anchor="end" stroke-width="2"
points=""></polyline>
</svg>
</div>

View File

@ -0,0 +1,45 @@
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Temp:</div>
<div class="mui-col-xs-9 mui--text-light" id="<%= data.baseID + '-t' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">TMax:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-tmax' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">TMin:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-tmin' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Pressure:</div>
<div class="mui-col-xs-9 mui--text-light" id="<%= data.baseID + '-p' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">PMax:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-pmax' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">PMin:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-pmin' %>">--
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">Humidity:</div>
<div class="mui-col-xs-9 mui--text-light" id="<%= data.baseID + '-h' %>">--
</div>
</div>
<div class="mui-row">
<div class="mui-col-xs-3 mui--text-accent mui--text-right">HMax:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-hmax' %>">--
</div>
<div class="mui-col-xs-3 mui--text-accent mui--text-right">HMin:</div>
<div class="mui-col-xs-3 mui--text-light"
id="<%= data.baseID + '-hmin' %>">--
</div>
</div>