Compare commits

...

42 Commits

Author SHA1 Message Date
d9ae5f8c2b fix deploy 2025-04-12 22:00:12 +02:00
116458feda Merge branch 'main' of https://nas.vincent-bouquet.fr/gitea/Vincent/reap-simulator-vincent 2025-04-12 21:51:38 +02:00
238dec4050 move to src for deploy 2025-04-12 21:50:58 +02:00
Kwimbee
0b8f06099a fix DMX sniff on T1 2025-01-23 17:11:48 +01:00
Kwimbee
ea5680b473 indent fix + typo + dmx sniff fix 2025-01-23 13:26:14 +01:00
Vincent BOUQUET
c7fbc0f50c fix pressure test failing
pressure should not be raising if test fails
2023-12-16 15:48:40 +01:00
Kwimbee
4f427eda4e no return 2023-12-14 11:19:24 +01:00
Kwimbee
b306a982de discovery page now dynamic 2023-12-12 17:33:04 +01:00
Kwimbee
8800fc6c97 fix max wet bar init value 2023-12-12 17:32:51 +01:00
Vincent BOUQUET
1af18ea84c format index 2023-12-11 21:31:29 +01:00
Vincent BOUQUET
e31b85246c implement max wet and rains sim 2023-12-11 21:31:10 +01:00
Vincent BOUQUET
05387f7bec fix indents 2023-12-11 21:30:48 +01:00
Vincent BOUQUET
df2d53dbca unnecessary logs and functions 2023-12-11 21:30:09 +01:00
Vincent BOUQUET
c61d29e0dc serialize name fix 2023-12-11 21:28:27 +01:00
Vincent BOUQUET
232b9ecf08 big code push 2023-12-02 12:46:48 +01:00
Vincent BOUQUET
105a472398 prettify t1 pers 2023-12-02 12:46:34 +01:00
Vincent BOUQUET
c22ef45f38 fix t1 temp u 2023-12-02 11:53:38 +01:00
Vincent BOUQUET
1136ad52b4 discovery fix 2023-11-26 10:48:12 +01:00
Vincent BOUQUET
881342c485 prepare for simulated rainsq 2023-11-25 18:42:30 +01:00
Vincent BOUQUET
a014889cd8 fix tabs 2023-11-25 18:42:13 +01:00
Vincent BOUQUET
5f0eca6eae remove unused hp mode 2023-11-25 18:41:59 +01:00
Vincent BOUQUET
f1e677dfb1 add wireless module infos 2023-11-25 18:41:44 +01:00
Vincent BOUQUET
2b19c030f8 indicate not functionnal log filters 2023-11-25 17:18:58 +01:00
Vincent BOUQUET
2b199eaf74 push all 2023-11-25 17:08:22 +01:00
Vincent BOUQUET
f9e2728a0d Revert "Revert "integrate discovery with sess storage""
This reverts commit bb3ee48504.
2023-11-25 16:30:06 +01:00
Vincent BOUQUET
bb3ee48504 Revert "integrate discovery with sess storage"
This reverts commit d041c5ac65.
2023-11-25 16:29:14 +01:00
Vincent BOUQUET
1737f8a53e make all pages return to home 2023-11-25 16:26:39 +01:00
Vincent BOUQUET
36185970da make ident persistent 2023-11-25 16:25:43 +01:00
Vincent BOUQUET
d041c5ac65 integrate discovery with sess storage 2023-11-25 16:25:33 +01:00
Vincent BOUQUET
23a8cd5555 fix temperature unit 2023-11-25 16:25:04 +01:00
Vincent BOUQUET
0ddc144a54 add return to home 2023-11-25 16:24:35 +01:00
Vincent BOUQUET
7c190051ca fix title 2023-11-25 16:24:13 +01:00
e1005e3314 Revert "Revert "Revert "test commit"""
This reverts commit bfc429b282.
2023-08-25 20:55:00 +02:00
bfc429b282 Revert "Revert "test commit""
This reverts commit a43ff0a775.
2023-08-25 20:46:12 +02:00
a43ff0a775 Revert "test commit"
This reverts commit 8a6e91ec2c.
2023-08-25 20:45:28 +02:00
8a6e91ec2c test commit 2023-08-25 20:40:18 +02:00
7d5b6acc4a no more promotion 2023-03-04 18:37:01 +01:00
8e2605877f todays work 2023-03-04 17:50:23 +01:00
164b847425 cleanup reindent 2023-03-04 15:21:43 +01:00
819f469007 delete artifacts 2023-03-04 15:01:21 +01:00
0d26e6f394 pers cleanup 2023-03-04 15:00:45 +01:00
dce8889a21 prefix session storage T1 + fix freq and them/fannl 2023-03-03 18:45:35 +01:00
33 changed files with 2901 additions and 3526 deletions

18
deploy.ps1 Normal file
View File

@@ -0,0 +1,18 @@
# Define variables
$localFolder = "./src/."
$remoteUser = "debian"
$remoteHost = "robe.vincent-bouquet.fr"
$remotePath = "/var/www/html/public/reap"
$port = 22 # Change this if your SSH server uses a different port
# Build the SCP commands
$sshCommand = "ssh -p ${port} ${remoteUser}@${remoteHost} 'mkdir -p `"${remotePath}`" && sudo rm -rf `"${remotePath}/*`"'"
$scpCommand = "scp -r -P ${port} `"${localFolder}`" ${remoteUser}@${remoteHost}:`"${remotePath}`""
# Execute SSH command to clean remote directory
Write-Host "Cleaning remote directory: $remotePath"
Invoke-Expression $sshCommand
# Execute the command
Write-Host "Executing: $scpCommand"
Invoke-Expression $scpCommand

View File

@@ -1,359 +0,0 @@
$(document).ready(function() {
// Sets the proper fixture name in the header and title
var fixturename = "Robin iForte - Simulated";
$('#pth').html(fixturename)
$(document).prop('title', fixturename)
$('body').prepend(generateNavBar());
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);
}
});
});
});
// handle RDM ident
var idntb = $('#idnt img');
$('#idnt').click(function() {
idntb.toggleClass('a');
});
});
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(showheader) {
if (showheader) $('#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) {
console.log("url : " + p_url);
console.log("data : " + p_data);
console.log("callback function : " + f);
console.log("callback params : " + i);
console.log("async : " + a);
}
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="../files/settings.svg"></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,'&deg;');
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 generateNavBar() {
var o = '<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">';
o += '<div class="container">';
o += '<a class="navbar-brand" href="./index.html"><img src="../files/robe_logo_white.svg"></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="./index.html">Status</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="./personality.html">Personality</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="./logs.html">Logs</a>';
o += '</li>';
o += '<li class="nav-item snz">';
o += '<a class="nav-link" href="./sensors.html">RAINS logs</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="./discovery.html">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="../files/identify.svg"></a>';
o += '</li>';
o += '</ul>';
o += '</div>';
o += '</div>';
o += '</nav>';
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="../files/settings.svg">';
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">&times;</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">&lt;</option><option value="3">&gt;</option>';
html += '<option value="4">&lt;=</option><option value="5">&gt;=</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;
}

View File

