Compare commits

...

22 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
29 changed files with 2234 additions and 2024 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,548 +0,0 @@
$(document).ready(function() {
initSessionStorage()
populateUIFromSessionStorage()
// 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');
var idnt_status = sessionStorage.getItem('iforte_idnt')
if (idnt_status == 1) {
idntb.addClass("a");
}
$('#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() {
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');
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 = ['opswd','npswd','npsch', 'iforte_demo_rains_age','iforte_demo_pressure_test'];
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 reset demo values
$(document).on('click','.btnresetdemo',function() {
$('.sb').html('OK')
sessionStorage.clear()
initSessionStorage()
populateUIFromSessionStorage()
showCustomModal('Cleared', 'Simulated page reset to default settings.')
});
});
// 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 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) {
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;
default:
for (const [key, value] of Object.entries(p_data)) {
//sessionStorage.setItem(key, value)
console.log("key: %o", key)
console.log("val: %o", 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 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(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
/* VARIABLES */
sessionStorage.setItem('iforte_dmxa', '1') // dmx addr
sessionStorage.setItem('iforte_dmxp', '2') // 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_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_hpwrm', '0') // high pwr mode
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') // iforte_fanmode 0auto 1high
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() {
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_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_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;
default:
var valueToLoad = sessionStorage.getItem(sessionStorage.key(i))
break;
}
console.log('key ' + i + " : " + valueToLoad);
$("#" + 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('iforte_tu'))
}
}
// calc proper frequency to be displayed
function iforte_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

@@ -1,263 +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>
</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" onclick="window.location = ('../index.html')"></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>

View File

@@ -1,456 +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>
</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" onclick="window.location = ('../index.html')"></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>
<small id="iforte_dmxf_v"></small>
</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 class="iforte_tu"></div> / <div id="iforte_tm0_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tmr0_v"></div>° <div class="iforte_tu"></div>
</li>
<li>
<div id="iforte_t3_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tm3_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tmr3_v"></div>° <div class="iforte_tu"></div>
</li>
<li>
<div id="iforte_t1_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tm1_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tmr1_v"></div>° <div class="iforte_tu"></div>
</li>
<li>
<div id="iforte_t2_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tm2_v"></div>° <div class="iforte_tu"></div> / <div id="iforte_tmr2_v"></div>° <div class="iforte_tu"></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;">Enter standby mode</button>
<div>Current RAINS status</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div id="iforte_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="iforte_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="iforte_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">
<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;
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,595 +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>
</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" onclick="window.location = ('../index.html')"></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>
<li>High power mode</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_cdimc_v"></div>
</li>
<li>
<div id="iforte_hpwrm_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></span><span></span><span></span><button class="btn btn-success btn-block" id="pt_b">Start test</button></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></span><span class="ptok">OK</span><span></span><button class="btn btn-block btn-success" id="pt_b">Start test</button></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></span><span class="ptf">FAIL</span><span></span><button class="btn btn-block btn-success" id="pt_b">Start test</button></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>Measuring Pressure</span><span>Remaining Time 04:37</span><span>42 °C / delta 3.34 hPa</span><button class="btn btn-block btn-danger" id="pt_b">Stop 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 = [
['iforte_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 / Tilt 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() {
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>

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,39 +1,39 @@
<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 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>
<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>
</nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></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>
</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>
@@ -362,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>
@@ -386,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>
@@ -407,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>
@@ -459,83 +459,99 @@
</div>
</div>
<script>
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');
$('#m-b').html(tl);
$('#cfg-modal').modal();
$('.dlog').bind('click', function () {
close_modal()
});
$('.ddmx').bind('click', function () {
close_modal()
})
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;
}
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 + '">';
close_modal()
})
}
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) {
}
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 +
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
}
</script>
</body>
</html>
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
}
</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>

View File

@@ -26,17 +26,17 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div>
<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" href="#sl">Sensors</a>
<a class="nav-link active" id="nav-sl" href="#" onclick="switchTab(0)">Sensors</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#pl">Pressure measurements</a>
<a class="nav-link" id="nav-pl" href="#" onclick="switchTab(1)">Pressure measurements</a>
</li>
</ul>
<div class="tab-content">
@@ -47,6 +47,7 @@
<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>
@@ -328,5 +329,24 @@
</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,7 +30,7 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in">
<h1>Discovery</h1>
<div class="row" id="boxes">

View File

@@ -23,7 +23,7 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></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">
@@ -117,7 +117,7 @@
<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="t1_lt0_v"></div> °<div class="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>
<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="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>

View File

@@ -30,7 +30,7 @@
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></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">
@@ -323,22 +323,38 @@
</div>
</div>
<script>
// 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')

View File

@@ -25,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" onclick="window.location = ('../index.html')"></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>
@@ -61,8 +61,7 @@
</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>
@@ -95,8 +94,7 @@
</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>
@@ -125,8 +123,7 @@
</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>
@@ -148,8 +145,7 @@
</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>
@@ -174,8 +170,7 @@
</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>
@@ -222,8 +217,7 @@
</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>
@@ -238,7 +232,8 @@
</li>
<li>
<div id="t1_them_v"></div>
<div id="t1_themq" class="pl03 dn" style="display: none;">(<div id="t1_fannl_v"></div>%)</div>
<div id="t1_themq" class="pl03 dn" style="display: none;">(<div id="t1_fannl_v"></div>%)
</div>
</li>
<li>
<div id="t1_frq_v"></div>
@@ -269,7 +264,7 @@
<script>
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 addrs = ['set_dmx', 'eth_s', 'pt_s', 'bl_s', 'dis_s', 'ldt_s', 'oth_s', 'col_s', 'lamp_s',];
var params = [
['t1_dmxa', 't1_dmxp', 't1_dmxi', 't1_rdmn'],
['t1_emod', 't1_ee2d', 't1_eanu', 't1_emau', 't1_emas', 't1_esau'],
@@ -281,12 +276,12 @@
['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'],
];
function open_modal(i) {
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])
@@ -373,7 +368,7 @@
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="t1_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>';
@@ -421,10 +416,10 @@
$('#t1_fannl').change();
$('input[name=t1_them]').on('change', function () {
if ($('input[name=t1_them]:checked').val() == 1) {
$('#t1_fannl_fg').show();
$('#t1_fannl_fg').show();
} else {
$('#t1_fannl_fg').hide();
}
}
});
$('input[name=t1_them]').change();
$('input[name=t1_frqs]').eq(t1_frq >> 12).attr('checked', 'checked'); // checks the radio of the proper
@@ -441,13 +436,6 @@
$('#t1_frq_bv').html(t1_frq_s(t1_frq) + ' Hz')
});
$('#t1_frqa').change()
} else if (modal_id == 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()
}
}

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB