initial push
This commit is contained in:
423
iforte/base.js
Normal file
423
iforte/base.js
Normal file
@@ -0,0 +1,423 @@
|
||||
function get_cookie(n,d,ti=false) {
|
||||
var r = d;
|
||||
var c = document.cookie.split(';');
|
||||
c.forEach(function(v,i) {
|
||||
v = v.split('=');
|
||||
if (v[0].trim() == n) {
|
||||
if (ti) {
|
||||
const par = parseInt(v[1].trim());
|
||||
if (!isNaN(par)) {
|
||||
r = par;
|
||||
}
|
||||
} else r = v[1].trim();
|
||||
}
|
||||
});
|
||||
return r;
|
||||
}
|
||||
|
||||
function mhdr_status(c) {
|
||||
|
||||
if (c.length == 0) $('#cfg-modal .modal-header').removeClass('suc err');
|
||||
else $('#cfg-modal .modal-header').addClass(c);
|
||||
}
|
||||
|
||||
function loader(a) {
|
||||
|
||||
if (a) $('#cfg-modal .modal-header img').addClass('loader');
|
||||
else $('#cfg-modal .modal-header img').removeClass('loader');
|
||||
}
|
||||
|
||||
function do_ajax(p_url,p_data,f,i = -1,a = true) {
|
||||
|
||||
$.ajax({
|
||||
url: p_url,
|
||||
type: 'POST',
|
||||
data: p_data,
|
||||
dataType: 'json',
|
||||
async: a,
|
||||
success: function (json) {
|
||||
f(json,i);
|
||||
},
|
||||
error: function () {
|
||||
// console.log('do_ajax error');
|
||||
f();
|
||||
},
|
||||
timeout:2000
|
||||
});
|
||||
}
|
||||
|
||||
function copy_form_values(dir) {
|
||||
|
||||
$('#m-b input:text, #m-b input[type=range]').each(function() {
|
||||
var id = $(this).attr('id');
|
||||
if (dir == 0) $('#' + id + '_v').html($('#' + id).val());
|
||||
else $('#' + id).val($('#' + id + '_v').html());
|
||||
});
|
||||
$('#m-b select').each(function() {
|
||||
var id = $(this).attr('id');
|
||||
text = $('#' + id + '_v').html();
|
||||
if (dir == 1) {
|
||||
$(this).find('option').filter(function () { return $(this).html() == text; }).attr('selected', 'selected');
|
||||
} else {
|
||||
$('#' + id + '_v').html($(this).find('option:selected').html());
|
||||
}
|
||||
});
|
||||
$('#m-b input:radio').each(function() {
|
||||
var id = $(this).attr('name');
|
||||
text = $('#' + id + '_v').html();
|
||||
label = $(this).parent().find('label').html();
|
||||
if (dir == 1) {
|
||||
if (label == text) $(this).attr('checked','checked');
|
||||
} else {
|
||||
if ($(this).is(':checked')) $('#' + id + '_v').html(label);
|
||||
}
|
||||
|
||||
});
|
||||
if (dir == 1) {
|
||||
$('#m-b div.form-group').each(function() {
|
||||
var len = $(this).find('div.invalid-feedback').length;
|
||||
if (len == 0) {
|
||||
$(this).append('<div class="invalid-feedback">Wrong value!</div>');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function fill_values(d,ids) {
|
||||
|
||||
for (i = 0; i < ids.length; i++) {
|
||||
$('#' + ids[i] + '_v').html(d[ids[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
function show_errors(s,ids) {
|
||||
|
||||
if (s) mhdr_status('err');
|
||||
for (i = 0; i < ids.length; i++) {
|
||||
if (s & (1 << i)) $('#' + ids[i]).addClass('is-invalid').removeClass('is-valid');
|
||||
else $('#' + ids[i]).removeClass('is-invalid').addClass('is-valid');
|
||||
}
|
||||
}
|
||||
|
||||
function close_modal() {
|
||||
|
||||
setTimeout(function() {
|
||||
$('#m-b').empty();
|
||||
$('#cfg-modal').modal('hide');
|
||||
},500);
|
||||
}
|
||||
|
||||
function pv(p) {
|
||||
|
||||
var s = '';
|
||||
|
||||
for (var i in p) {
|
||||
var o = p[i];
|
||||
if (i == 0) s += o + '=';
|
||||
else s += '&' + o + '=';
|
||||
if ($('#' + o).val() != undefined) s += $('#' + o).val();
|
||||
else if ($('input[name=' + o + ']:checked').val() != undefined) s += $('input[name=' + o + ']:checked').val();
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
function c_txt(n,t,e,c = '',it = 'text') {
|
||||
|
||||
var html = '<div class="form-group' + c + '">';
|
||||
html += '<label for="' + n + '" class="col-form-label">' + t + '</label>';
|
||||
html += '<input type="'+ it +'" class="form-control" id="' + n + '">';
|
||||
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function c_btn(t,v,c) {
|
||||
|
||||
return '<button class="btn btn-primary btn-block' + c + '" value="' + v + '">' + t + '</button>';
|
||||
}
|
||||
|
||||
function c_opt(n,t,o,pl,vp,lp,e) {
|
||||
|
||||
var html = '<div class="form-group">';
|
||||
html += '<label for="' + n + '" class="col-form-label">' + t + '</label>';
|
||||
html += '<select class="form-control" id="' + n + '">';
|
||||
var l = o.length;
|
||||
var li = l;
|
||||
if (l == 1) li = o[0];
|
||||
for (i = 0; i < li; i++) {
|
||||
if (l == 1) html += '<option value="' + (i + vp) + '">'+ pl + (i + lp) + '</option>';
|
||||
else html += '<option value="' + (i + vp) + '">'+ o[i] + '</option>';
|
||||
}
|
||||
html += '</select>';
|
||||
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function c_rad(n,t,r,e,c) {
|
||||
|
||||
var html = '<div class="form-group' + c + '">';
|
||||
html += '<legend class="col-form-label">' + t + '</legend>';
|
||||
for (i = 0; i < r.length; i++) {
|
||||
html += '<div class="form-check form-check-inline">';
|
||||
html += '<input class="form-check-input" type="radio" name="' + n + '" value="' + i + '" id="' + n + (i + 1) + '">';
|
||||
html += '<label class="form-check-label" for="' + n + (i + 1) + '">' + r[i] + '</label>';
|
||||
html += '</div>';
|
||||
}
|
||||
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function box(t,id,p,su = '',vid = '',bc = '') {
|
||||
|
||||
var s = '';
|
||||
|
||||
s += '<div class="col-md-6 col-xl-4 box-c' + bc + '">';
|
||||
if (id >= 0) s += '<h2>' + t + '<a class="cfg" onclick="open_modal(' + id + ');"><img src="/settings.svg.gz"></a></h2>';
|
||||
else s += '<h2>' + t + '</h2>';
|
||||
s += '<div class="box">';
|
||||
for (var j in p) {
|
||||
if (p[j][0].length > 0) s += '<h3>' + p[j][0] + '</h3>';
|
||||
s += '<ul class="group">';
|
||||
for (var i in p[j][1]) {
|
||||
l = p[j][1][i].split(";");
|
||||
if (l.length == 4) s += l[0];
|
||||
else s += '<li>' + l[0] + '</li>';
|
||||
}
|
||||
s += '</ul>';
|
||||
s += '<ul class="group vals" id="' + vid + '">';
|
||||
for (var i in p[j][1]) {
|
||||
l = p[j][1][i].split(";");
|
||||
if (l.length == 4) {
|
||||
var t = l[3].replace(/&DG/gi,'°');
|
||||
s += t;
|
||||
} else if (l.length == 3) s += l[2];
|
||||
else if (l.length == 2) s += '<li><div id="' + l[1] + '_v">-</div></li>';
|
||||
else s += '<li>-</li>';
|
||||
}
|
||||
s += '</ul>';
|
||||
}
|
||||
s += su;
|
||||
s += '</div>';
|
||||
s += '</div>';
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
function gens() {
|
||||
|
||||
var o = '<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">';
|
||||
|
||||
o += '<div class="container">';
|
||||
o += '<a class="navbar-brand" href="/"><img src="/robe_logo_white.svg.gz"></a>';
|
||||
o += '<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar">';
|
||||
o += '<span class="navbar-toggler-icon"></span>';
|
||||
o += '</button>';
|
||||
o += '<div class="collapse navbar-collapse" id="navbar">';
|
||||
o += '<ul class="navbar-nav mr-auto">';
|
||||
o += '<li class="nav-item">';
|
||||
o += '<a class="nav-link" href="/">Status</a>';
|
||||
o += '</li>';
|
||||
o += '<li class="nav-item">';
|
||||
o += '<a class="nav-link" href="/personality">Personality</a>';
|
||||
o += '</li>';
|
||||
o += '<li class="nav-item">';
|
||||
o += '<a class="nav-link" href="/logs">Logs</a>';
|
||||
|
||||
o += '</li>';
|
||||
o += '<li class="nav-item snz">';
|
||||
o += '<a class="nav-link" href="/sensors">RAINS logs</a>';
|
||||
o += '</li>';
|
||||
|
||||
o += '<li class="nav-item">';
|
||||
o += '<a class="nav-link" href="/discovery">Discovery</a>';
|
||||
o += '</li>';
|
||||
o += '<li class="nav-item">';
|
||||
o += '<a class="nav-link" href="#" id="scfg">Settings</a>';
|
||||
o += '</li>';
|
||||
o += '<li class="nav-item">';
|
||||
o += '<a class="nav-link" href="#" id="idnt"><img class="rdmi" src="/identify.svg.gz"></a>';
|
||||
o += '</li>';
|
||||
o += '</ul>';
|
||||
|
||||
o += '</div>';
|
||||
o += '</div>';
|
||||
o += '</nav>';
|
||||
|
||||
o += '<div class="fixed-top text-center device-label" id="pth"></div>';
|
||||
|
||||
o += '<div class="container-fluid in">';
|
||||
o += '<h1></h1>';
|
||||
o += '<div class="row" id="boxes"></div>';
|
||||
o += '</div>';
|
||||
|
||||
o += '<div id="cfg-modal" class="modal fade" tabindex="-1" role="dialog">';
|
||||
o += '<div class="modal-dialog" role="document">';
|
||||
o += '<div class="modal-content">';
|
||||
o += '<div class="modal-header">';
|
||||
o += '<img src="/settings.svg.gz">';
|
||||
o += '<h5 class="modal-title" id="m-t"></h5>';
|
||||
o += '<button type="button" class="close" data-dismiss="modal" aria-label="Close">';
|
||||
o += '<span aria-hidden="true">×</span>';
|
||||
o += '</button>';
|
||||
o += '</div>';
|
||||
o += '<div class="modal-body" id="m-b">';
|
||||
o += '</div>';
|
||||
o += '<div class="modal-footer" id="m-f">';
|
||||
o += '<button type="button" class="btn btn-primary sb">Save</button>';
|
||||
o += '</div>';
|
||||
o += '</div>';
|
||||
o += '</div>';
|
||||
o += '</div>';
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
||||
var pre = '';
|
||||
var dmxsnf = '';
|
||||
|
||||
function ptit(t) {
|
||||
// console.log('setting title to ' + t);
|
||||
|
||||
if (t == $('#pth').data('title')) return;
|
||||
|
||||
// console.log('set');
|
||||
|
||||
if (t.length) $('#pth').data('title',t);
|
||||
$('#pth').html($('#pth').data('title') + dmxsnf);
|
||||
$('#pt_v').html(pre + $('#pth').html());
|
||||
|
||||
// console.log($('#pth').html());
|
||||
}
|
||||
|
||||
function c_dt(n,t,e,c,it) {
|
||||
|
||||
var html = '<div class="form-group' + c + '">';
|
||||
html += '<label for="' + n + '" class="col-form-label">' + t + '</label>';
|
||||
html += '</div><div class="form-group' + c + '">';
|
||||
html += '<input type="' + it + '" class="form-control" id="' + n + '" step="1">';
|
||||
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function c_fsens(i,t,u) {
|
||||
|
||||
var html = '';
|
||||
html += '<div class="form-row">';
|
||||
html += '<div class="form-group col-auto"><label class="col-form-label" id="tl' + i + '" for="fts' + i + '">' + t + '</label></div>';
|
||||
html += '<div class="form-group col-auto"><select class="form-control" id="fts' + i + '">';
|
||||
html += '<option value="0">-</option><option value="1">=</option><option value="2"><</option><option value="3">></option>';
|
||||
html += '<option value="4"><=</option><option value="5">>=</option>';
|
||||
html += '</select></div>';
|
||||
html += '<div class="form-group col-auto"><input type="text" class="form-control" size="5" id="ftv' + i + '"></div>';
|
||||
html += '<div class="form-group col-auto"><label class="col-form-label" for="ftv' + i + '">' + u + '</label></div>';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$('body').prepend(gens());
|
||||
var am = 0;
|
||||
var mip = 0;
|
||||
mip = 1;
|
||||
var href = $(location).attr('pathname');
|
||||
if (href.indexOf('personality') != -1) am = 1;
|
||||
if (href.indexOf('logs') != -1) am = 2;
|
||||
if (href.indexOf('sensors') != -1) am = 3;
|
||||
if (href.indexOf('discovery') != -1) am = (3 + mip);
|
||||
$('#navbar ul li').eq(am).addClass('active');
|
||||
|
||||
//handle settings
|
||||
$(document).on('click','#scfg',function() {
|
||||
mhdr_status('');
|
||||
$('#m-t').html('Site settings');
|
||||
var h = '<h3>Password settings</h3>';
|
||||
h += c_txt('opswd','Old password','Please put old password (four digits)','','password');
|
||||
h += c_txt('npswd','New password','Please put new password (four digits)','','password');
|
||||
h += c_txt('npsch','New password check','New passwords check failed','','password');
|
||||
$('#m-b').html(h);
|
||||
$('.sb').unbind();
|
||||
$('#cfg-modal').modal();
|
||||
$('.sb').bind('click',function() {
|
||||
loader(1);
|
||||
var par = ['opswd','npswd','npsch'];
|
||||
do_ajax('/set_cfg',pv(par),function (json) {
|
||||
if (json) {
|
||||
if (json['status'] == 0) {
|
||||
mhdr_status('suc');
|
||||
close_modal();
|
||||
location = '/';
|
||||
}
|
||||
show_errors(json['status'],par);
|
||||
loader(0);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
//periodicly get status
|
||||
var bsy = false;
|
||||
var ebli = 0;
|
||||
var eblio = 255;
|
||||
var idntb = $('#idnt img');
|
||||
function sta() {
|
||||
do_ajax('/serr',{},function (json) {
|
||||
// console.log(json);
|
||||
dmxsnf = '';
|
||||
if (json ) {
|
||||
if (json['err'] == 1) ebli = 0x80;
|
||||
else ebli = 0;
|
||||
if (json['dmxsnf'] == 1) dmxsnf = ' [sniffing DMX]';
|
||||
if (json['idnt'] == 1) idntb.addClass('a');
|
||||
else idntb.removeClass('a');
|
||||
if (json['dls'] && json['dls'] == 1) {
|
||||
$('.snz').show();
|
||||
}
|
||||
} else if (json == undefined) {
|
||||
ebli = 0x40;
|
||||
} else ebli = 0;
|
||||
bsy = false;
|
||||
});
|
||||
}
|
||||
setInterval(function() {
|
||||
if (!bsy) {
|
||||
bsy = true;
|
||||
sta();
|
||||
}
|
||||
},3000);
|
||||
sta();
|
||||
setInterval(function() {
|
||||
if (ebli == eblio) return;
|
||||
var opre = pre;
|
||||
if (ebli & 0x80) {
|
||||
ebli ^= 0x01;
|
||||
if (ebli & 0x01) pre = '(!) ';
|
||||
$('#pth').removeClass('stou');
|
||||
$('#pth').addClass('serr');
|
||||
} else if (ebli & 0x40) {
|
||||
ebli ^= 0x01;
|
||||
if (ebli & 0x01) pre = '(?) ';
|
||||
$('#pth').removeClass('serr');
|
||||
$('#pth').addClass('stou');
|
||||
} else {
|
||||
ebli = 0;
|
||||
$('#pth').removeClass('serr stou');
|
||||
pre = '';
|
||||
}
|
||||
//$('#pt_v').html(pre + $('#pth').data('title') + dmxsnf);
|
||||
if (opre != pre) ptit('');
|
||||
eblio = ebli;
|
||||
},1000);
|
||||
$('#idnt').click(function() {
|
||||
idntb.toggleClass('a');
|
||||
do_ajax('/rdmi',{s:idntb.hasClass('a') ? 1:0},function(json) {});
|
||||
});
|
||||
});
|
||||
1
iforte/discovery.html
Normal file
1
iforte/discovery.html
Normal file
File diff suppressed because one or more lines are too long
1
iforte/iforte_pressure_ok.html
Normal file
1
iforte/iforte_pressure_ok.html
Normal file
File diff suppressed because one or more lines are too long
1
iforte/iforte_while_pressure_testing.html
Normal file
1
iforte/iforte_while_pressure_testing.html
Normal file
File diff suppressed because one or more lines are too long
404
iforte/index.html
Normal file
404
iforte/index.html
Normal file
@@ -0,0 +1,404 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
|
||||
<link rel="stylesheet" href="../files/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="../files/layout.css">
|
||||
<script src="../files/jquery-3.3.1.min.js"></script>
|
||||
<script src="../files/popper.min.js"></script>
|
||||
<script src="../files/bootstrap.min.js"></script>
|
||||
<script src="base.js"></script>
|
||||
<title id="pt_v">iForte</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="./index.html">
|
||||
<img src="../files/robe_logo_white.svg">
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="./index.html">Status</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./personality.html">Personality</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./logs.html">Logs</a>
|
||||
</li>
|
||||
<li class="nav-item snz">
|
||||
<a class="nav-link" href="./sensors.html">RAINS logs</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./discovery.html">Discovery</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#" id="scfg">Settings</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#" id="idnt">
|
||||
<img class="rdmi" src="../files/identify.svg">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="fixed-top text-center device-label" id="pth">iForte</div>
|
||||
<div class="container-fluid in">
|
||||
<h1>Device status</h1>
|
||||
<div class="row" id="boxes">
|
||||
<div class="col-md-6 col-xl-4 box-c">
|
||||
<h2>DMX/RDM settings <a class="cfg" onclick="open_modal(0);">
|
||||
<img src="../files/settings.svg">
|
||||
</a>
|
||||
</h2>
|
||||
<div class="box">
|
||||
<ul class="group">
|
||||
<li>DMX address</li>
|
||||
<li>DMX preset</li>
|
||||
<li>DMX input</li>
|
||||
<li class="mt-2">IP address</li>
|
||||
<li>MAC address</li>
|
||||
<li class="mt-2">RDM UID</li>
|
||||
<li>RDM label</li>
|
||||
</ul>
|
||||
<ul class="group vals" id="">
|
||||
<li>
|
||||
<div id="dmxa_v">350</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="dmxp_v">Mode 1</div>
|
||||
<small id="dmxf_v">(54 channels)</small>
|
||||
</li>
|
||||
<li>
|
||||
<div id="dmxi_v">wired</div>
|
||||
</li>
|
||||
<li class="mt-2">
|
||||
<div id="ip_v">2.247.136.14</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="mac_v">00:0d:19:06:88:0e</div>
|
||||
</li>
|
||||
<li class="mt-2">
|
||||
<div id="rdmu_v">52:53:01:2c:00:0e</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="rdmn_v">iForte</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-xl-4 box-c">
|
||||
<h2>Device times <a class="cfg" onclick="open_modal(1);">
|
||||
<img src="../files/settings.svg">
|
||||
</a>
|
||||
</h2>
|
||||
<div class="box">
|
||||
<ul class="group">
|
||||
<li>Power on time</li>
|
||||
</ul>
|
||||
<ul class="group vals" id="">
|
||||
<li>
|
||||
<div id="h0_v">164</div>h / <div id="hr0_v">161</div>h
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
<small>total / resettable</small>
|
||||
</p>
|
||||
<ul class="group">
|
||||
<li>LED on time total</li>
|
||||
<li>LED on time adaptive</li>
|
||||
</ul>
|
||||
<ul class="group vals">
|
||||
<li>
|
||||
<div id="h1_v">21</div>h
|
||||
</li>
|
||||
<li>
|
||||
<div id="hr1_v">19</div>h
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-xl-4 box-c">
|
||||
<h2>Device temperatures <a class="cfg" onclick="open_modal(2);">
|
||||
<img src="../files/settings.svg">
|
||||
</a>
|
||||
</h2>
|
||||
<div class="box">
|
||||
<ul class="group">
|
||||
<li>LEDs</li>
|
||||
<li>PSU</li>
|
||||
<li>Driver</li>
|
||||
<li>Base</li>
|
||||
</ul>
|
||||
<ul class="group vals" id="">
|
||||
<li>
|
||||
<div id="t0_v">34</div>° <div class="tu">C</div> / <div id="tm0_v">65</div>° <div class="tu">C</div> / <div id="tmr0_v">65</div>° <div class="tu">C</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="t3_v">36</div>° <div class="tu">C</div> / <div id="tm3_v">65</div>° <div class="tu">C</div> / <div id="tmr3_v">65</div>° <div class="tu">C</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="t1_v">49</div>° <div class="tu">C</div> / <div id="tm1_v">97</div>° <div class="tu">C</div> / <div id="tmr1_v">97</div>° <div class="tu">C</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="t2_v">34</div>° <div class="tu">C</div> / <div id="tm2_v">59</div>° <div class="tu">C</div> / <div id="tmr2_v">59</div>° <div class="tu">C</div>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
<small>current / maximum / resettable</small>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-xl-4 box-c">
|
||||
<h2>Wireless state <a class="cfg" onclick="open_modal(3);">
|
||||
<img src="../files/settings.svg">
|
||||
</a>
|
||||
</h2>
|
||||
<div class="box">
|
||||
<ul class="group">
|
||||
<li>State</li>
|
||||
<li>Signal strength</li>
|
||||
</ul>
|
||||
<ul class="group vals" id="">
|
||||
<li>
|
||||
<div id="lwc_v">linked</div>
|
||||
</li>
|
||||
<li>
|
||||
<div id="lws_v">0.0%</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-xl-4 box-c">
|
||||
<h2>Software versions</h2>
|
||||
<div class="box">
|
||||
<ul class="group">
|
||||
<li>Display System</li>
|
||||
<li>Module M</li>
|
||||
<li>Module L1</li>
|
||||
<li>Module L2</li>
|
||||
<li>Module O</li>
|
||||
<li>Module F-A</li>
|
||||
<li>Module F-B</li>
|
||||
<li>Module G1</li>
|
||||
<li>Module G2</li>
|
||||
<li>Module P</li>
|
||||
<li>Module C1</li>
|
||||
<li>Module C2</li>
|
||||
<li>Module DL</li>
|
||||
</ul>
|
||||
<ul class="group vals" id="sw_vers">
|
||||
<li>1.9</li>
|
||||
<li>1.4</li>
|
||||
<li>1.6</li>
|
||||
<li>1.5</li>
|
||||
<li>1.3</li>
|
||||
<li>1.1</li>
|
||||
<li>1.1</li>
|
||||
<li>1.5</li>
|
||||
<li>1.5</li>
|
||||
<li>1.2</li>
|
||||
<li>1.2</li>
|
||||
<li>1.2</li>
|
||||
<li>1.2</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-xl-4 box-c">
|
||||
<h2>Device state</h2>
|
||||
<div class="box">
|
||||
<ul class="group">
|
||||
<li>Device status</li>
|
||||
</ul>
|
||||
<ul class="group vals" id="">
|
||||
<li>
|
||||
<div id="devs_v">active</div>
|
||||
</li>
|
||||
</ul>
|
||||
<button class="btn btn-primary btn-block esm dn btn-success" value="0" style="display: inline-block;">Enter standby mode</button>
|
||||
<div>Current RAINS status</div>
|
||||
<div>
|
||||
<small class="fl">WET</small>
|
||||
<small class="fr">DRY</small>
|
||||
</div>
|
||||
<div id="rai" class="rains">
|
||||
<div style="width: 63%;"></div>
|
||||
</div>
|
||||
<div>MAX WET/resettable</div>
|
||||
<div>
|
||||
<small class="fl">WET</small>
|
||||
<small class="fr">DRY</small>
|
||||
</div>
|
||||
<div id="rair" class="rains">
|
||||
<div style="width: 63%;"></div>
|
||||
</div>
|
||||
<button class="btn btn-primary btn-block mwr" value="0">MAX WET reset</button>
|
||||
<p>
|
||||
<small id="wrt">last reset: 2.3.2023 16:19:57</small>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 box-c">
|
||||
<h2 id="sta_err">Status messages</h2>
|
||||
<div class="box">
|
||||
<ul class="group" id="err_v"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cfg-modal" class="modal fade" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<img src="../files/settings.svg">
|
||||
<h5 class="modal-title" id="m-t"></h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="m-b"></div>
|
||||
<div class="modal-footer" id="m-f">
|
||||
<button type="button" class="btn btn-primary sb">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var a_m = -1;
|
||||
var m_t = ['DMX/RDM settings', 'Reset timers', 'Reset temperatures', 'Wireless settings', ];
|
||||
|
||||
function open_modal(i) {
|
||||
a_m = i;
|
||||
mhdr_status('');
|
||||
if (a_m < m_t.length) {
|
||||
$('#m-t').html(m_t[a_m])
|
||||
}
|
||||
$('.sb').unbind();
|
||||
$('#m-f').empty();
|
||||
$('#m-f').append(' < button type = "button"
|
||||
class = "btn btn-primary sb" > Save < /button>');if(a_m==0) $('#m-f').show();else $('#m-f').hide();var h='';if(a_m==0){h+=c_txt('dmxa','DMX address','Please put DMX address from 1 to 512');h+=c_opt('dmxp','DMX preset',[1],'Mode ',0,1,'');h+=c_opt('dmxi','DMX input',['wired','wireless','wireless XLR out'],'',0,1,'Can not set wireless input now!');h+=c_txt('rdmn','RDM label','Please insert label,max 32 characters')} else if(a_m==1){h+=c_btn('Power on time reset',0,' rh')} else if(a_m==2){h+=c_btn('LEDs temperature reset',0,' rt');h+=c_btn('PSU temperature reset',3,' rt');h+=c_btn('Driver temperature reset',1,' rt');h+=c_btn('Base temperature reset',2,' rt')} else if(a_m==3){h+=c_btn('Unlink Wireless module',0,' lwu')}$('#m-b').html(h);copy_form_values(1);$('#cfg-modal').modal();$('.sb').bind('click',function(){loader(1);var par=['dmxa','dmxp','dmxi','rdmn'];do_ajax('/set_dmx
|
||||
',pv(par),function (json){if(json){if(json['
|
||||
status ']==0){mhdr_status('
|
||||
suc ');copy_form_values(0);if(a_m==0){console.log(json['
|
||||
dmxf ']);fill_values(json,['
|
||||
dmxf '])}ptit(json['
|
||||
pt ']);close_modal()}show_errors(json['
|
||||
status '],par);loader(0)}})});$('.rh ').bind('
|
||||
click ',function(){loader(1);do_ajax(' / reset_hours ',{index:$(this).attr('
|
||||
value ')},function (json){if(json){mhdr_status('
|
||||
suc ');fill_values(json,['
|
||||
hr0 ','
|
||||
hr1 ','
|
||||
hr2 ','
|
||||
hr3 '])}loader(0)})});$('.rt ').bind('
|
||||
click ',function(){loader(1);do_ajax(' / reset_temps ',{index:$(this).attr('
|
||||
value ')},function (json){if(json){mhdr_status('
|
||||
suc ');fill_values(json,['
|
||||
tmr0 ','
|
||||
tmr1 ','
|
||||
tmr2 '])}loader(0)})});$('.lwu ').bind('
|
||||
click ',function(){loader(1);do_ajax(' / lwm ',{unlink:1},function (json){if(json){fill_values(json,['
|
||||
lwc ','
|
||||
lws ']);mhdr_status('
|
||||
suc ');close_modal()}loader(0)})})}$(document).ready(function(){$('
|
||||
h1 ').html('
|
||||
Device status ');var boxes='
|
||||
';boxes+=box(m_t[0],0,[['
|
||||
',['
|
||||
DMX address; dmxa ','
|
||||
DMX preset; dmxp; < li > < div id = "dmxp_v" > - < /div> < small id = "dmxf_v" > < /small> < /li>','DMX input;dmxi',' < li class = "mt-2" > IP address < /li>;;; < li class = "mt-2" > < div id = "ip_v" > - < /div> < /li>','MAC address;mac',' < li class = "mt-2" > RDM UID < /li>;;; < li class = "mt-2" > < div id = "rdmu_v" > - < /div> < /li>','RDM label;rdmn',]],]);var lot_ta='';lot_ta=' < ul class = "group" > < li > LED on time total < /li> < li > LED on time adaptive < /li> < /ul>',lot_ta+=' < ul class = "group vals" > < li > < div id = "h1_v" > - < /div>h < /li> < li > < div id = "hr1_v" > - < /div>h < /li> < /ul>',boxes+=box('Device times',1,[['',[' < li > Power on time < /li>;;; < li > < div id = "h0_v" > - < /div>h / < div id = "hr0_v" > - < /div>h < /li>',]],],' < p > < small > total / resettable < /small> < /p>'+lot_ta);boxes+=box('Device temperatures',2,[['',[' < li > LEDs < /li>;;; < li > < div id = "t0_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm0_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr0_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',' < li > PSU < /li>;;; < li > < div id = "t3_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm3_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr3_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',' < li > Driver < /li>;;; < li > < div id = "t1_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm1_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr1_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',' < li > Base < /li>;;; < li > < div id = "t2_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm2_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr2_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',]],],' < p > < small > current / maximum / resettable < /small> < /p>');boxes+=box('Wireless state',3,[['',['State;lwc','Signal strength;lws',]],]);boxes+=box('Software versions',-1,[['',['Display System','Module M','Module L1','Module L2','Module O','Module F-A','Module F-B','Module G1','Module G2','Module P','Module C1','Module C2','Module DL',]],],'','sw_vers');boxes+=box('Device state',-1,[['',['Device status;devs',]],],c_btn('',0,' esm dn')+' < div > Current RAINS status < /div> < div > < small class = "fl" > WET < /small> < small class = "fr" > DRY < /small> < /div> < div id = "rai"
|
||||
class = "rains" > < div > < /div> < /div> < div > MAX WET / resettable < /div> < div > < small class = "fl" > WET < /small> < small class = "fr" > DRY < /small> < /div> < div id = "rair"
|
||||
class = "rains" > < div > < /div> < /div>'+c_btn('MAX WET reset',0,' mwr')+' < p > < small id = "wrt" > < /small> < /p>');boxes+=' < div class = "col-12 box-c" > ';boxes+=' < h2 id = "sta_err" > Status messages < /h2>';boxes+=' < div class = "box" > ';boxes+=' < ul class = "group"
|
||||
id = "err_v" > ';boxes+=' < /ul>';boxes+=' < /div>';boxes+=' < /div>';$('#boxes').html(boxes);var emb=$('button.esm');emb.addClass('btn-success');function ems_btn(v){if(v==0){emb.removeClass('sa btn-warning').html('Enter standby mode').show()} else {emb.addClass('sa btn-warning').html('Escape standby mode').show()}}emb.click(function(){var run=true;var s_v=(emb.hasClass('sa') ? 0:1);if((s_v==1)&&!confirm('Are you sure you want to enter standby mode?')) run=false;if(run){do_ajax('/sbm
|
||||
',{s:s_v},function (json){ems_btn(json['
|
||||
sm ']);fill_values(json,['
|
||||
devs '])})}});var bussy=0;function do_5s(){bussy|=(1< < 0);
|
||||
do_ajax('/lwm', {}, function(json) {
|
||||
if (json) {
|
||||
fill_values(json, ['lwc', 'lws'])
|
||||
}
|
||||
bussy &= ~(1 < < 0)
|
||||
});
|
||||
bussy |= (1 < < 1);
|
||||
do_ajax('/reset_temps', {}, function(json) {
|
||||
if (json) {
|
||||
fill_values(json, ['t0', 't1', 't2', 't3', 'tm0', 'tm1', 'tm2', 'tm3', 'tmr0', 'tmr1', 'tmr2', 'tmr3']);
|
||||
$('.tu').html(json['tu'])
|
||||
}
|
||||
bussy &= ~(1 < < 1)
|
||||
});
|
||||
bussy |= (1 < < 3);
|
||||
do_ajax('/reset_hours', {}, function(json) {
|
||||
if (json) {
|
||||
fill_values(json, ['h0', 'h1', 'h2', 'h3', 'hr0', 'hr1', 'hr2', 'hr3'])
|
||||
}
|
||||
bussy &= ~(1 < < 3)
|
||||
});
|
||||
bussy |= (1 < < 4);
|
||||
do_ajax('/devsta', {}, function(json) {
|
||||
if (json) {
|
||||
fill_values(json, ['devs']);
|
||||
$('#rai>div').css('width', json['rains']);
|
||||
$('#rair>div').css('width', json['maxw']);
|
||||
$('#wrt').html('last reset: ' + json['maxwt']);
|
||||
ems_btn(json['sm'])
|
||||
} else {
|
||||
fill_values({
|
||||
devs: 'disconnected'
|
||||
}, ['devs'])
|
||||
}
|
||||
bussy &= ~(1 < < 4)
|
||||
});
|
||||
bussy |= (1 < < 7);
|
||||
do_ajax('/errors', {}, function(json) {
|
||||
if (json) {
|
||||
if (json['err']) {
|
||||
if (json['err'].length) $('#sta_err').addClass('err');
|
||||
else $('#sta_err').removeClass('err');
|
||||
var html = '';
|
||||
for (i = 0; i < json['err'].length; i++) html += ' < li > '+json['
|
||||
err '][i]+' < /li>';$('#err_v').html(html)}}bussy&=~(1< < 7)
|
||||
})
|
||||
}
|
||||
do_ajax('/status_i', {}, function(json) {
|
||||
if (json) {
|
||||
fill_values(json, ['dmxa', 'dmxp', 'dmxf', 'dmxi', 'pt', 'ip', 'mac', 'rdmu', 'rdmn']);
|
||||
ptit(json['pt']);
|
||||
$('.tu').html(json['tu'])
|
||||
}
|
||||
});
|
||||
do_ajax('/reset_hours', {}, function(json) {
|
||||
if (json) {
|
||||
fill_values(json, ['h0', 'h1', 'h2', 'h3', 'hr0', 'hr1', 'hr2', 'hr3'])
|
||||
}
|
||||
});
|
||||
do_ajax('/sw_ver', {}, function(json) {
|
||||
if (json) {
|
||||
$('#sw_vers li').each(function(i) {
|
||||
var v = json['vers'][i];
|
||||
$(this).html(v == 0 ? '-' : Math.floor(v / 10) + '.' + (v % 10))
|
||||
})
|
||||
}
|
||||
});
|
||||
do_5s();
|
||||
setInterval(function() {
|
||||
if (bussy == 0) do_5s()
|
||||
}, 5000);
|
||||
$('button.mwr').click(function() {
|
||||
do_ajax('/mwres', {}, function(json) {
|
||||
if (json) {
|
||||
$('#rair>div').css('width', json['maxw']);
|
||||
$('#wrt').html('last reset: ' + json['maxwt'])
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1
iforte/logs.html
Normal file
1
iforte/logs.html
Normal file
File diff suppressed because one or more lines are too long
1
iforte/personality.html
Normal file
1
iforte/personality.html
Normal file
File diff suppressed because one or more lines are too long
1
iforte/sensors.html
Normal file
1
iforte/sensors.html
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user