@@ -1,279 +0,0 @@
<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 WILL BE ADDED HERE BY FUNCTION IN BASE JS -->
<div class="fixed-top text-center device-label" id="pth"></div>
<div class="container-fluid in">
<h1>Discovery</h1>
<div class="row" id="boxes">
<div class="col-12">
<div class="clearfix">
<div class="float-left pt02">
<input type="checkbox" id="w-ot">
<label for="w-ot" class="pl04"> Move devices with warning to top</label>
</div>
<button class="btn btn-primary float-right" id="scan">Discover (1)</button>
</div>
<h2>Columns selection (max. 7 items)</h2>
<div class="clearfix" id="cols">
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-0">
<label for="cchb-0">DMX address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-1">
<label for="cchb-1">DMX preset</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-2">
<label for="cchb-2">RDM UID</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-3">
<label for="cchb-3">IP address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-4" disabled="disabled">
<label for="cchb-4">Head temperature [°C]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-5" disabled="disabled">
<label for="cchb-5">Relative humidity [%]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-6">
<label for="cchb-6">RAINS (max wet)</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-7" disabled="disabled">
<label for="cchb-7">Last pressure test</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-8">
<label for="cchb-8">Device status</label>
</div>
</div>
<div class="clearfix">
<button class="btn btn-primary float-right" id="acs">Apply selection</button>
</div>
<div class="table-responsive">
<table class="table mt-2" id="d-t">
<thead id="dmax">
<tr>
<th>
<i class="as"></i>
<i class="ab"></i> Device
</th>
<th>
<i></i>
<i class="ab"></i> DMX address
</th>
<th>
<i></i>
<i class="ab"></i> DMX preset
</th>
<th>
<i></i>
<i class="ab"></i> RDM UID
</th>
<th>
<i></i>
<i class="ab"></i> IP address
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Head temperature [°C]
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Relative humidity [%]
</th>
<th>
<i></i>
<i class="ab"></i> RAINS (max wet)
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Last pressure test
</th>
<th>
<i></i>
<i class="ab"></i> Device status
</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr id="myd" class="myd">
<td>iForte</td>
<td>350</td>
<td>Mode 1 (54 channels)</td>
<td>52:53:01:2c:00:0e</td>
<td>2.247.136.14</td>
<td style="display: none;">47</td>
<td style="display: none;">14.0</td>
<td>
<div class="rains sl">
<div style="width:63%"></div>
</div>
</td>
<td style="display: none;">2.3.2023 16:19:02 - OK</td>
<td>active</td>
<td></td>
</tr>
</tbody>
<tbody class="rd" id="scd"></tbody>
</table>
</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>
$(document).ready(function() {
$('h1').html('Discovery');
$('#boxes').html(' < div class = "col-12" > < div class = "clearfix" > < div class = "float-left pt02" > < input type = "checkbox"
id = "w-ot" > < label
for = "w-ot"
class = "pl04" > Move devices with warning to top < /label> < /div> < button class = "btn btn-primary float-right"
id = "scan"
disabled > < div class = "loader" > < /div> Discovering < /button> < /div> < h2 > Columns selection(max.7 items) < /h2> < div class = "clearfix"
id = "cols" > < /div> < div class = "clearfix" > < button class = "btn btn-primary float-right"
id = "acs" > Apply selection < /button> < /div> < div class = "table-responsive" > < table class = "table mt-2"
id = "d-t" > < thead id = "dmax" > < tr > < th > < i > < /i> < i class = "ab" > < /i> Device < /th> < /tr> < /thead> < tbody > < tr id = "myd"
class = "myd" > < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < /tr> < /tbody> < tbody class = "rd"
id = "scd" > < /tbody> < /table> < /div> < /div>');var s=0;var bsy=false;var i=0;var ti;var tb;var tr;var c_n=['DMX address','DMX preset','RDM UID','IP address','Head temperature [&deg;C]','Relative humidity [%]','RAINS (max wet)','Last pressure test','Device status'];var c_js=['dmxa','dmxp','rdm','ip','t','rh','wet','prt','sta'];var c_s=get_cookie('dc_sel',335);var i=0;c_n.forEach(function(v){$('#dmax>tr').append(' < th > < i > < /i> < i class = "ab" > < /i> '+v+' < /th>');$('#cols').append(' < div class = "dchb" > < input type = "checkbox"
class = "cchb"
'+((c_s & (1< < i)) ? ' checked' : '') + ' id="cchb-' + i + '"> < label
for = "cchb-'+i+'" > '+v+' < /label> < /div>');i++});$('#dmax>tr').append(' < th > & nbsp; < /th>');var ccb=$('#cols .cchb');var tcs=$('#dmax>tr>th');function upd_cols_in_rows(){var c_s=get_cookie('dc_sel',335);var r=$('#d-t>tbody>tr');r.each(function(){var c=$(this).find('td');c.each(function(i){if((i > 0)&&(i<=c_js.length)){if(c_s & (1<<(i - 1))) $(this).show();else $(this).hide()}})})}function ccb_en_dis(){var chck=ccb.filter(':checked');if(chck.length>=6){ccb.filter(':not(":checked")').attr('disabled',true)} else ccb.removeAttr('disabled')}ccb_en_dis();$('.cchb').change(function(){ccb_en_dis()});$('#acs').click(function(){var c_s=0;var i=0;c_n.forEach(function(v){if(ccb.eq(i).prop('checked')) c_s|=(1< < i);
if (c_s & (1 < < i)) tcs.eq(i + 1).show();
else tcs.eq(i + 1).hide();
i++
});
document.cookie = 'dc_sel=' + c_s;
upd_cols_in_rows();
var ups = $('#dmax>tr i.as');
if (ups.parent().is(':hidden')) tcs.eq(0).find('i').eq(0).click()
});
$('#acs').click();
$('#scan').click(function() {
if (bsy) return;
$('#dmax').removeClass('dmax');
$('#scan').html(' < div class = "loader" > < /div> Discovering');$('#scd').html('');set_bsy(true);set_bsy(true,true);do_ajax('/start - scan ',{},function (json){if(json){set_bsy(false);s=0;clearInterval(tr)} else set_bsy(false);$('
body ').click()})});function set_bsy(v,b_o=false){if(!b_o) bsy=v;clearTimeout(tb);tb=setTimeout(function(){if(!v) $('
#scan ').removeAttr('
disabled ');else $('
#scan ').attr('
disabled ','
1 ')},b_o ? 5:400)}function max_w(w){if(isNaN(w)) return w;else return ' < div class = "rains sl" > < div style = "width:'+w+'%" > < /div> < /div>'}function do_scan(){if(bsy) return;switch (s){case 0:set_bsy(true);do_ajax('/get - child ',{},function (json){if(json){if(json['
sd ']==0){s=1;i=0;if(json['
max ']==1) $('
#dmax ').addClass('
dmax ')}} else s=255;set_bsy(false)});break;case 1:set_bsy(true);do_ajax(' / get - child ','
i = '+i,function (json){if(json){if(json['
ip ']){$('
#scd ').append(' < tr data - value = "'+json['ip']+'"
class = "dn dis" > < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < /td> < td > < img class = "rdmi a dn"
src = "../files/identify.svg" > < button class = "btn btn-danger btn-sm drem dn" > & #10005;</button>
</td>
</tr>');upd_cols_in_rows();i++} else s= 2
}
else s = 255;
set_bsy(false)
});
break;
case 2: clearInterval(tr);
set_bsy(true);
$('#scan').html(' < div class = "loader" > < /div> Collecting');var devs=$('#scd tr');if(devs.length==0){$('#scan').html('Discover (1)');set_bsy(false);s=255} else {i=0;devs.each(function(){var r=$(this);if(r.attr('data-value')){do_ajax('http:/
'+' / '+r.attr('
data - value ')+' / remote ',{},function (json){var t=r.find('
td ');if(json){t.eq(0).html(' < a href = "http:/'+'/'+r.attr('data-value')+'"
target = "_blank" > '+json['
dn ']+' < /a>');c_js.forEach(function(v,i){if(json[v]){if(i!=6) t.eq(i+1).html(json[v]);else {t.eq(i+1).html(max_w(json[v]));t.eq(i+1).attr('data-value',json[v])}} else t.eq(i+1).html('-')});r.removeClass('na');r.find('.drem').hide();if(json['stat']==1) r.addClass('err');else r.removeClass('err');r.removeClass('dis');r.show();if(json['rdmi']==1) r.find('.rdmi').show();else r.find('.rdmi').hide()} else {if(r.hasClass('dis')){r.remove()} else {r.addClass('na').removeClass('err');r.find('.drem').show()}t.eq(9).html('disconnected')}i++;if(i>=devs.length){set_bsy(false);s=255;$('#scan').html('Discover ('+($('#scd tr').length+1)+')');tr=setInterval(function(){set_bsy(true,true);s=2},10000);$('#d-t th i.as').click()}})} else { i++}})}break}}ti=setInterval(do_scan,100);function getp(){do_ajax('/pdev_i
',{},function (json){var c=$('
#myd > td ');if(json){c.eq(0).html(json['
dn ']);c_js.forEach(function(v,i){c.eq(i+1).html(i==6 ? max_w(json[v]):json[v])});upd_cols_in_rows();$('
#myd ').removeClass('
na ')} else {c.eq(9).html('
disconnected ');$('
#myd ').addClass('
na ')}})}getp();setInterval(getp,8000);do_ajax(' / status_i ',{},function (json){if(json){ptit(json['
pt '])}});$(document).on('
click ','.drem ',function(){if(confirm('
Are you sure to remove offline device from list ? ')) $(this).parents().eq(1).remove()});var sort_i=0;var sort_d=-1;function ldz3(v){return ('
000 '+v).substr(-3,3)}function my_sort(a,b){var A;var B;console.log(A);if(sort_i==7){B=$(a).children('
td ').eq(sort_i).attr('
data - value ');A=$(b).children('
td ').eq(sort_i).attr('
data - value ')} else {A=$(a).children('
td ').eq(sort_i).text();B=$(b).children('
td ').eq(sort_i).text()}switch (sort_i){case 1:case 5:case 6:case 7:A=parseInt(A);B=parseInt(B);break;case 4:A=A.split('.
');A=ldz3(A[0])+ldz3(A[2])+ldz3(A[3])+ldz3(A[4]);B=B.split('.
');B=ldz3(B[0])+ldz3(B[2])+ldz3(B[3])+ldz3(B[4]);break}if(A > B) return 1*sort_d;else if(A < B) return -1 * sort_d;
else return 0
}
$('table th i').click(function() {
$('table th i').removeClass('as');
$(this).addClass('as');
sort_i = $(this).parent().index();
sort_d = $(this).hasClass('ab') ? -1 : 1;
document.cookie = 'srt_s=' + sort_i;
document.cookie = 'srt_d=' + sort_d;
var et = $('#w-ot').prop('checked');
if (et == true) {
var rw_e = $('#d-t tbody.rd tr.err').remove();
var rw_n = $('#d-t tbody.rd tr.na').remove();
rw_e.sort(my_sort);
rw_n.sort(my_sort)
}
var rw = $('#d-t tbody.rd tr').remove();
rw.sort(my_sort);
if (et == true) {
$.each(rw_e, function(i, r) {
$('#d-t').children('tbody.rd').append(r)
});
$.each(rw_n, function(i, r) {
$('#d-t').children('tbody.rd').append(r)
})
}
$.each(rw, function(i, r) {
$('#d-t').children('tbody.rd').append(r)
})
});
sort_d = get_cookie('srt_d', 1);
$('#d-t th i').eq(get_cookie('srt_s', 0) * 2 + (sort_d == 1 ? 0 : 1)).click();
if (get_cookie('wot', 1) == 1) $('#w-ot').prop('checked', true);
$('#w-ot').change(function() {
document.cookie = 'wot=' + ($('#w-ot').prop('checked') == true ? 1 : 0);
$('#d-t th i.as').click()
})
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,442 +0,0 @@
<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 WILL BE ADDED HERE BY FUNCTION IN BASE JS -->
<div class="fixed-top text-center device-label" id="pth"></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(){
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>

View File

@@ -1,568 +0,0 @@
<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 WILL BE ADDED HERE BY FUNCTION IN BASE JS -->
<div class="fixed-top text-center device-label" id="pth">iForte</div>
<div class="container-fluid in">
<h1>Personality</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>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>
<div id="rdmn_v">iForte</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Ethernet settings <a class="cfg" onclick="open_modal(1);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Ethernet mode</li>
<li>Ethernet to DMX</li>
<li>ArtNet universe</li>
<li>MANet I/II universe</li>
<li>MaNet session ID</li>
<li>sACN universe</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="emod_v">disable</div>
</li>
<li>
<div id="ee2d_v">off</div>
</li>
<li>
<div id="eanu_v">0</div>
</li>
<li>
<div id="emau_v">1</div>
</li>
<li>
<div id="emas_v">1</div>
</li>
<li>
<div id="esau_v">1</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Pan/Tilt settings <a class="cfg" onclick="open_modal(2);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Pan reverse</li>
<li>Tilt reverse</li>
<li>Pan/Tilt feedback</li>
<li>Pan/Tilt mode</li>
<li>Pan/Tilt EMS</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="pr_v">off</div>
</li>
<li>
<div id="tr_v">off</div>
</li>
<li>
<div id="ptf_v">on</div>
</li>
<li>
<div id="ptm_v">speed</div>
</li>
<li>
<div id="pte_v">on</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Blackout settings <a class="cfg" onclick="open_modal(3);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Blackout DMC</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="bldmc_v">off</div>
</li>
</ul>
<h3>Active blackout while</h3>
<ul class="group">
<li>Pan/Tilt moving</li>
<li>Gobo wheel moving</li>
<li>Color wheel moving</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="blptm_v">off</div>
</li>
<li>
<div id="blgwm_v">off</div>
</li>
<li>
<div id="blprm_v">off</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Screen settings <a class="cfg" onclick="open_modal(4);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Display intensity</li>
<li>Screensaver delay</li>
<li>Touchscreen lock</li>
<li>Display orientation</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="dint_v">10</div>
</li>
<li>
<div id="dsd_v">5 min</div>
</li>
<li>
<div id="dtl_v">off</div>
</li>
<li>
<div id="dor_v">auto</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Color settings <a class="cfg" onclick="open_modal(7);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Dimmer curve</li>
<li>High power mode</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="cdimc_v">square law</div>
</li>
<li>
<div id="hpwrm_v">off</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Date &amp; time settings <a class="cfg" onclick="open_modal(5);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Date</li>
<li>Time</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="dtd_v">2</div>. <div id="dtmo_v">3</div>. <div id="dty_v">2023</div>
</li>
<li>
<div id="dth_v">16</div>: <div id="dtmi_v">44</div>: <div id="dts_v">50</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Other settings <a class="cfg" onclick="open_modal(6);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>Follow spot mode</li>
<li>LEDs output frequency (Hz)</li>
<li>Fan mode</li>
<li>Gobo indexing</li>
<li>Temperature unit</li>
<li>Display buttons</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="fsmo_v">off</div>
</li>
<li>
<div id="frqs_v">600.0000</div>
</li>
<li>
<div id="fanm_v">auto</div>
<div id="themq" class="pl03 dn" style="display: none;">( <div id="fannl_v">0</div>%) </div>
</li>
<li>
<div id="gind_v">max. speed &amp; shortcut</div>
</li>
<li>
<div id="tmpu_v">°C</div>
</li>
<li>
<div id="btns_v">on</div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Pressure test</h2>
<div class="box prst text-center">
<span></span>
<span></span>
<span></span>
<button class="btn btn-success btn-block" id="pt_b">Start test</button>
</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', 'Ethernet settings', 'Pan/Tilt settings', 'Blackout settings', 'Screen settings', 'Date & time settings', 'Other settings', 'Color settings', 'Lamp settings', ];
var addrs = ['set_dmx', 'eth_s', 'pt_s', 'bl_s', 'dis_s', 'ldt_s', 'oth_s', 'col_s', 'lamp_s', ];
var params = [
['dmxa', 'dmxp', 'dmxi', 'rdmn'],
['emod', 'ee2d', 'eanu', 'emau', 'emas', 'esau'],
['pr', 'tr', 'ptf', 'ptm', 'pte'],
['bldmc', 'blptm', 'blprm', 'blgwm', 'bltim'],
['dint', 'dsd', 'dtl', 'dor'],
['dtd', 'dtmo', 'dty', 'dth', 'dtmi', 'dts'],
['mics', 'fanm', 'tmpu', 'them', 'cpm', 'fannl', 'fsmo', 'btns', 'freq', 'freqa', 'gind', 'gwhm'],
['ccri', 'cdimc', 'hpwrm', 'ccalm', 'cmixm', 'chrwh', 'thefs', 'whip83z'],
['lonof', 'lpwr', 'ligde', 'llise', 'lonpon', 'lofvd', 'londp', 'lofdm'],
];
var frq = 0;
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>');var off_on_l=['off','on'];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_rad('emod','Ethernet mode',['disable','ArtNet','gMA1','gMA2','sACN'],'','');h+=c_rad('ee2d','Ethernet to DMX',off_on_l,'','');h+=c_txt('eanu','ArtNet universe','Please put ArtNet universe from 0 to 255');h+=c_txt('emau','MANet I/II
universe ','
Please put MANet I / II universe from 1 to 256(64
for MANet I)
');h+=c_txt('
emas ','
MANet session ID ','
Please put MANet session ID from 1 to 32 ');h+=c_txt('
esau ','
sACN universe ','
Please put sACN universe from 1 to 32000 ')} else if(a_m==2){h+=' < div class = "row" > ';h+=c_rad('
pr ','
Pan reverse ',off_on_l,'
','
col - 6 ');h+=c_rad('
tr ','
Tilt reverse ',off_on_l,'
','
col - 6 ');h+=c_rad('
ptf ','
Pan / Tilt feedback ',off_on_l,'
','
col - 6 ');h+=c_rad('
ptm ','
Pan / Tilt Mode ',['
speed ','
time '],'
','
col - 6 ');h+=c_rad('
pte ','
Pan / Titl EMS ',off_on_l,'
','
col - 6 ');h+=' < /div>'} else if(a_m==3){h+=c_rad('bldmc','Blackout DMC',off_on_l,'','');h+=' < h3 > Active blackout
while < /h3>';h+=c_rad('blptm','Pan/Tilt
moving ',off_on_l,'
','
');h+=c_rad('
blgwm ','
Gobo wheel moving ',off_on_l,'
','
');h+=c_rad('
blprm ','
Color wheel moving ',off_on_l,'
','
')} else if(a_m==4){h+=c_opt('
dint ','
Display intensity ',[10],'
',0,1,'
');var dsd_dtl_l=['
off ','
1 min ','
2 min ','
3 min ','
4 min ','
5 min ','
6 min ','
7 min ','
8 min ','
9 min ','
10 min '];h+=c_opt('
dsd ','
Screensaver delay ',dsd_dtl_l,'
',0,0,'
');h+=c_opt('
dtl ','
Touchscreen lock ',dsd_dtl_l,'
',0,0,'
');h+=c_rad('
dor ','
Display orientation ',['
normal ','
inverted ','
auto '],'
')} else if(a_m==5){h+=' < div class = "row" > ';h+=c_txt('
dtd ','
Day ','
','
col - 4 ');h+=c_txt('
dtmo ','
Month ','
','
col - 4 ');h+=c_txt('
dty ','
Year ','
','
col - 4 ');h+=c_txt('
dth ','
Hour ','
','
col - 4 ');h+=c_txt('
dtmi ','
Minute ','
','
col - 4 ');h+=c_txt('
dts ','
Second ','
','
col - 4 ');h+=' < /div>';h+=' < button class = "btn btn-primary btn-block uldt" > Use local date & time < /button>'} else if(a_m==6){h+=c_opt('fsmo','Follow spot mode',['off','soft','medium','hard'],'',0,0,'');h+=c_rad('frqs','LEDs output frequency (Hz)',['300','600','1200','2400'],'','');h+=' < div class = "form-group" > ';h+=' < label
for = "frqa"
class = "col-form-label" > LEDs frequency adjust < /label>';h+=' < div class = "row" > ';h+=' < div class = "col-7 col-sm-8" > < input type = "range"
min = "0"
max = "1663"
class = "form-control"
id = "frqa" > < /div>';h+=' < div class = "col-5 col-sm-4 mt06 text-right"
id = "frq_bv" > < /div>';h+=' < /div>';h+=' < /div>';h+=c_rad('fanm','Fan mode',['auto','high','quiet'],'','');h+=' < div class = "form-group"
id = "fannl_fg" > ';h+=' < label
for = "fannl"
class = "col-form-label" > Fan noise level < /label>';h+=' < div class = "row" > ';h+=' < div class = "col-9 col-sm-10" > < input type = "range"
min = "0"
max = "100"
class = "form-control"
id = "fannl" > < /div>';h+=' < div class = "col-3 col-sm-2 mt06 text-right" > 100 % < /div>';h+=' < /div>';h+=' < /div>';h+=c_opt('gind','Gobo indexing',['max. speed & shortcut','follow spd. & dir.','max. spd. & follow dir.'],'',0,0,'');h+=c_rad('tmpu','Temperature unit',['&deg;C','&deg;F'],'','');h+=c_rad('btns','Display buttons',off_on_l,'','')} else if(a_m==7){h+=' < div class = "row" > ';h+=c_rad('
cdimc ','
Dimmer curve ',['
linear ','
square law '],'
','
col - 6 ');h+=c_rad('
hpwrm ','
High power mode ',off_on_l,'
','
')} else if(a_m==8){h+=c_rad('
lonof ','
Lamp status ',off_on_l,'
','
');h+=' < div class = "form-group"
id = "ligde_fg" > ';h+=' < label
for = "ligde"
class = "col-form-label" > Lamp ignition delay < /label>';h+=' < div class = "row" > ';h+=' < div class = "col-9 col-sm-10" > < input type = "range"
min = "0"
max = "90"
class = "form-control"
id = "ligde" > < /div>';h+=' < div class = "col-3 col-sm-2 mt06 text-right" > < /div>';h+=' < /div>';h+=' < /div>';h+=' < div class = "row" > ';h+=c_rad('
llise ','
Lamp light sensor ',off_on_l,'
','
col - 6 ');h+=c_rad('
lonpon ','
Lamp on power on ',off_on_l,'
','
col - 6 ');h+=c_rad('
lofvd ','
Lamp off via DMX ',off_on_l,'
','
col - 6 ');h+=c_rad('
londp ','
Lamp on
if DMX present ',off_on_l,'
','
col - 6 ');h+=c_rad('
lofdm ','
Lamp off
if DMX missing ',off_on_l,'
','
col - 6 ');h+=' < /div>'}$('#m-b').html(h);$('#m-f').show();copy_form_values(1);if(a_m==8){if($('#ligde_v').html()=='off'){$('#ligde').val(0)}}$('#cfg-modal').modal();$('.sb').bind('click',function(){loader(1);var p_add='';if(a_m==6){p_add='&frq='+frq}do_ajax(addrs[a_m],pv(params[a_m])+p_add,function (json){if(json){if(json['status']==0){mhdr_status('suc');copy_form_values(0);if(a_m==0){fill_values(json,['dmxf']);ptit(json['pt'])} else if(a_m==6){if(json['fanm']=='quiet') $('#themq').show();else $('#themq').hide();$('#frqs_v').html(frq_s(frq))} else if(a_m==8){if($('#ligde').val()==0) $('#ligde_v').html('off')}close_modal()}show_errors(json['status'],params[a_m]);loader(0)}})});if(a_m==5){$('.uldt').bind('click',function(){var date=new Date();$('#dtd').val(date.getDate());$('#dtmo').val(date.getMonth()+1);$('#dty').val(date.getFullYear());$('#dth').val(('0'+date.getHours()).slice(-2));$('#dtmi').val(('0'+date.getMinutes()).slice(-2));$('#dts').val(('0'+date.getSeconds()).slice(-2))})} else if(a_m==6){$('#fannl').on('input change',function(){$(this).parent().next().html($(this).val()+'%')});$('#fannl').change();$('input[name=fanm]').on('change',function(){if($('input[name=fanm]:checked').val()==2) $('#fannl_fg').show();else $('#fannl_fg').hide()});$('input[name=fanm]').change();$('input[name=frqs]').eq(frq>>12).attr('checked','checked');$('#frqa').val(frq & 0xfff);$('input[name=frqs]').on('change',function(){frq=$('input[name=frqs]:checked').val()< < 12; frq |= 0x340; $('#frqa').val(0x340); $('#frq_bv').html(frq_s(frq) + ' Hz')
});
$('#frqa').on('input change', function() {
frq &= 0xf000;
frq |= $('#frqa').val();
$('#frq_bv').html(frq_s(frq) + ' Hz')
});
$('#frqa').change()
}
else if (a_m == 8) {
$('#ligde').on('input change', function() {
var o = $(this).parent().next();
if ($(this).val() == 0) o.html('off');
else o.html($(this).val() + 's')
});
$('#ligde').change()
}
}
function frq_s(frq) {
var f = 360000000000;
var k = (0x700) - (frq & 0xfff);
var arr = 465 + ((k >> 8) & 0x0f);
var x = k & 0xff;
f = f * (1 << (frq >> 12)) / (arr * (256 - x) + (arr + 1) * (x));
return Math.floor(f / 10000) + '.' + ('0000' + Math.floor(f % 10000)).slice(-4)
}
$(document).ready(function() {
$('h1').html('Personality');
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','RDM label;rdmn',]],]);boxes+=box(m_t[1],1,[['',['Ethernet mode;emod','Ethernet to DMX;ee2d','ArtNet universe;eanu','MANet I/II universe;emau','MaNet session ID;emas','sACN universe;esau',]],]);boxes+=box(m_t[2],2,[['',['Pan reverse;pr','Tilt reverse;tr','Pan/Tilt feedback;ptf','Pan/Tilt mode;ptm','Pan/Tilt EMS;pte',]],]);boxes+=box(m_t[3],3,[['',['Blackout DMC;bldmc',]],['Active blackout while',['Pan/Tilt moving;blptm','Gobo wheel moving;blgwm','Color wheel moving;blprm',]],]);boxes+=box(m_t[4],4,[['',['Display intensity;dint','Screensaver delay;dsd','Touchscreen lock;dtl','Display orientation;dor',]],]);boxes+=box(m_t[7],7,[['',['Dimmer curve;cdimc','High power mode;hpwrm',]],]);boxes+=box(m_t[5],5,[['',['Date;; < li > < div id = "dtd_v" > - < /div>. < div id = "dtmo_v" > - < /div>. < div id = "dty_v" > - < /div> < /li>','Time;; < li > < div id = "dth_v" > - < /div>: < div id = "dtmi_v" > - < /div>: < div id = "dts_v" > - < /div> < /li>',]],]);boxes+=box(m_t[6],6,[['',['Follow spot mode;fsmo','LEDs output frequency (Hz);frqs','Fan mode;fanm; < li > < div id = "fanm_v" > - < /div> < div id = "themq"
class = "pl03 dn" > ( < div id = "fannl_v" > < /div>%) < /div> < /li>','Gobo indexing;gind','Temperature unit;tmpu','Display buttons;btns',]],]);boxes+=' < div class = "col-md-6 col-xl-4 box-c" > ';boxes+=' < h2 > Pressure test < /h2>';boxes+=' < div class = "box prst text-center" > ';boxes+=' < span > < /span>';boxes+=' < span > < /span>';boxes+=' < span > < /span>';boxes+=' < button class = "btn btn-success btn-block"
id = "pt_b" > Start test < /button>';boxes+=' < /div>';boxes+=' < /div>';$('#boxes').html(boxes);$('#themq').hide();var bussy=false;function do_1s(){bussy=true;do_ajax('/ldt_s
',{},function (json){if(json){fill_values(json,['
dtd ','
dtmo ','
dty ','
dth ','
dtmi ','
dts '])}bussy=false})}do_ajax(' / status_i ',{},function (json){if(json){fill_values(json,['
dmxa ','
dmxp ','
dmxf ','
dmxi ','
pt ','
rdmn ']);ptit(json['
pt '])}});for (var i in addrs){if(i==0) continue;do_ajax(' / '+addrs[i],{},function (json,i){if(json){fill_values(json,params[i]);if(i==6){if(json['
fanm ']=='
quiet ') $('
#themq ').show();frq=json['
frq '];$('
#frqs_v ').html(frq_s(frq))} else if(i==8){if(json['
ligde ']==0) $('
#ligde_v ').html('
off ')}}},i)}do_1s();var pt_d=5;var pt_t=pt_t;var ptl=$('.box.prst span ');var pt_b=$('
#pt_b ');function press_w(json){if(!json) return;if(json['
ts ']==1){pt_d=1;ptl.eq(0).html(json['
l1 ']);ptl.eq(1).removeAttr('
class ').html(json['
l2 '].replace('
\u007f ',' & deg;
'));ptl.eq(2).html(json['
l3 '].replace('
\u007f ',' & deg;
'));if(pt_b.hasClass('
btn - success ')){pt_b.toggleClass('
btn - danger btn - success ');pt_b.html('
Stop test ')}} else {pt_d=5;if(pt_b.hasClass('
btn - danger ')){pt_b.toggleClass('
btn - danger btn - success ');pt_b.html('
Start test ');if(json['
res '] > 0){ptl.eq(0).html('
');ptl.eq(2).html('
');if(json['
res ']==1) ptl.eq(1).addClass('
ptok ').html('
OK ');else ptl.eq(1).addClass('
ptf ').html('
FAIL ')} else if(json['
ts ']==0) ptl.html('
')}}}function press_t(){pt_t++;if(pt_t < pt_d) return;pt_t = 0;do_ajax('/prst', {}, function(json) {
press_w(json)
})
}
$('#pt_b').click(function() {
var b = 1;
if (pt_b.hasClass('btn-danger')) b = 2;
else pt_d = 1;
var run = true;
if (!confirm('Are you sure you want to ' + (b == 1 ? 'run' : 'cancel') + ' a pressure test?')) run = false;
if (run) {
do_ajax('/prst', 'btn=' + b, function(json) {});
setTimeout(function() {
do_ajax('/prst', {}, function(json) {
press_w(json)
})
}, 200)
}
});setInterval(function() {
if (!bussy) do_1s();
press_t()
}, 1000);press_t()
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 314 B

After

Width:  |  Height:  |  Size: 314 B

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

749
src/iforte/base.js Normal file
View File

@@ -0,0 +1,749 @@
// GLOBAL VARIABLES
var is_pressure_test_ongoing = false;
var rains_value = 0;
var rains_loop_timing = 2000;
$(document).ready(function () {
initSessionStorage();
populateUIFromSessionStorage();
loop_rains_simulator();
// Sets the proper fixture name in the header and title
var fixturename = "Robin iForte - Simulated";
$("#pth").html(fixturename);
$(document).prop("title", fixturename);
// handle RDM ident
var idntb = $("#idnt img");
$("#idnt").click(function () {
var idnt_status = sessionStorage.getItem("iforte_idnt");
if (idnt_status == 1) {
idntb.removeClass("a");
sessionStorage.setItem("iforte_idnt", "0");
} else {
idntb.addClass("a");
sessionStorage.setItem("iforte_idnt", "1");
}
});
//handle settings
$(document).on("click", "#scfg", function () {
$("#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");
h += "<br><h3>Simulator</h3>";
h += c_btn("Reset demo values", "btnresetdemo", " btnresetdemo");
h += c_rad("iforte_demo_rains_age","RAINS tubes age",["New", "Average", "Old"],"","");
h += c_rad("iforte_demo_pressure_test","Pressure test",["OK", "Failing"],"","");
$("#m-b").html(h);
$(".sb").unbind();
copy_form_values(2);
$("#cfg-modal").modal();
$(".sb").bind("click", function () {
loader(1);
var par = [
"iforte_demo_rains_age",
"iforte_demo_pressure_test",
];
do_ajax("/set_cfg", serialize_parameters(par));
});
});
// handle reset demo values
$(document).on("click", ".btnresetdemo", function () {
$(".sb").html("OK");
sessionStorage.clear();
initSessionStorage();
populateUIFromSessionStorage();
showCustomModal("Cleared", "Simulated page reset to default settings.");
});
});
function toggleStandbyMode() {
var standby_mode = sessionStorage.getItem("iforte_devs");
if (standby_mode == 0) {
$("#esm").addClass("btn-warning");
$("#esm").removeClass("btn-success");
$("#esm").html("Exit standby mode");
sessionStorage.setItem("iforte_devs", "1");
} else {
$("#esm").removeClass("btn-warning");
$("#esm").addClass("btn-success");
$("#esm").html("Enter standby mode");
sessionStorage.setItem("iforte_devs", "0");
}
populateUIFromSessionStorage();
}
function loop_rains_simulator() {
var rains_tube_age = sessionStorage.getItem("iforte_demo_rains_age");
var rains_lowest = sessionStorage.getItem("iforte_demo_rains_lowest");
if (rains_tube_age == 0) {
// new
rains_value = Math.floor(Math.random() * 19) + 80;
} else if (rains_tube_age == 1) {
// average
rains_value = Math.floor(Math.random() * 21) + 40;
} else {
// old
rains_value = Math.floor(Math.random() * 20) + 1;
}
$("#iforte_rains_bar_current").width(rains_value + "%");
$("#iforte_rains_bar_max").width(rains_lowest + "%");
if (rains_value < rains_lowest) {
sessionStorage.setItem("iforte_demo_rains_lowest", rains_value);
$("#iforte_rains_bar_max").width(rains_value + "%");
}
setTimeout(() => {
loop_rains_simulator();
}, rains_loop_timing);
}
function pressureTest() {
$("#pt-l2").removeClass("ptok");
$("#pt-l2").removeClass("ptf");
if (!is_pressure_test_ongoing) {
is_pressure_test_ongoing = true;
$("#pt-l1").html("Measuring Pressure");
$("#pt_b").html("Stop test");
$("#pt_b").removeClass("btn-success");
$("#pt_b").addClass("btn-danger");
pressure_test_loop(20, 40, 0.0);
} else {
is_pressure_test_ongoing = false;
$("#pt-l1").html("");
$("#pt-l2").html("");
$("#pt-l3").html("");
$("#pt_b").html("Start test");
$("#pt_b").addClass("btn-success");
$("#pt_b").removeClass("btn-danger");
}
}
function pressure_test_loop(time, temp, pressure) {
var is_test_failing = sessionStorage.getItem("iforte_demo_pressure_test");
if (is_pressure_test_ongoing) {
if (time == 0) {
is_pressure_test_ongoing = false;
$("#pt-l1").html("");
$("#pt-l3").html("");
if (is_test_failing == 1) {
$('#pt-l2').html('FAIL')
$('#pt-l2').addClass('ptf')
} else {
$("#pt-l2").html("OK");
$("#pt-l2").addClass("ptok");
}
$("#pt_b").html("Start test");
$("#pt_b").addClass("btn-success");
$("#pt_b").removeClass("btn-danger");
setTimeout(() => {
$("#pt-l2").html("");
$("#pt-l2").removeClass("ptok");
$("#pt-l2").removeClass("ptf");
}, 20000);
} else {
$("#pt-l2").html(
"Remaining Time " +
new Date(time * 1000).toISOString().substring(14, 19)
);
if (is_test_failing == 1) {
$("#pt-l3").html(temp + " °C / delta 0.00 hPa");
} else {
$("#pt-l3").html(temp + " °C / delta " + pressure.toFixed(2) + " hPa");
}
setTimeout(() => {
temp = temp + 1;
pressure = pressure + Math.random();
pressure_test_loop(time - 1, temp, pressure);
}, 1000);
}
}
}
// custom modal
function showCustomModal(title, text) {
loader(0);
$("#m-t").html(title);
var h = "<h3>" + text + "</h3>";
$("#m-b").html(h);
$(".sb").unbind();
$("#cfg-modal").modal();
$(".sb").bind("click", function () {
close_modal();
});
}
function loader(showheader) {
if (showheader) $("#cfg-modal .modal-header img").addClass("loader");
else $("#cfg-modal .modal-header img").removeClass("loader");
}
function do_ajax(p_url, p_data) {
loader(1);
// convert p_data to an Object
const data_object = {};
p_data.toString().split("&").forEach((element) => {
var kvp = element.split("=");
data_object[kvp[0]] = kvp[1];
});
p_data = data_object;
switch (p_url) {
case "/reset_hours":
if (p_data.rh == 0) {
sessionStorage.setItem("iforte_hr0", "0");
} else if (p_data.rh == 1) {
sessionStorage.setItem("iforte_hr1", "0");
}
break;
case "/reset_temps":
if (p_data.rt == 0) {
sessionStorage.setItem("iforte_tmr0", sessionStorage.getItem("iforte_t0"));
} else if (p_data.rt == 3) {
sessionStorage.setItem("iforte_tmr3",sessionStorage.getItem("iforte_t3"));
} else if (p_data.rt == 2) {
sessionStorage.setItem("iforte_tmr2",sessionStorage.getItem("iforte_t2"));
} else if (p_data.rt == 1) {
sessionStorage.setItem("iforte_tmr1",sessionStorage.getItem("iforte_t1"));
}
break;
case "/max_wet":
sessionStorage.setItem("iforte_demo_rains_lowest", "100");
$("#iforte_rains_bar_max").width("100%");
var now = new Date();
var reset_string = "last reset: " + now.getDate() + "." + (now.getMonth() + 1) + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds()
sessionStorage.setItem("iforte_demo_rains_last_reset", reset_string);
$("#iforte_demo_rains_last_reset").html(sessionStorage.getItem("iforte_demo_rains_last_reset"));
break;
default:
for (const [key, value] of Object.entries(p_data)) {
sessionStorage.setItem(key, value)
console.log("set key: " + key + " to val: " + value);
if (key == "iforte_tmpu") {
if (value == 0) {
sessionStorage.setItem("iforte_tu", "C");
} else if (value == 1) {
sessionStorage.setItem("iforte_tu", "F");
}
}
}
break;
}
populateUIFromSessionStorage();
loader(0);
close_modal();
}
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>');
}
});
}
// if opening settings window
if (dir == 2) {
$("input[name=iforte_demo_rains_age]")
.eq(sessionStorage.getItem("iforte_demo_rains_age"))
.attr("checked", "checked");
$("input[name=iforte_demo_pressure_test]")
.eq(sessionStorage.getItem("iforte_demo_pressure_test"))
.attr("checked", "checked");
}
}
function fill_values(d, ids) {
for (i = 0; i < ids.length; i++) {
$("#" + ids[i] + "_v").html(d[ids[i]]);
}
}
function close_modal() {
setTimeout(function () {
$("#m-b").empty();
$("#cfg-modal").modal("hide");
}, 500);
}
function serialize_parameters(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(name, legend, options, invalid_feedback_text, group_class) {
var html = '<div class="form-group' + group_class + '">';
html += '<legend class="col-form-label">' + legend + "</legend>";
for (i = 0; i < options.length; i++) {
html += '<div class="form-check form-check-inline">';
html +=
'<input class="form-check-input" type="radio" name="' +
name +
'" value="' +
i +
'" id="' +
name +
(i + 1) +
'">';
html +=
'<label class="form-check-label" for="' +
name +
(i + 1) +
'">' +
options[i] +
"</label>";
html += "</div>";
}
html +=
invalid_feedback_text.length > 0
? '<div class="invalid-feedback">' + invalid_feedback_text + "</div>"
: "";
html += "</div>";
return html;
}
var pre = "";
var dmxsnf = "";
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">&lt;</option><option value="3">&gt;</option>';
html += '<option value="4">&lt;=</option><option value="5">&gt;=</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;
}
// add leading zeros to single digit hours, minutes, etc...
function addLeadingZeros(num) {
return String(num).padStart(2, "0");
}
function initSessionStorage() {
if (sessionStorage.getItem("iforte_dmxa") == null) {
console.log("sessionStorage empty, populating with demo data");
var currentTime = new Date();
/* CONSTANTS */
sessionStorage.setItem("iforte_ip", "2.246.16.203"); // ip addr
sessionStorage.setItem("iforte_mac", "00:00:00:00:00:00"); //
sessionStorage.setItem("iforte_rdmu", "52:53:00:00:00:00"); //
/* DEMO */
sessionStorage.setItem("iforte_demo_rains_age", "1"); // rains tubes age 0new 1avg 2old
sessionStorage.setItem("iforte_demo_pressure_test", "0"); // type of pressure test, 0ok 1failing
sessionStorage.setItem("iforte_demo_rains_lowest", "100");
sessionStorage.setItem("iforte_demo_rains_last_reset", "last reset: 2.3.2023 16:19:57");
/* VARIABLES */
sessionStorage.setItem("iforte_dmxa", "1"); // dmx addr
sessionStorage.setItem("iforte_dmxp", "0"); // dmx mode
sessionStorage.setItem("iforte_dmxi", "0"); // input (wired0 wireless1 wirelessout2)
sessionStorage.setItem("iforte_rdmn", "Robin iForte"); // rdm name
sessionStorage.setItem("iforte_idnt", "0"); // rdm idnt
sessionStorage.setItem("iforte_lwc", "unlinked"); // wireless link
sessionStorage.setItem("iforte_lws", "0"); // wireless signal
sessionStorage.setItem("iforte_devs", "0"); // device status 0active 1standby
sessionStorage.setItem("iforte_h0", "1206"); // power on time
sessionStorage.setItem("iforte_hr0", "1206"); // resetable
sessionStorage.setItem("iforte_h1", "213"); // leds on time
sessionStorage.setItem("iforte_hr1", "180"); // leds adaptative
sessionStorage.setItem("iforte_cdimc", "0"); // dim curve
sessionStorage.setItem("iforte_fsmo", "0"); // followspot mode
sessionStorage.setItem("iforte_frq", "4928"); // led freq
sessionStorage.setItem("iforte_gind", "0"); // gobo index mode
sessionStorage.setItem("iforte_btns", "0"); // display buttons
sessionStorage.setItem("iforte_t0", "28"); // leds now
sessionStorage.setItem("iforte_tm0", "62"); // max
sessionStorage.setItem("iforte_tmr0", "62"); // resetable
sessionStorage.setItem("iforte_t3", "26"); // psu now
sessionStorage.setItem("iforte_tm3", "64"); // max
sessionStorage.setItem("iforte_tmr3", "64"); // resetable
sessionStorage.setItem("iforte_t1", "54"); // driver now
sessionStorage.setItem("iforte_tm1", "80"); // max
sessionStorage.setItem("iforte_tmr1", "80"); // resetable
sessionStorage.setItem("iforte_t2", "25"); // base now
sessionStorage.setItem("iforte_tm2", "56"); // max
sessionStorage.setItem("iforte_tmr2", "56"); // resetable
sessionStorage.setItem("iforte_fanm", "0"); // fanmode 0auto 1high
sessionStorage.setItem('iforte_fannl', '0') // fan noise level percent
sessionStorage.setItem("iforte_tmpu", "0"); // temp unit 0c 1f
sessionStorage.setItem("iforte_tu", "C"); // temp unit string
sessionStorage.setItem("iforte_pr", "0"); // pan rev
sessionStorage.setItem("iforte_ptf", "1"); // pt feedback
sessionStorage.setItem("iforte_pte", "1"); // pt EMS
sessionStorage.setItem("iforte_tr", "0"); // tilt rev
sessionStorage.setItem("iforte_ptm", "0"); // pt mode 0speed 1time
sessionStorage.setItem("iforte_bldmc", "0"); // blackout dmc
sessionStorage.setItem("iforte_blptm", "0"); // blackout pt
sessionStorage.setItem("iforte_blgwm", "0"); // blackout gobo mv
sessionStorage.setItem("iforte_blprm", "0"); // blackout color wheel mv
sessionStorage.setItem("iforte_dty", currentTime.getFullYear()); // date year
sessionStorage.setItem(
"iforte_dtmo",
addLeadingZeros(currentTime.getMonth() + 1)
); // date month
sessionStorage.setItem("iforte_dtd", addLeadingZeros(currentTime.getDay())); // date day
sessionStorage.setItem(
"iforte_dth",
addLeadingZeros(currentTime.getHours())
); // time hour
sessionStorage.setItem(
"iforte_dtmi",
addLeadingZeros(currentTime.getMinutes())
); // time minute
sessionStorage.setItem(
"iforte_dts",
addLeadingZeros(currentTime.getSeconds())
); // time seconds
sessionStorage.setItem("iforte_emod", "0"); //ethmode 0dis 1art 2gma1 3gma2 4sacn
sessionStorage.setItem("iforte_ee2d", "0"); //eth to dmx
sessionStorage.setItem("iforte_eanu", "0"); //art uni
sessionStorage.setItem("iforte_emau", "1"); //ma uni
sessionStorage.setItem("iforte_emas", "1"); //ma session
sessionStorage.setItem("iforte_esau", "1"); //sacn uni
sessionStorage.setItem("iforte_dint", "9"); //disp int
sessionStorage.setItem("iforte_dsd", "0"); //disp screensave
sessionStorage.setItem("iforte_dtl", "0"); //disp lock
sessionStorage.setItem("iforte_dor", "2"); //disp orientation 0norm 1inv 2auto
sessionStorage.setItem("iforte_mics", "9"); // mic sens
}
}
function populateUIFromSessionStorage() {
// check stdby mode
if (sessionStorage.getItem("iforte_devs") == 1) {
$("#esm").addClass("btn-warning");
$("#esm").removeClass("btn-success");
$("#esm").html("Exit standby mode");
} else {
$("#esm").removeClass("btn-warning");
$("#esm").addClass("btn-success");
$("#esm").html("Enter standby mode");
}
// check rdm ident
var idntb = $("#idnt img");
var idnt_status = sessionStorage.getItem("iforte_idnt");
if (idnt_status == 1) {
idntb.addClass("a");
} else {
idntb.removeClass("a");
}
for (var i = 0; i < sessionStorage.length; i++) {
var valueToLoad = "";
switch (sessionStorage.key(i)) {
case "iforte_dmxp":
var valueToLoad =
"Mode " +
(parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1);
break;
case "iforte_dmxi":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "wired";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "wireless";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "wireless XLR out";
}
break;
case "iforte_devs":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "active";
} else {
var valueToLoad = "standby";
}
break;
case "iforte_bldmc":
case "iforte_blptm":
case "iforte_ee2d":
case "iforte_pr":
case "iforte_tr":
case "iforte_ptf":
case "iforte_pte":
case "iforte_hpwrm":
case "iforte_blgwm":
case "iforte_blprm":
case "iforte_btns":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "on";
}
break;
case "iforte_lws":
var valueToLoad = sessionStorage.getItem(sessionStorage.key(i)) + "%";
break;
case "iforte_emod":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "disable";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "ArtNet";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "gMA1";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 3) {
var valueToLoad = "gMA2";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 4) {
var valueToLoad = "sACN";
}
break;
case "iforte_dint":
case "iforte_mics":
var valueToLoad =
parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1;
break;
case "iforte_dsd":
case "iforte_dtl":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off";
} else {
var valueToLoad =
parseInt(sessionStorage.getItem(sessionStorage.key(i))) + " min";
}
break;
case "iforte_dor":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "normal";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "inverted";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "auto";
}
break;
case "iforte_fanm":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "auto";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "high";
}
break;
case "iforte_tmpu":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "°C";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "°F";
}
break;
case "iforte_ptm":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "speed";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "time";
}
break;
case "iforte_cdimc":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "linear";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "square law";
}
break;
case "iforte_fsmo":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "soft";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "medium";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 3) {
var valueToLoad = "hard";
}
break;
case "iforte_gind":
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "max. speed & shortcut";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "follow spd. & dir.";
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "max spd. & follow dir.";
}
break;
case "iforte_frq":
var valueToLoad = iforte_frq_s(sessionStorage.getItem("iforte_frq"));
break;
case "iforte_demo_rains_last_reset":
$("#iforte_demo_rains_last_reset").html(sessionStorage.getItem("iforte_demo_rains_last_reset"));
break;
default:
var valueToLoad = sessionStorage.getItem(sessionStorage.key(i));
break;
}
$("#" + sessionStorage.key(i) + "_v").html(valueToLoad);
// for each element with id tu_v sets html to string of temp unit
$('div[id^="iforte_tu_v"]').html(sessionStorage.getItem("iforte_tu"));
}
}
// calc proper frequency to be displayed
function iforte_frq_s(iforte_frq) {
var f = 360000000000;
var k = 0x700 - (iforte_frq & 0xfff);
var arr = 465 + ((k >> 8) & 0x0f);
var x = k & 0xff;
f = (f * (1 << (iforte_frq >> 12))) / (arr * (256 - x) + (arr + 1) * x);
return (
Math.floor(f / 10000) + "." + ("0000" + Math.floor(f % 10000)).slice(-4)
);
}

