Files
reap-simulator-vincent/iforte/index.html
2023-03-04 17:50:23 +01:00

443 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<link rel="stylesheet" href="../files/bootstrap.min.css">
<link rel="stylesheet" href="../files/layout.css">
<script src="../files/jquery-3.3.1.min.js"></script>
<script src="../files/popper.min.js"></script>
<script src="../files/bootstrap.min.js"></script>
<script src="./base.js"></script>
<title id="pt_v">iForte</title>
</head>
<body>
<!-- NAV WILL BE ADDED HERE BY FUNCTION IN BASE JS -->
<div class="fixed-top text-center device-label" id="pth"></div>
<div class="container-fluid in">
<h1>Device status</h1>
<div class="row" id="boxes">
<div class="col-md-6 col-xl-4 box-c">
<h2>DMX/RDM settings <a class="cfg" onclick="open_modal(0);">
<img src="../files/settings.svg">
</a>
</h2>
<div class="box">
<ul class="group">
<li>DMX address</li>
<li>DMX preset</li>
<li>DMX input</li>
<li class="mt-2">IP address</li>
<li>MAC address</li>
<li class="mt-2">RDM UID</li>
<li>RDM label</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="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>