203
src/iforte/discovery.html Normal file
View File

@@ -0,0 +1,203 @@
<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>
</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"><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"><a class="nav-link" href="./sensors.html">RAINS logs</a></li>
<li class="nav-item active"><a class="nav-link" href="./discovery.html">Discovery</a></li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" 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" ></div>
<div class="container-fluid in">
<h1>Discovery</h1>
<div class="row" id="boxes">
<div class="col-12">
<div class="clearfix">
<div class="float-left pt02">
<input type="checkbox" id="w-ot">
<label for="w-ot" class="pl04">Move devices with warning to top</label>
</div>
<button class="btn btn-primary float-right" id="scan">Discover (1)</button>
</div>
<h2>Columns selection (max. 7 items)</h2>
<div class="clearfix" id="cols">
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-0">
<label for="cchb-0">DMX address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-1">
<label for="cchb-1">DMX preset</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-2">
<label for="cchb-2">RDM UID</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-3">
<label for="cchb-3">IP address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-4" >
<label for="cchb-4">Head temperature [°C]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-5" >
<label for="cchb-5">Relative humidity [%]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-6">
<label for="cchb-6">RAINS (max wet)</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-7" >
<label for="cchb-7">Last pressure test</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-8">
<label for="cchb-8">Device status</label>
</div>
</div>
<div class="table-responsive">
<table class="table mt-2" id="d-t">
<thead id="dmax">
<tr>
<th>
<i class="as"></i>
<i class="ab"></i> Device
</th>
<th>
<i></i>
<i class="ab"></i> DMX address
</th>
<th>
<i></i>
<i class="ab"></i> DMX preset
</th>
<th>
<i></i>
<i class="ab"></i> RDM UID
</th>
<th>
<i></i>
<i class="ab"></i> IP address
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Head temperature [°C]
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Relative humidity [%]
</th>
<th>
<i></i>
<i class="ab"></i> RAINS (max wet)
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Last pressure test
</th>
<th>
<i></i>
<i class="ab"></i> Device status
</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td>iForte</td>
<td id="iforte_dmxa_v">1</td>
<td id="iforte_dmxp_v">Mode 1</td>
<td id="iforte_rdmu_v">52:53:01:2c:00:0e</td>
<td><a href="../iforte/index.html">2.247.136.14</a></td>
<td style="display: none;">47</td>
<td style="display: none;">14.0</td>
<td>
<div class="rains sl">
<div id="iforte_rains_bar_max" style="width:63%"></div>
</div>
</td>
<td style="display: none;">2.3.2023 16:19:02 - OK</td>
<td id="iforte_devs_v">active</td>
</tr>
<tr>
<td>Robin T1 Wash</td>
<td>1</td>
<td>Mode 3</td>
<td>52:53:00:00:00:00</td>
<td><a href="../t1/index.html">2.246.16.203</a></td>
<td style="display: none;">47</td>
<td style="display: none;">-</td>
<td>-</td>
<td style="display: none;">-</td>
<td>active</td>
</tr>
</tbody>
<tbody class="rd" id="scd"></tbody>
</table>
</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>
$('.cchb').on('change', function() {
var cbid = $(this).attr('id')
var colid = cbid.charAt(cbid.length - 1)
colid++
// handle visibility of columns
$('#d-t tr').each(function() {
$(this).find('td:eq(' + colid + ')').toggle();
});
$('#d-t th:eq(' + colid + ')').toggle();
// only allows 7 columns at any time
var checkedCount = $('.cchb:checked').length;
if (checkedCount === 7) {
$('.cchb:not(:checked)').prop('disabled', true);
} else {
$('.cchb').prop('disabled', false);
}
})
</script>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

426
src/iforte/index.html Normal file
View File

@@ -0,0 +1,426 @@
<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>
</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">
<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" id="scfg">Settings</a></li>
<li class="nav-item">
<a class="nav-link" 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"
></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="iforte_dmxa_v"></div>
</li>
<li>
<div id="iforte_dmxp_v"></div>
</li>
<li>
<div id="iforte_dmxi_v"></div>
</li>
<li class="mt-2">
<div id="iforte_ip_v"></div>
</li>
<li>
<div id="iforte_mac_v"></div>
</li>
<li class="mt-2">
<div id="iforte_rdmu_v"></div>
</li>
<li>
<div id="iforte_rdmn_v"></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="iforte_h0_v"></div>
h /
<div id="iforte_hr0_v"></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="iforte_h1_v"></div>
h
</li>
<li>
<div id="iforte_hr1_v"></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="iforte_t0_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm0_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr0_v"></div>
°
<div id="iforte_tu_v"></div>
</li>
<li>
<div id="iforte_t3_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm3_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr3_v"></div>
°
<div id="iforte_tu_v"></div>
</li>
<li>
<div id="iforte_t1_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm1_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr1_v"></div>
°
<div id="iforte_tu_v"></div>
</li>
<li>
<div id="iforte_t2_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm2_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr2_v"></div>
°
<div id="iforte_tu_v"></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="iforte_lwc_v"></div>
</li>
<li>
<div id="iforte_lws_v">%</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="iforte_devs_v"></div>
</li>
</ul>
<button
class="btn btn-primary btn-block esm dn btn-success"
value="0"
style="display: inline-block"
id="esm"
>
Enter standby mode
</button>
<div>Current RAINS status</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div class="rains">
<div id="iforte_rains_bar_current" style="width: 50%"></div>
</div>
<div>MAX WET/resettable</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div class="rains">
<div id="iforte_rains_bar_max" style="width: 50%"></div>
</div>
<button class="btn btn-primary btn-block" id="maxwetreset">MAX WET reset</button>
<p>
<small id="iforte_demo_rains_last_reset"></small>
</p>
</div>
</div>
<div class="col-12 box-c">
<h2 id="sta_err">Status messages</h2>
<div class="box">
<li>
This is a simulated REAP™ page for demo purposes. Some content
might be different on real fixtures.
</li>
<li>Big thanks to Vincent BOUQUET for creating this simulator.</li>
</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;
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("iforte_dmxa","DMX address","Please put DMX address from 1 to 512");
h += c_opt("iforte_dmxp", "DMX preset", [2], "Mode ", 0, 1, "");
h += c_opt("iforte_dmxi","DMX input",["wired", "wireless", "wireless XLR out"],"",0,1,"Can not set wireless input now!");
h += c_txt("iforte_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");
}
// pers set
$("#m-b").html(h);
copy_form_values(1);
$("#cfg-modal").modal();
$(".sb").bind("click", function () {
loader(1);
var par = ["iforte_dmxa","iforte_dmxp","iforte_dmxi","iforte_rdmn"];
do_ajax("/set_dmx", serialize_parameters(par));
});
// hours reset
$(".rh").bind("click", function () {
loader(1);
do_ajax('/reset_hours', "rh=" + this.value)
});
// max temp reset
$(".rt").bind("click", function () {
loader(1);
do_ajax('/reset_temps', "rt=" + this.value)
});
// wireless unlink
$(".lwu").bind("click", function () {
loader(1);
close_modal();
loader(0);
});
}
// standby mode
$("#esm").on("click", function () {
toggleStandbyMode();
});
// max wet reset
$("#maxwetreset").on("click", function () {
do_ajax('/max_wet', "0");
});
</script>
</body>
</html>

View File

@@ -1,30 +1,42 @@
<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 WILL BE ADDED HERE BY FUNCTION IN BASE JS -->
<div class="fixed-top text-center device-label" id="pth">iForte</div>
<div class="container-fluid in">
<h1>Device logs</h1>
<div class="row" id="boxes">
<div class="col-12 box-c">
<h2 id="sta_err">
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#lfb">
<i class="blue"></i>
</button> Logs filter <a class="cfg" onclick="cfgm();">
<img src="../files/settings.svg">
</a>
</h2>
<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>
</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"><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 active"><a class="nav-link" href="./logs.html">Logs</a></li>
<li class="nav-item"><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" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" 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" ></div>
<div class="container-fluid in">
<h1>Device logs</h1>
<div class="row" id="boxes">
<div class="col-12 box-c">
<h2 id="sta_err"><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse"
data-target="#lfb"><i class="blue"></i></button> Logs filter<a class="cfg"
onclick="cfgm();"><img src="../files/settings.svg"></a></h2>
<div class="box collapse clearfix" id="lfb">
<small>Logs filters not functionnal on this simulator.</small>
<br>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_me">
<i></i>
@@ -323,8 +335,8 @@
</div>
<div id="ferr"></div>
<div class="float-right">
<button type="button" class="btn btn-primary mr06" id="fap">Apply filter</button>
<button type="button" class="btn btn-primary" id="fcl">Clear filter</button>
<button type="button" class="btn btn-primary mr06" id="fap" onclick="alert('Logs filters not functionnal on this simulator.')">Apply filter</button>
<button type="button" class="btn btn-primary" id="fcl" onclick="alert('Logs filters not functionnal on this simulator.')">Clear filter</button>
</div>
</div>
</div>
@@ -350,7 +362,7 @@
<li class="">37°C</li>
<li class="dn">-32°C</li>
</ul>
<h3>Display orientation</h3>Side Botom
<h3>Display orientation</h3>Side Bottom
</div>
</div>
</div>
@@ -374,7 +386,7 @@
<li class="">34°C</li>
<li class="">33°C</li>
</ul>
<h3>Display orientation</h3>Side Botom
<h3>Display orientation</h3>Side Bottom
</div>
</div>
</div>
@@ -395,7 +407,7 @@
<li class="">21°C</li>
<li class="dn">-32°C</li>
</ul>
<h3>Display orientation</h3>Side Botom
<h3>Display orientation</h3>Side Bottom
</div>
</div>
</div>
@@ -447,219 +459,99 @@
</div>
</div>
<script>
var lfn = 'data';
function cfgm() {
var is_sniffing = false;
// CREATES MODAL FOR LOG TOOLS
function cfgm() {
$('#m-t').html('Logs tools');
$('#m-f').empty();
$('.sb').unbind();
var tl = c_btn('Download log file', 0, ' dlog');
tl += c_btn('Start DMX sniff', 0, ' ddmx');
if (!is_sniffing) {
tl += c_btn('Start DMX sniff', 0, ' ddmx');
} else {
tl += c_btn('Stop DMX sniff', 0, ' ddmx');
}
$('#m-b').html(tl);
$('#cfg-modal').modal();
$('.dlog').bind('click', function() {
location = 'file-' + lfn + '.log';
$('.dlog').bind('click', function () {
// download logs
close_modal()
});
$('.ddmx').bind('click', function() {
do_ajax('/serr', {}, function(json) {
if (json) {
if (json['dmxsnf'] == 1) alert('DMX sniffer is already running on device!');
else {
location = 'dmx_sniffer.log';
close_modal()
}
}
})
$('.ddmx').bind('click', function () {
// start sniff
if (is_sniffing) {
$('.ddmx').html('Start DMX sniff');
is_sniffing = false;
} else {
$('.ddmx').html('Stop DMX sniff');
is_sniffing = true;
}
close_modal()
})
}
$(document).ready(function() {
$('h1').html('Device logs');
$('#boxes').after(' < div class = "row"
id = "logs" > < /div> < div class = "text-center"
id = "nxtl" > < button class = "btn btn-primary nlb" > < strong > + < /strong> < /button> < /div>');var boxes='';boxes+=' < div class = "col-12 box-c" > ';boxes+=' < h2 id = "sta_err" > < button class = "btn btn-primary btn-pm"
type = "button"
data - toggle = "collapse"
data - target = "#lfb" > < i class = "blue" > < /i> < /button>';boxes+=' Logs filter';boxes+=' < a class = "cfg"
onclick = "cfgm();" > < img src = "../files/settings.svg" > < /a>';boxes+=' < /h2>';boxes+=' < div class = "box collapse clearfix"
id = "lfb" > ';boxes+=c_tit('
f_me ','
Mechanical errors ',true,'
',1);boxes+=c_tit('
f_se ','
System errors ',true,'
',1);boxes+=c_tit('
f_sst ','
Statuses ',true,'
',1);boxes+=c_tit('
f_te ','
Temperatures ',false,'
',1);boxes+=c_ftmp(3,'
PSU ');boxes+=c_ftmp(0,'
LEDs ');boxes+=c_ftmp(1,'
Driver ');boxes+=c_ftmp(2,'
Base ');boxes+=' < /div>';boxes+=c_tit('f_dt','Start date/time
',false,'
',0);boxes+=' < div class = "form-row" > ';boxes+=c_dt('
fsd ','
Date ','
','
col - auto ','
date ');boxes+=c_dt('
fst ','
Time ','
','
col - auto ','
time ');boxes+=' < /div>';boxes+=' < /div>';boxes+=c_tit('f_cfg','Sorting,filter pass',false,'',0);boxes+=' < div class = "form-row" > ';boxes+=c_sil('
fso ','
Sorting ',['
descending ','
ascending ']);boxes+=c_sil('
fpas ','
Filter pass ',['
single groups ','
all groups ']);boxes+=' < /div>';boxes+=' < /div>';boxes+=' < div id = "ferr" > < /div>';boxes+=' < div class = "float-right" > < button type = "button"
class = "btn btn-primary mr06"
id = "fap" > Apply filter < /button> < button type = "button"
class = "btn btn-primary"
id = "fcl" > Clear filter < /button> < /div>';boxes+=' < /div>';boxes+=' < /div>';$('#boxes').html(boxes);var me_lb=[];var se_lb=[];var sst_lb=[];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 ']);lfn=json['
lfn ']}});do_ajax(' / logst ',{},function (json){if(json){for (i=0;i < json['titles'].length; i++) {
var t = json['titles'][i].trim().split(':');
var ai = [parseInt(t[0]), t[1], parseInt(t[2])];
switch (ai[0]) {
case 0:
$('#f_me').append(c_chb('fe_' + i, ai[1] + ' error', ai[2], ''));
me_lb[ai[2]] = ai[1] + ' error';
break;
case 1:
$('#f_se').append(c_chb('fe_' + i, lfix(ai[1]), ai[2], ''));
se_lb[ai[2]] = ai[1];
break;
case 2:
$('#f_sst').append(c_chb('fe_' + i, lfix(ai[1]), ai[2], ''));
sst_lb[ai[2]] = ai[1];
break
}
}
function lfix(l) {
return l.charAt(0).toUpperCase() + l.slice(1).toLowerCase().replace('ems', 'EMS')
}
});
$('#fap').bind('click', function() {
var merf = 0;
var sef = 0;
var stf = 0;
var fps = 0;
$('#f_me input').each(function() {
if ($(this).prop('checked')) merf |= (1 << $(this).val())
});
$('#f_se input').each(function() {
if ($(this).prop('checked')) sef |= (1 << $(this).val())
});
$('#f_sst input').each(function() {
if ($(this).prop('checked')) stf |= (1 << $(this).val())
});
var p = 'merf=' + merf + '&sef=' + sef + '&stf=' + stf;
for (i = 0; i < 3; i++) {
p += '&fts' + i + '=' + ($('#fts' + i).val() != undefined ? $('#fts' + i).val() : 0);
p += '&ftv' + i + '=' + ($('#ftv' + i).val() != undefined ? $('#ftv' + i).val() : '')
function c_chb(id, t, v, ch) {
var html =
'<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input" id="' + id +
'" value="' + v + '"' + ch + '>';
html += '<label class="form-check-label" for="' + id + '">' + t + '</label></div>';
return html
}
function c_tit(id, t, e, c, p) {
var html =
'<h3><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#' + id +
'"><i></i></button>';
html += ' ' + t;
if (p) html += '<div class="fall"><input type="checkbox" id="' + id + '_p"> all must pass</div>';
html += '</h3>';
html += '<div class="collapse' + c + '" id="' + id + '">';
if (e) html += '</div>';
return html
}
var di = $('#fsd').val();
var ti = $('#fst').val();
var d = new Date(di + ' ' + ti);
if (!!d.valueOf()) {
p += '&dty=' + d.getFullYear();
p += '&dtmo=' + (d.getMonth() + 1);
p += '&dtd=' + d.getDate();
p += '&dth=' + d.getHours();
p += '&dtmi=' + d.getMinutes();
p += '&dts=' + d.getSeconds()
}
p += '&fso=' + $('#fso').val();
var fps_ids = ['f_me', 'f_se', 'f_st', 'f_te'];
for (i = 0; i < fps_ids.length; i++) {
if ($('#' + fps_ids[i] + '_p').prop('checked')) fps |= (1 < < i)
}
fps |= $('#fpas').val() == 1 ? (1 < < 7) : 0;
p += '&fps=' + fps;
do_ajax('/logsf', p, function(json) {
if (json) {
if (json['err']) {
$('#ferr').html(' < div class = "alert alert-danger"
role = "alert" > There are some wrong input values in logs filter! < /div>')} else {$('#ferr').html('');$('#logs').html('');llogs()}}})});$('#fap').click();$('#fcl').bind('click',function(){$('#lfb input[type=checkbox]').prop('checked',false);$('#lfb select').val('0');$('#lfb input[type=text]').val('');$('#fap').click()});$('.btn-pm').bind('click',function(){if($(this).attr('aria-expanded')=='true') $(this).removeClass('op');else $(this).addClass('op')});$('#nxtl').bind('click',function(){llogs()});function llogs(){for (i=0;i < 4; i++) {
do_ajax('/log', '', function(json) {
if (json && json['time']) {
var html = ' < div class = "col-md-6 box-c log" > ';html+=' < h2 > Log '+json['
time ']+' < /h2> < div class = "box" > ';var c='
';var fi=true;for (i=0;i < 24;
i++) {
if (!(json['me'] & (1 < < i))) {
c += (fi ? '' : ',') + me_lb[i];
fi = false
function c_ftmp(i, t) {
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">&lt;=</option><option value="2">&gt;=</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 +
'">&deg;<span class="tu" t1_tu_v"></span></label></div>';
html += '</div>';
return 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_sil(id, t, o) {
var html = '<div class="form-group col-auto"><label class="col-form-label" for="' + id + '">' + t +
'</label></div>';
html += '<div class="form-group col-auto"><select class="form-control" id="' + id + '">';
for (i = 0; i < o.length; i++) {
html += '<option value="' + i + '">' + o[i] + '</option>'
}
html += '</select></div>';
return html
}
}
if (!fi) html += ' < div class = "lme" > < h3 > Mechanical errors < /h3>'+c+' < /div>';c='';fi=true;for (i=0;i < 16;
i++) {
if (!(json['se'] & (1 < < i))) {
c += (fi ? '' : ',') + se_lb[i];
fi = false
}
}
if (!fi) html += ' < div class = "lse" > < h3 > System errors < /h3>'+c+' < /div>';c='';fi=true;for (i=0;i < 8; i++) {
if (!(json['st'] & (1 < < i))) {
c += (fi ? '' : ',') + sst_lb[i];
fi = false
}
}
if (!fi) html += ' < div class = "lse" > < h3 > Statuses < /h3>'+c+' < /div>';if(json['st'] & (1< < 7)) {
html += ' < div > < h3 > Temperatures < /h3> < ul class = "group" > ';var tc=4;var t=json['
tmp '];for (j=0;j < tc;
j++) {
if ($('#tl' + j).length == 0) continue;
html += ' < li '+(t[j+1]==' - 32 ' ? '
class = "dn"
':'
')+' > '+$('
#tl '+j).html()+' < /li>'}html+=' < /ul> < ul class = "group vals" > ';var c;for (j=0;j < tc;
j++) {
if ($('#tl' + j).length == 0) continue;
c = '';
if (t[0] & (1 < < j)) c += ' err';
if (t[j + 1] == '-32') c += ' dn';
html += ' < li class = "'+c.trim()+'" > ';html+=t[j+1]+' & deg;
'+json['
tu ']+' < /li>'}html+=' < /ul>';if(json['dor']!='Undefined') html+=' < h3 > Display orientation < /h3>'+json['dor'];html+=' < /div>'}html+=' < /div> < /div>';$('#logs').append(html);$('#nxtl').show()} else $('#nxtl').hide()})}}});function lfix(l){return l.charAt(0).toUpperCase()+l.slice(1).toLowerCase().replace('ems','EMS')}function c_chb(id,t,v,ch){var html=' < div class = "form-check form-check-inline" > < input type = "checkbox"
class = "form-check-input"
id = "'+id+'"
value = "'+v+'"
'+ch+' > ';html+=' < label class = "form-check-label"
for = "'+id+'" > '+t+' < /label> < /div>';return html}function c_tit(id,t,e,c,p){var html=' < h3 > < button class = "btn btn-primary btn-pm"
type = "button"
data - toggle = "collapse"
data - target = "#'+id+'" > < i > < /i> < /button>';html+=' '+t;if(p) html+=' < div class = "fall" > < input type = "checkbox"
id = "'+id+'_p" > all must pass < /div>';html+=' < /h3>';html+=' < div class = "collapse'+c+'"
id = "'+id+'" > ';if(e) html+=' < /div>';return html}function c_ftmp(i,t){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" > & lt; = < /option> < option value = "2" > & gt; = < /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+'" > & deg; < span class = "tu" > < /span> < /label> < /div>';html+=' < /div>';return html}function c_sil(id,t,o){var html=' < div class = "form-group col-auto" > < label class = "col-form-label"
for = "'+id+'" > '+t+' < /label> < /div>';html+=' < div class = "form-group col-auto" > < select class = "form-control"
id = "'+id+'" > ';for (i=0;i < o.length;
i++) {
html += ' < option value = "'+i+'" > '+o[i]+' < /option>'}html+=' < /select> < /div>';return html}
</script>
</body>
</html>
</script>
</body>
</html>

636
src/iforte/personality.html Normal file
View File

@@ -0,0 +1,636 @@
<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>
</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">
<a class="nav-link" href="./index.html">Status</a>
</li>
<li class="nav-item active">
<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">
<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" id="scfg">Settings</a></li>
<li class="nav-item">
<a class="nav-link" 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"
></div>
<div class="container-fluid in">
<h1>Personality</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>RDM label</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_dmxa_v"></div>
</li>
<li>
<div id="iforte_dmxp_v"></div>
</li>
<li>
<div id="iforte_dmxi_v"></div>
</li>
<li>
<div id="iforte_rdmn_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Ethernet settings
<a class="cfg" onclick="open_modal(1);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Ethernet mode</li>
<li>Ethernet to DMX</li>
<li>ArtNet universe</li>
<li>MANet I/II universe</li>
<li>MaNet session ID</li>
<li>sACN universe</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_emod_v"></div>
</li>
<li>
<div id="iforte_ee2d_v"></div>
</li>
<li>
<div id="iforte_eanu_v"></div>
</li>
<li>
<div id="iforte_emau_v"></div>
</li>
<li>
<div id="iforte_emas_v"></div>
</li>
<li>
<div id="iforte_esau_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Pan/Tilt settings
<a class="cfg" onclick="open_modal(2);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Pan reverse</li>
<li>Tilt reverse</li>
<li>Pan/Tilt feedback</li>
<li>Pan/Tilt mode</li>
<li>Pan/Tilt EMS</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_pr_v"></div>
</li>
<li>
<div id="iforte_tr_v"></div>
</li>
<li>
<div id="iforte_ptf_v"></div>
</li>
<li>
<div id="iforte_ptm_v"></div>
</li>
<li>
<div id="iforte_pte_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Blackout settings
<a class="cfg" onclick="open_modal(3);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Blackout DMC</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_bldmc_v"></div>
</li>
</ul>
<h3>Active blackout while</h3>
<ul class="group">
<li>Pan/Tilt moving</li>
<li>Gobo wheel moving</li>
<li>Color wheel moving</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_blptm_v"></div>
</li>
<li>
<div id="iforte_blgwm_v"></div>
</li>
<li>
<div id="iforte_blprm_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Screen settings
<a class="cfg" onclick="open_modal(4);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Display intensity</li>
<li>Screensaver delay</li>
<li>Touchscreen lock</li>
<li>Display orientation</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_dint_v"></div>
</li>
<li>
<div id="iforte_dsd_v"></div>
</li>
<li>
<div id="iforte_dtl_v"></div>
</li>
<li>
<div id="iforte_dor_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Color settings
<a class="cfg" onclick="open_modal(7);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Dimmer curve</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_cdimc_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Date &amp; time settings
<a class="cfg" onclick="open_modal(5);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Date</li>
<li>Time</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_dtd_v"></div>
.
<div id="iforte_dtmo_v"></div>
.
<div id="iforte_dty_v"></div>
</li>
<li>
<div id="iforte_dth_v"></div>
:
<div id="iforte_dtmi_v"></div>
:
<div id="iforte_dts_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Other settings
<a class="cfg" onclick="open_modal(6);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Follow spot mode</li>
<li>LEDs output frequency (Hz)</li>
<li>Fan mode</li>
<li>Gobo indexing</li>
<li>Temperature unit</li>
<li>Display buttons</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_fsmo_v"></div>
</li>
<li>
<div id="iforte_frq_v"></div>
</li>
<li>
<div id="iforte_fanm_v"></div>
</li>
<li>
<div id="iforte_gind_v"></div>
</li>
<li>
<div id="iforte_tmpu_v"></div>
</li>
<li>
<div id="iforte_btns_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c" style="display: block">
<h2>Pressure test</h2>
<div class="box prst text-center">
<span id="pt-l1"></span><span id="pt-l2"></span><span id="pt-l3"></span><button class="btn btn-success btn-block"
id="pt_b" onclick="pressureTest()">
Start test
</button>
</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",
"Ethernet settings",
"Pan/Tilt settings",
"Blackout settings",
"Screen settings",
"Date & time settings",
"Other settings",
"Color settings",
];
var addrs = [
"set_dmx",
"eth_s",
"pt_s",
"bl_s",
"dis_s",
"ldt_s",
"oth_s",
"col_s",
];
var params = [
["iforte_dmxa", "iforte_dmxp", "iforte_dmxi", "iforte_rdmn"],
["iforte_emod", "iforte_ee2d", "iforte_eanu", "iforte_emau", "iforte_emas", "iforte_esau"],
["iforte_pr", "iforte_tr", "iforte_ptf", "iforte_ptm", "iforte_pte"],
["iforte_bldmc", "iforte_blptm", "iforte_blprm", "iforte_blgwm", "iforte_bltim"],
["iforte_dint", "iforte_dsd", "iforte_dtl", "iforte_dor"],
["iforte_dtd", "iforte_dtmo", "iforte_dty", "iforte_dth", "iforte_dtmi", "iforte_dts"],
[
"iforte_fanm",
"iforte_tmpu",
"iforte_cpm",
"iforte_fannl",
"iforte_fsmo",
"iforte_btns",
"iforte_freq",
"iforte_freqa",
"iforte_gind",
"iforte_gwhm",
],
[
"iforte_cdimc"
]
];
var frq = 0;
function open_modal(i) {
a_m = i;
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>'
);
var off_on_l = ["off", "on"];
var h = "";
if (a_m == 0) {
h += c_txt(
"iforte_dmxa",
"DMX address",
"Please put DMX address from 1 to 512"
);
h += c_opt("iforte_dmxp", "DMX preset", [2], "Mode ", 0, 1, "");
h += c_opt(
"iforte_dmxi",
"DMX input",
["wired", "wireless", "wireless XLR out"],
"",
0,
1,
"Can not set wireless input now!"
);
h += c_txt(
"iforte_rdmn",
"RDM label",
"Please insert label,max 32 characters"
);
} else if (a_m == 1) {
h += c_rad(
"iforte_emod",
"Ethernet mode",
["disable", "ArtNet", "gMA1", "gMA2", "sACN"],
"",
""
);
h += c_rad("iforte_ee2d", "Ethernet to DMX", off_on_l, "", "");
h += c_txt(
"iforte_eanu",
"ArtNet universe",
"Please put ArtNet universe from 0 to 255"
);
h += c_txt(
"iforte_emau",
"MANet I/II universe",
"Please put MANet I / II universe from 1 to 256 (64 for MANet I)"
);
h += c_txt(
"iforte_emas",
"MANet session ID",
"Please put MANet session ID from 1 to 32"
);
h += c_txt(
"iforte_esau",
"sACN universe",
"Please put sACN universe from 1 to 32000"
);
} else if (a_m == 2) {
h += c_rad("iforte_pr", "Pan reverse", off_on_l, "", "");
h += c_rad("iforte_tr", "Tilt reverse", off_on_l, "", "");
h += c_rad("iforte_ptf", "Pan / Tilt feedback", off_on_l, "", "");
h += c_rad("iforte_ptm", "Pan / Tilt Mode", ["speed", "time"], "", "");
h += c_rad("iforte_pte", "Pan / Tilt EMS", off_on_l, "", "");
} else if (a_m == 3) {
h += c_rad("iforte_bldmc", "Blackout DMC", off_on_l, "", "");
h += "<h3>Active blackout while</h3>";
h += c_rad("iforte_blptm", "Pan/Tilt moving", off_on_l, "", "");
h += c_rad("iforte_blgwm", "Gobo wheel moving", off_on_l, "", "");
h += c_rad("iforte_blprm", "Color wheel moving", off_on_l, "", "");
} else if (a_m == 4) {
h += c_opt("iforte_dint", "Display intensity", [10], "", 0, 1, "");
var dsd_dtl_l = [
"off",
"1 min",
"2 min",
"3 min",
"4 min",
"5 min",
"6 min",
"7 min",
"8 min",
"9 min",
"10 min",
];
h += c_opt("iforte_dsd", "Screensaver delay", dsd_dtl_l, "", 0, 0, "");
h += c_opt("iforte_dtl", "Touchscreen lock", dsd_dtl_l, "", 0, 0, "");
h += c_rad(
"iforte_dor",
"Display orientation",
["normal", "inverted", "auto"],
""
);
} else if (a_m == 5) {
h += '<div class="row">';
h += c_txt("iforte_dtd", "Day", "", "col-4");
h += c_txt("iforte_dtmo", "Month", "", "col-4");
h += c_txt("iforte_dty", "Year", "", "col-4");
h += c_txt("iforte_dth", "Hour", "", "col-4");
h += c_txt("iforte_dtmi", "Minute", "", "col-4");
h += c_txt("iforte_dts", "Second", "", "col-4");
h += "</div>";
h +=
'<button class="btn btn-primary btn-block uldt">Use local date & time</button>';
} else if (a_m == 6) {
h += c_opt(
"iforte_fsmo",
"Follow spot mode",
["off", "soft", "medium", "hard"],
"",
0,
0,
""
);
h += c_rad(
"iforte_frqs",
"LEDs output frequency (Hz)",
["300", "600", "1200", "2400"],
"",
""
);
h += '<div class="form-group">';
h +=
'<label for="iforte_frqa" class="col-form-label">LEDs frequency adjust</label>';
h += '<div class="row">';
h +=
'<div class="col-7 col-sm-8"><input type="range" min="0" max="1663" class="form-control" id="iforte_frqa"></div>';
h += '<div class="col-5 col-sm-4 mt06 text-right" id="iforte_frq_bv"></div>';
h += "</div>";
h += "</div>";
h += c_rad("iforte_fanm", "Fan mode", ["auto", "high", "quiet"], "", "");
h += '<div class="form-group" id="iforte_fannl_fg">';
h +=
'<label for="iforte_fannl" class="col-form-label">Fan noise level</label>';
h += '<div class="row">';
h +=
'<div class="col-9 col-sm-10"><input type="range" min="0" max="100" class="form-control" id="iforte_fannl"></div>';
h += '<div class="col-3 col-sm-2 mt06 text-right">100 %</div>';
h += "</div>";
h += "</div>";
h += c_opt(
"iforte_gind",
"Gobo indexing",
[
"max. speed & shortcut",
"follow spd. & dir.",
"max. spd. & follow dir.",
],
"",
0,
0,
""
);
h += c_rad("iforte_tmpu", "Temperature unit", ["&deg;C", "&deg;F"], "", "");
h += c_rad("iforte_btns", "Display buttons", off_on_l, "", "");
} else if (a_m == 7) {
h += c_rad("iforte_cdimc", "Dimmer curve", ["linear", "square law"], "", "");
}
$("#m-b").html(h);
$("#m-f").show();
copy_form_values(1);
$("#cfg-modal").modal();
$(".sb").bind("click", function () {
loader(1);
var p_add = "";
if (a_m == 6) {
p_add = "&frq=" + frq;
}
do_ajax(addrs[a_m], serialize_parameters(params[a_m]) + p_add, function (json) {
if (json) {
if (json["status"] == 0) {
copy_form_values(0);
if (a_m == 0) {
ptit(json["pt"]);
} else if (a_m == 6) {
if (json["iforte_fanm"] == "quiet") {
$("#iforte_themq").show();
} else {
$("#iforte_themq").hide();
}
$("#iforte_frqs_v").html(iforte_frq_s(frq));
}
close_modal();
}
show_errors(json["status"], params[a_m]);
loader(0);
}
});
});
if (a_m == 5) {
$(".uldt").bind("click", function () {
var date = new Date();
$("#iforte_dtd").val(date.getDate());
$("#iforte_dtmo").val(date.getMonth() + 1);
$("#iforte_dty").val(date.getFullYear());
$("#iforte_dth").val(("0" + date.getHours()).slice(-2));
$("#iforte_dtmi").val(("0" + date.getMinutes()).slice(-2));
$("#iforte_dts").val(("0" + date.getSeconds()).slice(-2));
});
} else if (a_m == 6) {
$("#iforte_fannl").on("input change", function () {
$(this)
.parent()
.next()
.html($(this).val() + "%");
});
$("#iforte_fannl").change();
$("input[name=iforte_fanm]").on("change", function () {
if ($("input[name=iforte_fanm]:checked").val() == 2) {
$("#iforte_fannl_fg").show();
} else {
$("#iforte_fannl_fg").hide();
}
});
$("input[name=iforte_fanm]").change();
$("input[name=iforte_frqs]")
.eq(frq >> 12)
.attr("checked", "checked");
$("#iforte_frqa").val(frq & 0xfff);
$("input[name=iforte_frqs]").on("change", function () {
frq = $("input[name=iforte_frqs]:checked").val() << 12;
frq |= 0x340;
$("#iforte_frqa").val(0x340);
$("#iforte_frq_bv").html(iforte_frq_s(frq) + " Hz");
});
$("#iforte_frqa").on("input change", function () {
frq &= 0xf000;
frq |= $("#iforte_frqa").val();
$("#iforte_frq_bv").html(iforte_frq_s(frq) + " Hz");
});
$("#iforte_frqa").change();
}
}
</script>
</body>
</html>

352
src/iforte/sensors.html Normal file
View File

@@ -0,0 +1,352 @@
<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>
</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"><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 active"><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" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" 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" ></div>
<div class="container-fluid in">
<h1>RAINS logs</h1>
<div class="row" id="boxes">
<div class="col-12">
<ul class="nav nav-tabs" id="tab">
<li class="nav-item">
<a class="nav-link active" id="nav-sl" href="#" onclick="switchTab(0)">Sensors</a>
</li>
<li class="nav-item">
<a class="nav-link" id="nav-pl" href="#" onclick="switchTab(1)">Pressure measurements</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="sl" role="tabpanel">
<div class="row">
<div class="col-12 box-c mt-2 mb-2">
<h2 id="sta_err">
<button class="btn btn-primary btn-pm collapsed" type="button" data-toggle="collapse" data-target="#lfb"><i class="blue"></i></button>Logs filter</h2>
<div class="box collapse clearfix" id="lfb">
<small>Logs filters not functionnal on this simulator.</small>
<br>
<div class="form-row">
<div class="form-group col-auto">
<label for="fsd" class="col-form-label">Start date</label>
</div>
<div class="form-group col-auto">
<input type="date" class="form-control" id="fsd" step="1">
</div>
<div class="form-group col-auto">
<label for="fed" class="col-form-label">End date</label>
</div>
<div class="form-group col-auto">
<input type="date" class="form-control" id="fed" step="1">
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl0" for="fts0">Temperature</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts0">
<option value="0">-</option>
<option value="1">=</option>
<option value="2">&lt;</option>
<option value="3">&gt;</option>
<option value="4">&lt;=</option>
<option value="5">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv0">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv0">°C</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl1" for="fts1">Relative humidity</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts1">
<option value="0">-</option>
<option value="1">=</option>
<option value="2">&lt;</option>
<option value="3">&gt;</option>
<option value="4">&lt;=</option>
<option value="5">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv1">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv1">%</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl2" for="fts2">Pressure</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts2">
<option value="0">-</option>
<option value="1">=</option>
<option value="2">&lt;</option>
<option value="3">&gt;</option>
<option value="4">&lt;=</option>
<option value="5">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv2">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv2">hPa</label>
</div>
</div>
<div class="float-right">
<button type="button" class="btn btn-primary mr06" id="fap" onclick="alert('Logs filters not functionnal on this simulator.')">Apply filter</button>
<button type="button" class="btn btn-primary" id="fcl" onclick="alert('Logs filters not functionnal on this simulator.')">Clear filter</button>
</div>
</div>
</div>
</div>
<div class="clearfix mt-2">
<button class="btn btn-primary float-right dslog">Download log file</button>
</div>
<div class="table-responsive">
<table class="table mt-2">
<thead>
<tr>
<th>Date / Time</th>
<th>Temperature [°C]</th>
<th>Relative humidity [%]</th>
<th>Pressure [hPa]</th>
</tr>
</thead>
<tbody id="sensd">
<tr>
<td data-target="2023-3-2">2.3.2023 16:20:47</td>
<td>47</td>
<td>14.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:18:50</td>
<td>46</td>
<td>14.5</td>
<td>1021</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:15:36</td>
<td>45</td>
<td>14.5</td>
<td>1022</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:12:52</td>
<td>44</td>
<td>15.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:10:52</td>
<td>43</td>
<td>15.0</td>
<td>1020</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:07:46</td>
<td>42</td>
<td>15.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:04:27</td>
<td>41</td>
<td>16.0</td>
<td>1014</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:02:01</td>
<td>40</td>
<td>16.5</td>
<td>1021</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:58:37</td>
<td>39</td>
<td>16.5</td>
<td>1014</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:57:47</td>
<td>38</td>
<td>16.5</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:30:07</td>
<td>42</td>
<td>15.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:05:29</td>
<td>41</td>
<td>15.0</td>
<td>1013</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="tab-pane fade" id="pl" role="tabpanel">
<div class="clearfix mt-2">
<button class="btn btn-primary float-right dsprs">Download measurements file</button>
</div>
<div class="table-responsive">
<table class="table mt-2">
<thead>
<tr>
<th>Date / Time</th>
<th>Temperature [°C]</th>
<th>Relative humidity [%]</th>
<th>Pressure [hPa]</th>
<th>Pressure difference [hPa]</th>
<th>Duration [m:s]</th>
<th>Result</th>
</tr>
</thead>
<tbody id="presr">
<tr>
<td data-target="2023-3-2">2.3.2023 16:19:02</td>
<td>46</td>
<td>14.5</td>
<td>1021</td>
<td>7.50</td>
<td>01:22</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:15:33</td>
<td>44</td>
<td>14.5</td>
<td>1022</td>
<td>7.50</td>
<td>01:26</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:10:31</td>
<td>42</td>
<td>15.0</td>
<td>1021</td>
<td>7.47</td>
<td>01:28</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:02:09</td>
<td>40</td>
<td>16.5</td>
<td>1022</td>
<td>7.50</td>
<td>01:36</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-2-8">8.2.2023 16:18:04</td>
<td>53</td>
<td>24.0</td>
<td>1035</td>
<td>7.41</td>
<td>02:14</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-2-8">8.2.2023 12:29:14</td>
<td>43</td>
<td>16.0</td>
<td>1037</td>
<td>7.56</td>
<td>01:22</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-2-8">8.2.2023 11:50:29</td>
<td>29</td>
<td>17.5</td>
<td>1037</td>
<td>7.47</td>
<td>01:58</td>
<td>OK</td>
</tr>
</tbody>
</table>
</div>
</div>
</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>
function switchTab(id) {
console.log(id);
if (id == 0) {
// go to SL
$('#nav-pl').removeClass("active")
$('#nav-sl').addClass("active")
$('#pl').removeClass("show active")
$('#sl').addClass("show active")
} else {
// go to PL
$('#nav-sl').removeClass("active")
$('#nav-pl').addClass("active")
$('#sl').removeClass("show active")
$('#pl').addClass("show active")
}
}
</script>
</body>
</html>

View File

@@ -30,12 +30,6 @@
<button type="button" class="btn btn-primary" style="width: 100%;" onclick="location.href='./iforte/index.html'"><img src="./iforte/iforte.png" style="height: 100px;"><br>Launch</button>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>ProMotion</h2>
<div class="box">
<button type="button" class="btn btn-primary" style="width: 100%;" onclick="location.href='./promotion/index.html'" disabled><img src="./promotion/promotion.png" style="height: 100px;"><br>Coming soon</button>
</div>
</div>
</div>
</div>
</body>

View File

@@ -10,8 +10,20 @@ $(document).ready(function() {
// handle RDM ident
var idntb = $('#idnt img');
var idnt_status = sessionStorage.getItem('t1_idnt')
if (idnt_status == 1) {
idntb.addClass("a");
}
$('#idnt').click(function() {
idntb.toggleClass('a');
var idnt_status = sessionStorage.getItem('t1_idnt')
if (idnt_status == 1) {
idntb.removeClass("a");
sessionStorage.setItem('t1_idnt', '0')
} else {
idntb.addClass("a")
sessionStorage.setItem('t1_idnt', '1')
}
});
//handle settins modal
@@ -80,41 +92,40 @@ function do_ajax(p_url,p_data) {
switch (p_url) {
case '/reset_hours':
if (p_data.rh == 0) {
sessionStorage.setItem('hr0', '0')
sessionStorage.setItem('t1_hr0', '0')
} else if (p_data.rh == 1){
sessionStorage.setItem('hr1', '0')
sessionStorage.setItem('t1_hr1', '0')
} else if (p_data.rh == 3){
sessionStorage.setItem('hr3', sessionStorage.getItem('h3'))
sessionStorage.setItem('t1_hr3', sessionStorage.getItem('t1_h3'))
}
break;
case '/reset_temps':
if (p_data.rt == 0) {
sessionStorage.setItem('tmr0', sessionStorage.getItem('t0'))
sessionStorage.setItem('t1_tmr0', sessionStorage.getItem('t1_t0'))
} else if (p_data.rt == 3){
sessionStorage.setItem('tmr3', sessionStorage.getItem('t3'))
sessionStorage.setItem('t1_tmr3', sessionStorage.getItem('t1_t3'))
} else if (p_data.rt == 2){
sessionStorage.setItem('tmr2', sessionStorage.getItem('t2'))
sessionStorage.setItem('t1_tmr2', sessionStorage.getItem('t1_t2'))
}
break;
case '/ltemps':
if (p_data.rlt == 0) {
sessionStorage.setItem('ltmr0', sessionStorage.getItem('lt0'))
sessionStorage.setItem('t1_ltmr0', sessionStorage.getItem('t1_lt0'))
} else if (p_data.rlt == 1){
sessionStorage.setItem('ltmr1', sessionStorage.getItem('lt1'))
sessionStorage.setItem('t1_ltmr1', sessionStorage.getItem('t1_lt1'))
} else if (p_data.rlt == 2){
sessionStorage.setItem('ltmr2', sessionStorage.getItem('lt2'))
sessionStorage.setItem('t1_ltmr2', sessionStorage.getItem('t1_lt2'))
}
break;
default:
for (const [key, value] of Object.entries(p_data)) {
sessionStorage.setItem(key, value)
if (key == 'tmpu') {
if (key == 't1_tmpu') {
if (value == 0) {
sessionStorage.setItem('tu', 'C')
sessionStorage.setItem('t1_tu', 'C')
} else if (value == 1) {
sessionStorage.setItem('tu', 'F')
sessionStorage.setItem('t1_tu', 'F')
}
}
}
@@ -226,17 +237,17 @@ function c_opt(n,t,o,pl,vp,lp,e) {
}
// returns radio field
function c_rad(n,t,r,e,c) {
function c_rad(name,legend,options,invalid_fb_txt,group_class) {
var html = '<div class="form-group' + c + '">';
html += '<legend class="col-form-label">' + t + '</legend>';
for (i = 0; i < r.length; i++) {
var html = '<div class="form-group' + group_class + '">';
html += '<legend class="col-form-label">' + legend + '</legend>';
for (i = 0; i < options.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 += '<input class="form-check-input" type="radio" name="' + name + '" value="' + i + '" id="' + name + (i + 1) + '">';
html += '<label class="form-check-label" for="' + name + (i + 1) + '">' + options[i] + '</label>';
html += '</div>';
}
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
html += invalid_fb_txt.length > 0 ? '<div class="invalid-feedback">' + invalid_fb_txt + '</div>' : '';
html += '</div>';
return html;
@@ -249,90 +260,92 @@ function addLeadingZeros(num) {
}
function initSessionStorage() {
var currentTime = new Date();
if (sessionStorage.getItem('dmxa') == null) {
if (sessionStorage.getItem('t1_dmxa') == null) {
console.log("sessionStorage empty, populating with demo data")
var currentTime = new Date();
/* CONSTANTS */
sessionStorage.setItem('ip', '2.246.16.203') // ip addr
sessionStorage.setItem('mac', '00:00:00:00:00:00') //
sessionStorage.setItem('rdmu', '52:53:00:00:00:00') //
sessionStorage.setItem('t1_ip', '2.246.16.203') // ip addr
sessionStorage.setItem('t1_mac', '00:00:00:00:00:00') //
sessionStorage.setItem('t1_rdmu', '52:53:00:00:00:00') //
/* VARIABLES */
sessionStorage.setItem('dmxa', '1') // dmx addr
sessionStorage.setItem('dmxp', '2') // dmx mode
sessionStorage.setItem('dmxi', '0') // input (wired0 wireless1 wirelessout2)
sessionStorage.setItem('rdmn', 'Robin T1 Wash') // rdm name
sessionStorage.setItem('bldmc', '0') // blackout dmc
sessionStorage.setItem('blptm', '0') // blackout pt
sessionStorage.setItem('dty', currentTime.getFullYear()) // date year
sessionStorage.setItem('dtmo', addLeadingZeros(currentTime.getMonth() + 1)) // date month
sessionStorage.setItem('dtd', addLeadingZeros(currentTime.getDay())) // date day
sessionStorage.setItem('dth', addLeadingZeros(currentTime.getHours())) // time hour
sessionStorage.setItem('dtmi', addLeadingZeros(currentTime.getMinutes())) // time minute
sessionStorage.setItem('dts', addLeadingZeros(currentTime.getSeconds())) // time seconds
sessionStorage.setItem('emod', '0') //ethmode 0dis 1art 2gma1 3gma2 4sacn
sessionStorage.setItem('ee2d', '0') //eth to dmx
sessionStorage.setItem('eanu', '0') //art uni
sessionStorage.setItem('emau', '1') //ma uni
sessionStorage.setItem('emas', '1') //ma session
sessionStorage.setItem('esau', '1') //sacn uni
sessionStorage.setItem('dint', '9') //disp int
sessionStorage.setItem('dsd', '0') //disp screensave
sessionStorage.setItem('dtl', '0') //disp lock
sessionStorage.setItem('dor', '2') //disp orientation 0norm 1inv 2auto
sessionStorage.setItem('mics', '9') // mic sens
sessionStorage.setItem('them', '0') // theatre mode
sessionStorage.setItem('fannl', '0') // fan noise level percent
sessionStorage.setItem('frq', '4928') // cpulse frequency, use frq_s to calculate. 4928 = 600.0000Hz
sessionStorage.setItem('fanm', '0') // fanmode 0auto 1high
sessionStorage.setItem('tmpu', '0') //temp unit 0c 1f
sessionStorage.setItem('tu', 'C') // temp unit string
sessionStorage.setItem('pr', '0') // pan rev
sessionStorage.setItem('ptf', '1') // pt feedback
sessionStorage.setItem('pte', '1') // pt EMS
sessionStorage.setItem('tr', '0') // tilt rev
sessionStorage.setItem('ptm', '0') // pt mode 0speed 1time
sessionStorage.setItem('ccalm', '1') // col cal mode
sessionStorage.setItem('cmixm', '0') // color mix mode 0rgb 1cmy
sessionStorage.setItem('chrwh', '0') // chromatic white
sessionStorage.setItem('cdimc', '1') //dim curve 0linear 1squarelaw
sessionStorage.setItem('thefs', '0') //tungsten dimming 0off 1_750 2_1000 3_1200 4_2000 5_2500
sessionStorage.setItem('t1_dmxa', '1') // dmx addr
sessionStorage.setItem('t1_dmxp', '2') // dmx mode
sessionStorage.setItem('t1_dmxi', '0') // input (wired0 wireless1 wirelessout2)
sessionStorage.setItem('t1_rdmn', 'Robin T1 Wash') // rdm name
sessionStorage.setItem('t1_idnt', '0') // ident
sessionStorage.setItem('h0', '1206') // power on time
sessionStorage.setItem('hr0', '1206') // resetable
sessionStorage.setItem('h1', '213') // leds on time
sessionStorage.setItem('hr1', '213') // resetable
sessionStorage.setItem('h3', '300') // airfilters
sessionStorage.setItem('hr3', '45') // resetable
sessionStorage.setItem('t1_bldmc', '0') // blackout dmc
sessionStorage.setItem('t1_blptm', '0') // blackout pt
sessionStorage.setItem('t0', '28') // led brd top now
sessionStorage.setItem('tm0', '62') // max
sessionStorage.setItem('tmr0', '62') // resetable
sessionStorage.setItem('t3', '26') // led brd bottom now
sessionStorage.setItem('tm3', '64') // max
sessionStorage.setItem('tmr3', '64') // resetable
sessionStorage.setItem('t2', '25') // base now
sessionStorage.setItem('tm2', '56') // max
sessionStorage.setItem('tmr2', '56') // resetable
sessionStorage.setItem('lt0', '22.3') // red amber now
sessionStorage.setItem('ltm0', '53') // max
sessionStorage.setItem('ltmr0', '53') // resetable
sessionStorage.setItem('lt1', '22.9') // green yellow now
sessionStorage.setItem('ltm1', '67') // max
sessionStorage.setItem('ltmr1', '67') // resetable
sessionStorage.setItem('lt2', '23.1') // blue now
sessionStorage.setItem('ltm2', '65') // max
sessionStorage.setItem('ltmr2', '65') // resetable
sessionStorage.setItem('t1_dty', currentTime.getFullYear()) // date year
sessionStorage.setItem('t1_dtmo', addLeadingZeros(currentTime.getMonth() + 1)) // date month
sessionStorage.setItem('t1_dtd', addLeadingZeros(currentTime.getDay())) // date day
sessionStorage.setItem('t1_dth', addLeadingZeros(currentTime.getHours())) // time hour
sessionStorage.setItem('t1_dtmi', addLeadingZeros(currentTime.getMinutes())) // time minute
sessionStorage.setItem('t1_dts', addLeadingZeros(currentTime.getSeconds())) // time seconds
sessionStorage.setItem('t1_emod', '0') //ethmode 0dis 1art 2gma1 3gma2 4sacn
sessionStorage.setItem('t1_ee2d', '0') //eth to dmx
sessionStorage.setItem('t1_eanu', '0') //art uni
sessionStorage.setItem('t1_emau', '1') //ma uni
sessionStorage.setItem('t1_emas', '1') //ma session
sessionStorage.setItem('t1_esau', '1') //sacn uni
sessionStorage.setItem('t1_dint', '9') //disp int
sessionStorage.setItem('t1_dsd', '0') //disp screensave
sessionStorage.setItem('t1_dtl', '0') //disp lock
sessionStorage.setItem('t1_dor', '2') //disp orientation 0norm 1inv 2auto
sessionStorage.setItem('t1_mics', '9') // mic sens
sessionStorage.setItem('t1_them', '0') // theatre mode
sessionStorage.setItem('t1_fannl', '0') // fan noise level percent
sessionStorage.setItem('t1_frq', '4928') // cpulse frequency, use frq_s to calculate. 4928 = 600.0000Hz
sessionStorage.setItem('t1_fanm', '0') // t1_fanmode 0auto 1high
sessionStorage.setItem('t1_tmpu', '0') //temp unit 0c 1f
sessionStorage.setItem('t1_tu', 'C') // temp unit string
sessionStorage.setItem('t1_pr', '0') // pan rev
sessionStorage.setItem('t1_ptf', '1') // pt feedback
sessionStorage.setItem('t1_pte', '1') // pt EMS
sessionStorage.setItem('t1_tr', '0') // tilt rev
sessionStorage.setItem('t1_ptm', '0') // pt mode 0speed 1time
sessionStorage.setItem('t1_ccalm', '1') // col cal mode
sessionStorage.setItem('t1_cmixm', '0') // color mix mode 0rgb 1cmy
sessionStorage.setItem('t1_chrwh', '0') // chromatic white
sessionStorage.setItem('t1_cdimc', '1') //dim curve 0linear 1squarelaw
sessionStorage.setItem('t1_thefs', '0') //tungsten dimming 0off 1_750 2_1000 3_1200 4_2000 5_2500
sessionStorage.setItem('t1_h0', '1206') // power on time
sessionStorage.setItem('t1_hr0', '1206') // resetable
sessionStorage.setItem('t1_h1', '213') // leds on time
sessionStorage.setItem('t1_hr1', '213') // resetable
sessionStorage.setItem('t1_h3', '300') // airfilters
sessionStorage.setItem('t1_hr3', '45') // resetable
sessionStorage.setItem('t1_t0', '28') // led brd top now
sessionStorage.setItem('t1_tm0', '62') // max
sessionStorage.setItem('t1_tmr0', '62') // resetable
sessionStorage.setItem('t1_t3', '26') // led brd bottom now
sessionStorage.setItem('t1_tm3', '64') // max
sessionStorage.setItem('t1_tmr3', '64') // resetable
sessionStorage.setItem('t1_t2', '25') // base now
sessionStorage.setItem('t1_tm2', '56') // max
sessionStorage.setItem('t1_tmr2', '56') // resetable
sessionStorage.setItem('t1_lt0', '22.3') // red amber now
sessionStorage.setItem('t1_ltm0', '53') // max
sessionStorage.setItem('t1_ltmr0', '53') // resetable
sessionStorage.setItem('t1_lt1', '22.9') // green yellow now
sessionStorage.setItem('t1_ltm1', '67') // max
sessionStorage.setItem('t1_ltmr1', '67') // resetable
sessionStorage.setItem('t1_lt2', '23.1') // blue now
sessionStorage.setItem('t1_ltm2', '65') // max
sessionStorage.setItem('t1_ltmr2', '65') // resetable
}
}
@@ -340,10 +353,10 @@ function populateUIFromSessionStorage() {
for (var i = 0; i < sessionStorage.length; i++) {
var valueToLoad = '';
switch (sessionStorage.key(i)) {
case 'dmxp':
case 't1_dmxp':
var valueToLoad = "Mode " + (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
break;
case 'dmxi':
case 't1_dmxi':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "wired"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
@@ -353,23 +366,23 @@ function populateUIFromSessionStorage() {
}
break;
case 'bldmc':
case 'blptm':
case 'ee2d':
case 'them':
case 'pr':
case 'tr':
case 'ptf':
case 'pte':
case 'ccalm':
case 'chrwh':
case 't1_bldmc':
case 't1_blptm':
case 't1_ee2d':
case 't1_them':
case 't1_pr':
case 't1_tr':
case 't1_ptf':
case 't1_pte':
case 't1_ccalm':
case 't1_chrwh':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "on"
}
break;
case 'emod':
case 't1_emod':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "disable"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
@@ -382,20 +395,20 @@ function populateUIFromSessionStorage() {
var valueToLoad = "sACN"
}
break;
case 'dint':
case 'mics':
case 't1_dint':
case 't1_mics':
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
break;
case 'dsd':
case 'dtl':
case 't1_dsd':
case 't1_dtl':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else {
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + " min")
}
break;
case 'dor':
case 't1_dor':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "normal"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
@@ -404,35 +417,35 @@ function populateUIFromSessionStorage() {
var valueToLoad = "auto"
}
break;
case 'fanm':
case 't1_fanm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "auto"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "high"
}
break;
case 'tmpu':
case 't1_tmpu':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "°C"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "°F"
}
break;
case 'ptm':
case 't1_ptm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "speed"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "time"
}
break;
case 'cmixm':
case 't1_cmixm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "rgb"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "cmy"
}
break;
case 'thefs':
case 't1_thefs':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
@@ -447,14 +460,18 @@ function populateUIFromSessionStorage() {
var valueToLoad = "2500 W"
}
break;
case 'cdimc':
case 't1_cdimc':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "linear"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "square law"
}
break;
break;
case 't1_frq':
var valueToLoad = t1_frq_s(sessionStorage.getItem('t1_frq'))
break;
default:
var valueToLoad = sessionStorage.getItem(sessionStorage.key(i))
break;
}
@@ -462,6 +479,16 @@ function populateUIFromSessionStorage() {
$("#" + sessionStorage.key(i) + "_v").html(valueToLoad)
// for each element with id tu_v sets html to string of temp unit
$('div[id^="tu_v"]').html(sessionStorage.getItem('tu'))
$('div[id^="t1_tu_v"]').html(sessionStorage.getItem('t1_tu'))
}
}
}
// calc proper frequency to be displayed
function t1_frq_s(t1_frq) {
var f = 360000000000;
var k = (0x700) - (t1_frq & 0xfff);
var arr = 465 + ((k >> 8) & 0x0f);
var x = k & 0xff;
f = f * (1 << (t1_frq >> 12)) / (arr * (256 - x) + (arr + 1) * (x));
return Math.floor(f / 10000) + '.' + ('0000' + Math.floor(f % 10000)).slice(-4)
}

View File

@@ -10,7 +10,6 @@
<script src="../files/popper.min.js"></script>
<script src="../files/bootstrap.min.js"></script>
<script src="base.js"></script>
<title id="pt_v">Robin T1 Wash</title>
</head>
<body>
@@ -31,7 +30,7 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth">Robin T1 Wash</div>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in">
<h1>Discovery</h1>
<div class="row" id="boxes">
@@ -41,6 +40,7 @@
devices with warning to top</label></div><button class="btn btn-primary float-right"
id="scan">Discover (0)</button>
</div>
<div class="table-responsive">
<table class="table mt-2" id="d-t">
<thead id="dmax">
@@ -55,25 +55,18 @@
</thead>
<tbody id="scd">
<tr>
<td>Robin T1 Wash</td>
<td>100</td>
<td>Mode 3</td>
<td>52:53:00:00:00</td>
<td><a href="">2.146.200.16</a></td>
<td id="t1_rdmn_v"></td>
<td id="t1_dmxa_v"></td>
<td id="t1_dmxp_v"></td>
<td id="t1_rdmu_v"></td>
<td><a id="t1_ip_v" href="./index.html"></a></td>
</tr>
<tr>
<td>Robin EspriTE</td>
<td>Robin iForte</td>
<td>200</td>
<td>Mode 1</td>
<td>52:53:00:00:00</td>
<td><a href="">2.146.12.146</a></td>
</tr>
<tr>
<td>Robin T2 Profile</td>
<td>300</td>
<td>Mode 3</td>
<td>52:53:00:00:00</td>
<td><a href="">2.146.28.123</a></td>
<td><a href="../iforte/index.html">2.146.12.146</a></td>
</tr>
</tbody>
</table>
@@ -85,8 +78,7 @@
<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>
<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>

View File

@@ -6,7 +6,6 @@
<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">Robin T1 Wash</title>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
@@ -24,7 +23,7 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth">Robin T1 Wash</div>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in">
<h1>Device status</h1>
<div class="row" id="boxes">
@@ -42,25 +41,25 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="dmxa_v"></div>
<div id="t1_dmxa_v"></div>
</li>
<li>
<div id="dmxp_v"></div>
<div id="t1_dmxp_v"></div>
</li>
<li>
<div id="dmxi_v"></div>
<div id="t1_dmxi_v"></div>
</li>
<li class="mt-2">
<div id="ip_v"></div>
<div id="t1_ip_v"></div>
</li>
<li>
<div id="mac_v"></div>
<div id="t1_mac_v"></div>
</li>
<li class="mt-2">
<div id="rdmu_v"></div>
<div id="t1_rdmu_v"></div>
</li>
<li>
<div id="rdmn_v"></div>
<div id="t1_rdmn_v"></div>
</li>
</ul>
</div>
@@ -75,21 +74,21 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="h0_v"></div>
<div id="t1_h0_v"></div>
h /
<div id="hr0_v"></div>
<div id="t1_hr0_v"></div>
h
</li>
<li>
<div id="h1_v"></div>
<div id="t1_h1_v"></div>
h /
<div id="hr1_v"></div>
<div id="t1_hr1_v"></div>
h
</li>
<li>
<div id="h3_v"></div>
<div id="t1_h3_v"></div>
h /
<div id="hr3_v"></div>
<div id="t1_hr3_v"></div>
h
</li>
</ul>
@@ -109,82 +108,22 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="t0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tm0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tmr0_v"></div>
°
<div class="tu" id="tu_v"></div>
<div id="t1_t0_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_tm0_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_tmr0_v"></div> °<div class="t1_tu" id="t1_tu_v"></div>
</li>
<li>
<div id="t3_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tm3_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tmr3_v"></div>
°
<div class="tu" id="tu_v"></div>
<div id="t1_t3_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_tm3_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_tmr3_v"></div> °<div class="t1_tu" id="t1_tu_v"></div>
</li>
<li>
<div id="t2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tm2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tmr2_v"></div>
°
<div class="tu" id="tu_v"></div>
<div id="t1_t2_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_tm2_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_tmr2_v"></div> °<div class="t1_tu" id="t1_tu_v"></div>
</li>
<li>
<div id="lt0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltm0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltmr0_v"></div>
°
<div class="tu" id="tu_v"></div>
<div id="t1_lt0_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_ltm0_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_ltmr0_v"></div> °<div class="t1_tu" id="t1_tu_v"></div>
</li>
<li>
<div id="lt1_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltm1_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltmr1_v"></div>
°
<div class="tu" id="tu_v"></div>
<div id="t1_lt1_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_ltm1_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_ltmr1_v"></div> °<div class="t1_tu" id="t1_tu_v"></div>
</li>
<li>
<div id="lt2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltm2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltmr2_v"></div>
°
<div class="tu" id="tu_v"></div>
<div id="t1_lt2_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_ltm2_v"></div> °<div class="t1_tu" id="t1_tu_v"></div> / <div id="t1_ltmr2_v"></div> °<div class="t1_tu" id="t1_tu_v"></div>
</li>
</ul>
<p><small>current / maximum / resetable</small></p>
@@ -199,10 +138,10 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="lwc_v">not installed</div>
<div id="t1_lwc_v">not installed</div>
</li>
<li>
<div id="lws_v">...</div>
<div id="t1_lws_v">...</div>
</li>
</ul>
</div>
@@ -235,7 +174,7 @@
<div class="col-12 box-c">
<h2 id="sta_err">Status messages</h2>
<div class="box">
<li> This is a simulated REAP™ page for demo purposes. Some content might be different on real fixtures.</li>
<li>This is a simulated REAP™ page for demo purposes. Some content might be different on real fixtures.</li>
<li>Big thanks to Vincent BOUQUET for creating this simulator.</li>
</div>
</div>
@@ -256,7 +195,7 @@
</div>
<script>
var a_m = -1;
var m_t = ['DMX/RDM settings', 'Reset timers', 'Reset temperatures', 'Wireless settings', ];
var m_t = ['DMX/RDM settings', 'Reset timers', 'Reset temperatures', 'Wireless settings'];
function open_modal(i) {
a_m = i;
@@ -270,10 +209,10 @@
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', [3], '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')
h += c_txt('t1_dmxa', 'DMX address', 'Please put DMX address from 1 to 512');
h += c_opt('t1_dmxp', 'DMX preset', [3], 'Mode ', 0, 1, '');
h += c_opt('t1_dmxi', 'DMX input', ['wired', 'wireless', 'wireless XLR out'], '', 0, 1, 'Can not set wireless input now!');
h += c_txt('t1_rdmn', 'RDM label', 'Please insert label,max 32 characters')
} else if (a_m == 1) {
h += c_btn('Power on time reset', 0, ' rh');
h += c_btn('LEDs on time reset', 1, ' rh')
@@ -293,7 +232,7 @@
$('#cfg-modal').modal();
$('.sb').bind('click', function() {
loader(1);
var par = ['dmxa', 'dmxp', 'dmxi', 'rdmn'];
var par = ['t1_dmxa', 't1_dmxp', 't1_dmxi', 't1_rdmn'];
do_ajax('/set_dmx', serialize_parameters(par))
});
$('.rh').bind('click', function() {

View File

@@ -10,7 +10,6 @@
<script src="../files/popper.min.js"></script>
<script src="../files/bootstrap.min.js"></script>
<script src="base.js"></script>
<title id="pt_v">Robin T1 Wash</title>
</head>
<body>
@@ -31,19 +30,16 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth">Robin T1 Wash</div>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in">
<h1>Device logs</h1>
<div class="row" id="boxes">
<div class="col-12 box-c">
<h2 id="sta_err"><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse"
data-target="#lfb"><i class="blue"></i></button> Logs filter<a class="cfg"
onclick="cfgm();"><img src="../files/settings.svg"></a></h2>
<h2 id="sta_err"><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#lfb"><i class="blue"></i></button> Logs filter<a class="cfg" onclick="cfgm();"><img src="../files/settings.svg"></a></h2>
<div class="box collapse clearfix" id="lfb">
<h3><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse"
data-target="#f_me"><i></i></button> Mechanical errors<div class="fall"><input
type="checkbox" id="f_me_p"> all must pass</div>
</h3>
<small>Logs filters not functionnal on this simulator.</small>
<br>
<h3><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_me"><i></i></button> Mechanical errors<div class="fall"><input type="checkbox" id="f_me_p">all must pass</div></h3>
<div class="collapse" id="f_me">
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_0" value="0"><label class="form-check-label" for="fe_0">Pan error</label></div>
@@ -141,7 +137,7 @@
<div class="form-group col-auto"><input type="text" class="form-control" size="5" id="ftv0">
</div>
<div class="form-group col-auto"><label class="col-form-label" for="ftv0">°<span
class="tu" id="tu_v">C</span></label></div>
class="tu" t1_tu_v">C</span></label></div>
</div>
<div class="form-row">
<div class="form-group col-auto"><label class="col-form-label" id="tl1"
@@ -154,7 +150,7 @@
<div class="form-group col-auto"><input type="text" class="form-control" size="5" id="ftv1">
</div>
<div class="form-group col-auto"><label class="col-form-label" for="ftv1">°<span
class="tu" id="tu_v">C</span></label></div>
class="tu" t1_tu_v">C</span></label></div>
</div>
<div class="form-row">
<div class="form-group col-auto"><label class="col-form-label" id="tl2"
@@ -167,7 +163,7 @@
<div class="form-group col-auto"><input type="text" class="form-control" size="5" id="ftv2">
</div>
<div class="form-group col-auto"><label class="col-form-label" for="ftv2">°<span
class="tu" id="tu_v">C</span></label></div>
class="tu" t1_tu_v">C</span></label></div>
</div>
<div class="form-row">
<div class="form-group col-auto"><label class="col-form-label" id="tl3" for="fts3">LEDs
@@ -180,7 +176,7 @@
<div class="form-group col-auto"><input type="text" class="form-control" size="5" id="ftv3">
</div>
<div class="form-group col-auto"><label class="col-form-label" for="ftv3">°<span
class="tu" id="tu_v">C</span></label></div>
class="tu" t1_tu_v">C</span></label></div>
</div>
</div>
<h3><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse"
@@ -327,24 +323,38 @@
</div>
</div>
<script>
var lfn = 'data';
// CREATES MODAL FOR LOG TOOLS
function cfgm() {
$('#m-t').html('Logs tools');
$('#m-f').empty();
$('.sb').unbind();
var tl = c_btn('Download log file', 0, ' dlog');
tl += c_btn('Start DMX sniff', 0, ' ddmx');
$('#m-b').html(tl);
$('#cfg-modal').modal();
$('.dlog').bind('click', function () {
close_modal()
});
$('.ddmx').bind('click', function () {
close_modal()
})
var is_sniffing = false;
// CREATES MODAL FOR LOG TOOLS
function cfgm() {
$('#m-t').html('Logs tools');
$('#m-f').empty();
$('.sb').unbind();
var tl = c_btn('Download log file', 0, ' dlog');
if (!is_sniffing) {
tl += c_btn('Start DMX sniff', 0, ' ddmx');
} else {
tl += c_btn('Stop DMX sniff', 0, ' ddmx');
}
$('#m-b').html(tl);
$('#cfg-modal').modal();
$('.dlog').bind('click', function () {
// download logs
close_modal()
});
$('.ddmx').bind('click', function () {
// start sniff
if (is_sniffing) {
$('.ddmx').html('Start DMX sniff');
is_sniffing = false;
} else {
$('.ddmx').html('Stop DMX sniff');
is_sniffing = true;
}
close_modal()
})
}
function lfix(l) {
return l.charAt(0).toUpperCase() + l.slice(1).toLowerCase().replace('ems', 'EMS')
@@ -381,7 +391,7 @@
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 +
'">&deg;<span class="tu" id="tu_v"></span></label></div>';
'">&deg;<span class="tu" t1_tu_v"></span></label></div>';
html += '</div>';
return html
}

View File

@@ -10,7 +10,6 @@
<script src="../files/popper.min.js"></script>
<script src="../files/bootstrap.min.js"></script>
<script src="base.js"></script>
<title id="pt_v">Robin T1 Wash</title>
</head>
<body>
@@ -26,18 +25,18 @@
<li class="nav-item"><a class="nav-link" href="./discovery.html">Discovery</a>
</li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" id="idnt"><img class="rdmi" src="../files/identify.svg"></a></li>
<li class="nav-item"><a class="nav-link" 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">Robin T1 Wash</div>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in">
<h1>Personality</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>
<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>
@@ -47,23 +46,22 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="dmxa_v">1</div>
<div id="t1_dmxa_v"></div>
</li>
<li>
<div id="dmxp_v">Mode 3</div>
<div id="t1_dmxp_v"></div>
</li>
<li>
<div id="dmxi_v">wired</div>
<div id="t1_dmxi_v"></div>
</li>
<li>
<div id="rdmn_v">Robin T1 Wash</div>
<div id="t1_rdmn_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Ethernet settings<a class="cfg" onclick="open_modal(1);"><img
src="../files/settings.svg"></a></h2>
<h2>Ethernet settings<a class="cfg" onclick="open_modal(1);"><img src="../files/settings.svg"></a></h2>
<div class="box">
<ul class="group">
<li>Ethernet mode</li>
@@ -75,29 +73,28 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="emod_v">disable</div>
<div id="t1_emod_v"></div>
</li>
<li>
<div id="ee2d_v">off</div>
<div id="t1_ee2d_v"></div>
</li>
<li>
<div id="eanu_v">0</div>
<div id="t1_eanu_v"></div>
</li>
<li>
<div id="emau_v">1</div>
<div id="t1_emau_v"></div>
</li>
<li>
<div id="emas_v">1</div>
<div id="t1_emas_v"></div>
</li>
<li>
<div id="esau_v">1</div>
<div id="t1_esau_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Pan/Tilt settings<a class="cfg" onclick="open_modal(2);"><img
src="../files/settings.svg"></a></h2>
<h2>Pan/Tilt settings<a class="cfg" onclick="open_modal(2);"><img src="../files/settings.svg"></a></h2>
<div class="box">
<ul class="group">
<li>Pan reverse</li>
@@ -108,33 +105,32 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="pr_v">off</div>
<div id="t1_pr_v"></div>
</li>
<li>
<div id="tr_v">off</div>
<div id="t1_tr_v"></div>
</li>
<li>
<div id="ptf_v">on</div>
<div id="t1_ptf_v"></div>
</li>
<li>
<div id="ptm_v">speed</div>
<div id="t1_ptm_v"></div>
</li>
<li>
<div id="pte_v">on</div>
<div id="t1_pte_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Blackout settings<a class="cfg" onclick="open_modal(3);"><img
src="../files/settings.svg"></a></h2>
<h2>Blackout settings<a class="cfg" onclick="open_modal(3);"><img src="../files/settings.svg"></a></h2>
<div class="box">
<ul class="group">
<li>Blackout DMC</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="bldmc_v">off</div>
<div id="t1_bldmc_v"></div>
</li>
</ul>
<h3>Active blackout while</h3>
@@ -143,14 +139,13 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="blptm_v">off</div>
<div id="t1_blptm_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Screen settings<a class="cfg" onclick="open_modal(4);"><img
src="../files/settings.svg"></a></h2>
<h2>Screen settings<a class="cfg" onclick="open_modal(4);"><img src="../files/settings.svg"></a></h2>
<div class="box">
<ul class="group">
<li>Display intensity</li>
@@ -160,23 +155,22 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="dint_v">10</div>
<div id="t1_dint_v"></div>
</li>
<li>
<div id="dsd_v">5 min</div>
<div id="t1_dsd_v"></div>
</li>
<li>
<div id="dtl_v">off</div>
<div id="t1_dtl_v"></div>
</li>
<li>
<div id="dor_v">auto</div>
<div id="t1_dor_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Color settings<a class="cfg" onclick="open_modal(7);"><img
src="../files/settings.svg"></a></h2>
<h2>Color settings<a class="cfg" onclick="open_modal(7);"><img src="../files/settings.svg"></a></h2>
<div class="box">
<ul class="group">
<li>Colour calibration mode</li>
@@ -187,19 +181,19 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="ccalm_v">on</div>
<div id="t1_ccalm_v"></div>
</li>
<li>
<div id="cmixm_v">cmy</div>
<div id="t1_cmixm_v"></div>
</li>
<li>
<div id="chrwh_v">off</div>
<div id="t1_chrwh_v"></div>
</li>
<li>
<div id="thefs_v">off</div>
<div id="t1_thefs_v"></div>
</li>
<li>
<div id="cdimc_v">square law</div>
<div id="t1_cdimc_v"></div>
</li>
</ul>
</div>
@@ -214,17 +208,16 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="dtd_v">13</div>.<div id="dtmo_v">05</div>.<div id="dty_v">2022</div>
<div id="t1_dtd_v"></div>.<div id="t1_dtmo_v"></div>.<div id="t1_dty_v"></div>
</li>
<li>
<div id="dth_v">11</div>:<div id="dtmi_v">09</div>:<div id="dts_v">21</div>
<div id="t1_dth_v"></div>:<div id="t1_dtmi_v"></div>:<div id="t1_dts_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>Other settings<a class="cfg" onclick="open_modal(6);"><img
src="../files/settings.svg"></a></h2>
<h2>Other settings<a class="cfg" onclick="open_modal(6);"><img src="../files/settings.svg"></a></h2>
<div class="box">
<ul class="group">
<li>Microphone sensitivity</li>
@@ -235,20 +228,21 @@
</ul>
<ul class="group vals" id="">
<li>
<div id="mics_v">10</div>
<div id="t1_mics_v"></div>
</li>
<li>
<div id="them_v">off</div>
<div id="themq" class="pl03 dn" style="display: none;">(<div id="fannl_v">0</div>%)</div>
<div id="t1_them_v"></div>
<div id="t1_themq" class="pl03 dn" style="display: none;">(<div id="t1_fannl_v"></div>%)
</div>
</li>
<li>
<div id="frqs_v">600.0000</div>
<div id="t1_frq_v"></div>
</li>
<li>
<div id="fanm_v">auto</div>
<div id="t1_fanm_v"></div>
</li>
<li>
<div id="tmpu_v">°C</div>
<div id="t1_tmpu_v"></div>
</li>
</ul>
</div>
@@ -268,131 +262,128 @@
</div>
</div>
<script>
var a_m = -1;
var m_t = ['DMX/RDM settings', 'Ethernet settings', 'Pan/Tilt settings', 'Blackout settings', 'Screen settings',
'Date & time settings', 'Other settings', 'Color settings', 'Lamp settings',
];
var addrs = ['set_dmx', 'eth_s', 'pt_s', 'bl_s', 'dis_s', 'ldt_s', 'oth_s', 'col_s', 'lamp_s', ];
var modal_id = -1;
var modal_titles = ['DMX/RDM settings', 'Ethernet settings', 'Pan/Tilt settings', 'Blackout settings', 'Screen settings', 'Date & time settings', 'Other settings', 'Color settings', 'Lamp settings'];
var addrs = ['set_dmx', 'eth_s', 'pt_s', 'bl_s', 'dis_s', 'ldt_s', 'oth_s', 'col_s', 'lamp_s',];
var params = [
['dmxa', 'dmxp', 'dmxi', 'rdmn'],
['emod', 'ee2d', 'eanu', 'emau', 'emas', 'esau'],
['pr', 'tr', 'ptf', 'ptm', 'pte'],
['bldmc', 'blptm', 'blprm', 'blgwm', 'bltim'],
['dint', 'dsd', 'dtl', 'dor'],
['dtd', 'dtmo', 'dty', 'dth', 'dtmi', 'dts'],
['mics', 'fanm', 'tmpu', 'them', 'cpm', 'fannl', 'fsmo', 'btns', 'freq', 'freqa'],
['ccri', 'cdimc', 'hpwrm', 'ccalm', 'cmixm', 'chrwh', 'thefs', 'whip83z'],
['lonof', 'lpwr', 'ligde', 'llise', 'lonpon', 'lofvd', 'londp', 'lofdm'],
['t1_dmxa', 't1_dmxp', 't1_dmxi', 't1_rdmn'],
['t1_emod', 't1_ee2d', 't1_eanu', 't1_emau', 't1_emas', 't1_esau'],
['t1_pr', 't1_tr', 't1_ptf', 't1_ptm', 't1_pte'],
['t1_bldmc', 't1_blptm', 't1_blprm', 't1_blgwm', 't1_bltim'],
['t1_dint', 't1_dsd', 't1_dtl', 't1_dor'],
['t1_dtd', 't1_dtmo', 't1_dty', 't1_dth', 't1_dtmi', 't1_dts'],
['t1_mics', 't1_fanm', 't1_tmpu', 't1_them', 't1_cpm', 't1_fannl', 't1_fsmo', 't1_btns', 't1_freq', 't1_freqa'],
['t1_ccri', 't1_cdimc', 't1_hpwrm', 't1_ccalm', 't1_mixm', 't1_chrwh', 't1_thefs', 't1_whip83z'],
['t1_lonof', 't1_lpwr', 't1_ligde', 't1_llise', 't1_lonpon', 't1_lofvd', 't1_londp', 't1_lofdm'],
];
var frq = 0;
function open_modal(i) {
a_m = i;
if (a_m < m_t.length) {
$('#m-t').html(m_t[a_m])
var t1_frq = sessionStorage.getItem('t1_frq');
var t1_them = sessionStorage.getItem('t1_them');
var t1_fannl = sessionStorage.getItem('t1_fannl');
modal_id = i;
if (modal_id < modal_titles.length) {
$('#m-t').html(modal_titles[modal_id])
}
$('.sb').unbind();
$('#m-f').empty();
$('#m-f').append('<button type="button" class="btn btn-primary sb">Save</button>');
var off_on_l = ['off', 'on'];
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', [3], 'Mode ', 0, 1, '');
h += c_opt('dmxi', 'DMX input', ['wired', 'wireless', 'wireless XLR out'], '', 0, 1,
if (modal_id == 0) {
h += c_txt('t1_dmxa', 'DMX address', 'Please put DMX address from 1 to 512');
h += c_opt('t1_dmxp', 'DMX preset', [3], 'Mode ', 0, 1, '');
h += c_opt('t1_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_rad('emod', 'Ethernet mode', ['disable', 'ArtNet', 'gMA1', 'gMA2', 'sACN'], '', '');
h += c_rad('ee2d', 'Ethernet to DMX', off_on_l, '', '');
h += c_txt('eanu', 'ArtNet universe', 'Please put ArtNet universe from 0 to 255');
h += c_txt('emau', 'MANet I/II universe',
h += c_txt('t1_rdmn', 'RDM label', 'Please insert label,max 32 characters')
} else if (modal_id == 1) {
h += c_rad('t1_emod', 'Ethernet mode', ['disable', 'ArtNet', 'gMA1', 'gMA2', 'sACN'], '', '');
h += c_rad('t1_ee2d', 'Ethernet to DMX', off_on_l, '', '');
h += c_txt('t1_eanu', 'ArtNet universe', 'Please put ArtNet universe from 0 to 255');
h += c_txt('t1_emau', 'MANet I/II universe',
'Please put MANet I/II universe from 1 to 256 (64 for MANet I)');
h += c_txt('emas', 'MANet session ID', 'Please put MANet session ID from 1 to 32');
h += c_txt('esau', 'sACN universe', 'Please put sACN universe from 1 to 32000')
} else if (a_m == 2) {
h += c_txt('t1_emas', 'MANet session ID', 'Please put MANet session ID from 1 to 32');
h += c_txt('t1_esau', 'sACN universe', 'Please put sACN universe from 1 to 32000')
} else if (modal_id == 2) {
h += '<div class="row">';
h += c_rad('pr', 'Pan reverse', off_on_l, '', ' col-6');
h += c_rad('tr', 'Tilt reverse', off_on_l, '', ' col-6');
h += c_rad('ptf', 'Pan/Tilt feedback', off_on_l, '', ' col-6');
h += c_rad('ptm', 'Pan/Tilt Mode', ['speed', 'time'], '', ' col-6');
h += c_rad('pte', 'Pan/Titl EMS', off_on_l, '', ' col-6');
h += c_rad('t1_pr', 'Pan reverse', off_on_l, '', ' col-6');
h += c_rad('t1_tr', 'Tilt reverse', off_on_l, '', ' col-6');
h += c_rad('t1_ptf', 'Pan/Tilt feedback', off_on_l, '', ' col-6');
h += c_rad('t1_ptm', 'Pan/Tilt Mode', ['speed', 'time'], '', ' col-6');
h += c_rad('t1_pte', 'Pan/Tilt EMS', off_on_l, '', ' col-6');
h += '</div>'
} else if (a_m == 3) {
h += c_rad('bldmc', 'Blackout DMC', off_on_l, '', '');
} else if (modal_id == 3) {
h += c_rad('t1_bldmc', 'Blackout DMC', off_on_l, '', '');
h += '<h3>Active blackout while</h3>';
h += c_rad('blptm', 'Pan/Tilt moving', off_on_l, '', '')
} else if (a_m == 4) {
h += c_opt('dint', 'Display intensity', [10], '', 0, 1, '');
var dsd_dtl_l = ['off', '1 min', '2 min', '3 min', '4 min', '5 min', '6 min', '7 min', '8 min', '9 min',
'10 min'
];
h += c_opt('dsd', 'Screensaver delay', dsd_dtl_l, '', 0, 0, '');
h += c_opt('dtl', 'Touchscreen lock', dsd_dtl_l, '', 0, 0, '');
h += c_rad('dor', 'Display orientation', ['normal', 'inverted', 'auto'], '')
} else if (a_m == 5) {
h += c_rad('t1_blptm', 'Pan/Tilt moving', off_on_l, '', '')
} else if (modal_id == 4) {
h += c_opt('t1_dint', 'Display intensity', [10], '', 0, 1, '');
var t1_dsd_dtl_l = ['off', '1 min', '2 min', '3 min', '4 min', '5 min', '6 min', '7 min', '8 min', '9 min', '10 min'];
h += c_opt('t1_dsd', 'Screensaver delay', t1_dsd_dtl_l, '', 0, 0, '');
h += c_opt('t1_dtl', 'Touchscreen lock', t1_dsd_dtl_l, '', 0, 0, '');
h += c_rad('t1_dor', 'Display orientation', ['normal', 'inverted', 'auto'], '')
} else if (modal_id == 5) {
h += '<div class="row">';
h += c_txt('dtd', 'Day', '', ' col-4');
h += c_txt('dtmo', 'Month', '', ' col-4');
h += c_txt('dty', 'Year', '', ' col-4');
h += c_txt('dth', 'Hour', '', ' col-4');
h += c_txt('dtmi', 'Minute', '', ' col-4');
h += c_txt('dts', 'Second', '', ' col-4');
h += c_txt('t1_dtd', 'Day', '', ' col-4');
h += c_txt('t1_dtmo', 'Month', '', ' col-4');
h += c_txt('t1_dty', 'Year', '', ' col-4');
h += c_txt('t1_dth', 'Hour', '', ' col-4');
h += c_txt('t1_dtmi', 'Minute', '', ' col-4');
h += c_txt('t1_dts', 'Second', '', ' col-4');
h += '</div>';
h += '<button class="btn btn-primary btn-block uldt">Use local date & time</button>'
} else if (a_m == 6) {
h += c_opt('mics', 'Microphone sensitivity', [20], '', 0, 1, '');
h += c_rad('them', 'Theatre mode', ['off', 'quiet'], '', '');
h += '<div class="form-group" id="fannl_fg">';
h += '<label for="fannl" class="col-form-label">Fan noise level</label>';
} else if (modal_id == 6) {
h += c_opt('t1_mics', 'Microphone sensitivity', [20], '', 0, 1, '');
h += c_rad('t1_them', 'Theatre mode', ['off', 'quiet'], '', '');
h += '<div class="form-group" id="t1_fannl_fg">';
h += '<label for="t1_fannl" class="col-form-label">Fan noise level</label>';
h += '<div class="row">';
h +=
'<div class="col-9 col-sm-10"><input type="range" min="0" max="100" class="form-control" id="fannl"></div>';
h += '<div class="col-9 col-sm-10"><input type="range" min="0" max="100" class="form-control" id="t1_fannl"></div>';
h += '<div class="col-3 col-sm-2 mt06 text-right">100%</div>';
h += '</div>';
h += '</div>';
h += c_rad('frqs', 'Frequency setup (Hz)', ['300', '600', '1200', '2400'], '', '');
h += c_rad('t1_frqs', 'Frequency setup (Hz)', ['300', '600', '1200', '2400'], '', '');
h += '<div class="form-group">';
h += '<label for="frqa" class="col-form-label">Frequency Adjust</label>';
h += '<label for="t1_frqa" class="col-form-label">Frequency Adjust</label>';
h += '<div class="row">';
h +=
'<div class="col-7 col-sm-8"><input type="range" min="0" max="1663" class="form-control" id="frqa"></div>';
h += '<div class="col-5 col-sm-4 mt06 text-right" id="frq_bv"></div>';
h += '<div class="col-7 col-sm-8"><input type="range" min="0" max="1663" class="form-control" id="t1_frqa"></div>';
h += '<div class="col-5 col-sm-4 mt06 text-right" id="t1_frq_bv"></div>';
h += '</div>';
h += '</div>';
h += c_rad('fanm', 'Fan mode', ['auto', 'high'], '', '');
h += c_rad('tmpu', 'Temperature unit', ['&deg;C', '&deg;F'], '', '')
} else if (a_m == 7) {
h += c_rad('t1_fanm', 'Fan mode', ['auto', 'high'], '', '');
h += c_rad('t1_tmpu', 'Temperature unit', ['&deg;C', '&deg;F'], '', '')
} else if (modal_id == 7) {
h += '<div class="row">';
h += c_rad('ccalm', 'Colour calibration mode', off_on_l, '', ' col-6');
h += c_rad('cmixm', 'Colour mixing mode', ['rgb', 'cmy'], '', ' col-6');
h += c_rad('chrwh', 'Chromatic white', off_on_l, '', ' col-12');
h += c_rad('thefs', 'Thungsten effect simulation', ['off', '750 W', '1000 W', '1200 W', '2000 W',
h += c_rad('t1_ccalm', 'Colour calibration mode', off_on_l, '', ' col-6');
h += c_rad('t1_cmixm', 'Colour mixing mode', ['rgb', 'cmy'], '', ' col-6');
h += c_rad('t1_chrwh', 'Chromatic white', off_on_l, '', ' col-12');
h += c_rad('t1_thefs', 'Thungsten effect simulation', ['off', '750 W', '1000 W', '1200 W', '2000 W',
'2500 W'
], '', ' col-12');
h += c_rad('cdimc', 'Dimmer curve', ['linear', 'square law'], '', ' col-6')
} else if (a_m == 8) {
h += c_rad('lonof', 'Lamp status', off_on_l, '', '');
h += '<div class="form-group" id="ligde_fg">';
h += c_rad('t1_cdimc', 'Dimmer curve', ['linear', 'square law'], '', ' col-6')
} else if (modal_id == 8) {
h += c_rad('t1_lonof', 'Lamp status', off_on_l, '', '');
h += '<div class="form-group" id="t1_ligde_fg">';
h += '<label for="ligde" class="col-form-label">Lamp ignition delay</label>';
h += '<div class="row">';
h +=
'<div class="col-9 col-sm-10"><input type="range" min="0" max="90" class="form-control" id="ligde"></div>';
'<div class="col-9 col-sm-10"><input type="range" min="0" max="90" class="form-control" id="t1_ligde"></div>';
h += '<div class="col-3 col-sm-2 mt06 text-right"></div>';
h += '</div>';
h += '</div>';
h += '<div class="row">';
h += c_rad('llise', 'Lamp light sensor', off_on_l, '', ' col-6');
h += c_rad('lonpon', 'Lamp on power on', off_on_l, '', ' col-6');
h += c_rad('lofvd', 'Lamp off via DMX', off_on_l, '', ' col-6');
h += c_rad('londp', 'Lamp on if DMX present', off_on_l, '', ' col-6');
h += c_rad('lofdm', 'Lamp off if DMX missing', off_on_l, '', ' col-6');
h += c_rad('t1_llise', 'Lamp light sensor', off_on_l, '', ' col-6');
h += c_rad('t1_lonpon', 'Lamp on power on', off_on_l, '', ' col-6');
h += c_rad('t1_lofvd', 'Lamp off via DMX', off_on_l, '', ' col-6');
h += c_rad('t1_londp', 'Lamp on if DMX present', off_on_l, '', ' col-6');
h += c_rad('t1_lofdm', 'Lamp off if DMX missing', off_on_l, '', ' col-6');
h += '</div>'
}
$('#m-b').html(h);
$('#m-f').show();
copy_form_values(1);
if (a_m == 8) {
if (modal_id == 8) {
if ($('#ligde_v').html() == 'off') {
$('#ligde').val(0)
}
@@ -401,64 +392,53 @@
$('.sb').bind('click', function () {
loader(1);
var p_add = '';
if (a_m == 6) {
p_add = '&frq=' + frq
if (modal_id == 6) {
p_add = '&t1_frq=' + t1_frq
}
do_ajax(addrs[a_m], serialize_parameters(params[a_m]) + p_add)
do_ajax(addrs[modal_id], serialize_parameters(params[modal_id]) + p_add)
});
if (a_m == 5) {
if (modal_id == 5) {
$('.uldt').bind('click', function () {
var date = new Date();
$('#dtd').val(date.getDate());
$('#dtmo').val(date.getMonth() + 1);
$('#dty').val(date.getFullYear());
$('#dth').val(('0' + date.getHours()).slice(-2));
$('#dtmi').val(('0' + date.getMinutes()).slice(-2));
$('#dts').val(('0' + date.getSeconds()).slice(-2))
$('#t1_dtd').val(date.getDate());
$('#t1_dtmo').val(date.getMonth() + 1);
$('#t1_dty').val(date.getFullYear());
$('#t1_dth').val(('0' + date.getHours()).slice(-2));
$('#t1_dtmi').val(('0' + date.getMinutes()).slice(-2));
$('#t1_dts').val(('0' + date.getSeconds()).slice(-2))
})
} else if (a_m == 6) {
$('#fannl').on('input change', function () {
} else if (modal_id == 6) {
$('t1_fannl').val(t1_fannl);
$('input[name=t1_them]').eq(t1_them).attr('checked', 'checked');
$('#t1_fannl').on('input change', function () {
$(this).parent().next().html($(this).val() + '%')
});
$('#fannl').change();
$('input[name=them]').on('change', function () {
if ($('input[name=them]:checked').val() == 1) $('#fannl_fg').show();
else $('#fannl_fg').hide()
$('#t1_fannl').change();
$('input[name=t1_them]').on('change', function () {
if ($('input[name=t1_them]:checked').val() == 1) {
$('#t1_fannl_fg').show();
} else {
$('#t1_fannl_fg').hide();
}
});
$('input[name=them]').change();
$('input[name=frqs]').eq(frq >> 12).attr('checked', 'checked');
$('#frqa').val(frq & 0xfff);
$('input[name=frqs]').on('change', function () {
frq = $('input[name=frqs]:checked').val() << 12;
frq |= 0x340;
$('#frqa').val(0x340);
$('#frq_bv').html(frq_s(frq) + ' Hz')
$('input[name=t1_them]').change();
$('input[name=t1_frqs]').eq(t1_frq >> 12).attr('checked', 'checked'); // checks the radio of the proper
$('#t1_frqa').val(t1_frq & 0xfff);
$('input[name=t1_frqs]').on('change', function () {
t1_frq = $('input[name=t1_frqs]:checked').val() << 12;
t1_frq |= 0x340;
$('#t1_frqa').val(0x340);
$('#t1_frq_bv').html(t1_frq_s(t1_frq) + ' Hz')
});
$('#frqa').on('input change', function () {
frq &= 0xf000;
frq |= $('#frqa').val();
$('#frq_bv').html(frq_s(frq) + ' Hz')
$('#t1_frqa').on('input change', function () {
t1_frq &= 0xf000;
t1_frq |= $('#t1_frqa').val();
$('#t1_frq_bv').html(t1_frq_s(t1_frq) + ' Hz')
});
$('#frqa').change()
} else if (a_m == 8) {
$('#ligde').on('input change', function () {
var o = $(this).parent().next();
if ($(this).val() == 0) o.html('off');
else o.html($(this).val() + 's')
});
$('#ligde').change()
$('#t1_frqa').change()
}
}
function frq_s(frq) {
var f = 360000000000;
var k = (0x700) - (frq & 0xfff);
var arr = 465 + ((k >> 8) & 0x0f);
var x = k & 0xff;
f = f * (1 << (frq >> 12)) / (arr * (256 - x) + (arr + 1) * (x));
return Math.floor(f / 10000) + '.' + ('0000' + Math.floor(f % 10000)).slice(-4)
}
</script>
</body>

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB