482 lines
16 KiB
JavaScript
482 lines
16 KiB
JavaScript
$(document).ready(function() {
|
|
|
|
initSessionStorage()
|
|
populateUIFromSessionStorage()
|
|
|
|
// Sets the proper fixture name in the header and title
|
|
var fixturename = "Robin T1 Wash - Simulated";
|
|
$('#pth').html(fixturename)
|
|
$(document).prop('title', fixturename)
|
|
|
|
// handle RDM ident
|
|
var idntb = $('#idnt img');
|
|
$('#idnt').click(function() {
|
|
idntb.toggleClass('a');
|
|
});
|
|
|
|
//handle settins modal
|
|
$(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 += c_btn('Reset demo values', 'btnresetdemo', ' btnresetdemo')
|
|
$('#m-b').html(h);
|
|
$('.sb').unbind();
|
|
$('#cfg-modal').modal();
|
|
$('.sb').bind('click',function() {
|
|
loader(1);
|
|
setTimeout(function() {
|
|
close_modal();
|
|
loader(0);
|
|
}, 500);
|
|
});
|
|
});
|
|
|
|
// 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()
|
|
});
|
|
}
|
|
|
|
|
|
// turns loader animation on or off (0 or 1)
|
|
function loader(a) {
|
|
if (a) $('#cfg-modal .modal-header img').addClass('loader');
|
|
else $('#cfg-modal .modal-header img').removeClass('loader');
|
|
}
|
|
|
|
|
|
// called on modal saves
|
|
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('t1_hr0', '0')
|
|
} else if (p_data.rh == 1){
|
|
sessionStorage.setItem('t1_hr1', '0')
|
|
} else if (p_data.rh == 3){
|
|
sessionStorage.setItem('t1_hr3', sessionStorage.getItem('t1_h3'))
|
|
}
|
|
break;
|
|
case '/reset_temps':
|
|
if (p_data.rt == 0) {
|
|
sessionStorage.setItem('t1_tmr0', sessionStorage.getItem('t1_t0'))
|
|
} else if (p_data.rt == 3){
|
|
sessionStorage.setItem('t1_tmr3', sessionStorage.getItem('t1_t3'))
|
|
} else if (p_data.rt == 2){
|
|
sessionStorage.setItem('t1_tmr2', sessionStorage.getItem('t1_t2'))
|
|
}
|
|
break;
|
|
case '/ltemps':
|
|
if (p_data.rlt == 0) {
|
|
sessionStorage.setItem('t1_ltmr0', sessionStorage.getItem('t1_lt0'))
|
|
} else if (p_data.rlt == 1){
|
|
sessionStorage.setItem('t1_ltmr1', sessionStorage.getItem('t1_lt1'))
|
|
} else if (p_data.rlt == 2){
|
|
sessionStorage.setItem('t1_ltmr2', sessionStorage.getItem('t1_lt2'))
|
|
}
|
|
break;
|
|
|
|
default:
|
|
for (const [key, value] of Object.entries(p_data)) {
|
|
sessionStorage.setItem(key, value)
|
|
if (key == 't1_tmpu') {
|
|
if (value == 0) {
|
|
sessionStorage.setItem('t1_tu', 'C')
|
|
} else if (value == 1) {
|
|
sessionStorage.setItem('t1_tu', 'F')
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
populateUIFromSessionStorage()
|
|
loader(0)
|
|
close_modal()
|
|
}
|
|
|
|
// closes the currently open modal
|
|
function close_modal() {
|
|
loader(0)
|
|
setTimeout(function() {
|
|
$('#m-b').empty();
|
|
$('#cfg-modal').modal('hide');
|
|
},500);
|
|
}
|
|
|
|
|
|
// fills modals with form values
|
|
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>');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// creates a parameter-like url format from an array
|
|
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;
|
|
}
|
|
|
|
// returns txt field
|
|
function c_txt(input_id,label,e,form_div_class = '',input_text = 'text') {
|
|
|
|
var html = '<div class="form-group' + form_div_class + '">';
|
|
html += '<label for="' + input_id + '" class="col-form-label">' + label + '</label>';
|
|
html += '<input type="'+ input_text +'" class="form-control" id="' + input_id + '">';
|
|
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
|
|
html += '</div>';
|
|
|
|
return html;
|
|
}
|
|
|
|
// returns btn field
|
|
function c_btn(text, btnvalue, btnclass) {
|
|
return '<button class="btn btn-primary btn-block' + btnclass + '" value="' + btnvalue + '">' + text + '</button>';
|
|
}
|
|
|
|
// returns select field
|
|
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;
|
|
}
|
|
|
|
// returns radio field
|
|
function c_rad(name,legend,options,invalid_fb_txt,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_fb_txt.length > 0 ? '<div class="invalid-feedback">' + invalid_fb_txt + '</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('t1_dmxa') == null) {
|
|
console.log("sessionStorage empty, populating with demo data")
|
|
var currentTime = new Date();
|
|
|
|
/* CONSTANTS */
|
|
sessionStorage.setItem('t1_ip', '2.246.16.203') // ip addr
|
|
sessionStorage.setItem('t1_mac', '00:00:00:00:00:00') //
|
|
sessionStorage.setItem('t1_rdmu', '52:53:00:00:00:00') //
|
|
|
|
/* VARIABLES */
|
|
sessionStorage.setItem('t1_dmxa', '1') // dmx addr
|
|
sessionStorage.setItem('t1_dmxp', '2') // dmx mode
|
|
sessionStorage.setItem('t1_dmxi', '0') // input (wired0 wireless1 wirelessout2)
|
|
sessionStorage.setItem('t1_rdmn', 'Robin T1 Wash') // rdm name
|
|
|
|
sessionStorage.setItem('t1_bldmc', '0') // blackout dmc
|
|
sessionStorage.setItem('t1_blptm', '0') // blackout pt
|
|
|
|
sessionStorage.setItem('t1_dty', currentTime.getFullYear()) // date year
|
|
sessionStorage.setItem('t1_dtmo', addLeadingZeros(currentTime.getMonth() + 1)) // date month
|
|
sessionStorage.setItem('t1_dtd', addLeadingZeros(currentTime.getDay())) // date day
|
|
|
|
sessionStorage.setItem('t1_dth', addLeadingZeros(currentTime.getHours())) // time hour
|
|
sessionStorage.setItem('t1_dtmi', addLeadingZeros(currentTime.getMinutes())) // time minute
|
|
sessionStorage.setItem('t1_dts', addLeadingZeros(currentTime.getSeconds())) // time seconds
|
|
|
|
sessionStorage.setItem('t1_emod', '0') //ethmode 0dis 1art 2gma1 3gma2 4sacn
|
|
sessionStorage.setItem('t1_ee2d', '0') //eth to dmx
|
|
sessionStorage.setItem('t1_eanu', '0') //art uni
|
|
sessionStorage.setItem('t1_emau', '1') //ma uni
|
|
sessionStorage.setItem('t1_emas', '1') //ma session
|
|
sessionStorage.setItem('t1_esau', '1') //sacn uni
|
|
|
|
sessionStorage.setItem('t1_dint', '9') //disp int
|
|
sessionStorage.setItem('t1_dsd', '0') //disp screensave
|
|
sessionStorage.setItem('t1_dtl', '0') //disp lock
|
|
sessionStorage.setItem('t1_dor', '2') //disp orientation 0norm 1inv 2auto
|
|
|
|
sessionStorage.setItem('t1_mics', '9') // mic sens
|
|
|
|
sessionStorage.setItem('t1_them', '0') // theatre mode
|
|
sessionStorage.setItem('t1_fannl', '0') // fan noise level percent
|
|
sessionStorage.setItem('t1_frq', '4928') // cpulse frequency, use frq_s to calculate. 4928 = 600.0000Hz
|
|
sessionStorage.setItem('t1_fanm', '0') // t1_fanmode 0auto 1high
|
|
sessionStorage.setItem('t1_tmpu', '0') //temp unit 0c 1f
|
|
sessionStorage.setItem('t1_tu', 'C') // temp unit string
|
|
|
|
sessionStorage.setItem('t1_pr', '0') // pan rev
|
|
sessionStorage.setItem('t1_ptf', '1') // pt feedback
|
|
sessionStorage.setItem('t1_pte', '1') // pt EMS
|
|
sessionStorage.setItem('t1_tr', '0') // tilt rev
|
|
sessionStorage.setItem('t1_ptm', '0') // pt mode 0speed 1time
|
|
|
|
sessionStorage.setItem('t1_ccalm', '1') // col cal mode
|
|
sessionStorage.setItem('t1_cmixm', '0') // color mix mode 0rgb 1cmy
|
|
sessionStorage.setItem('t1_chrwh', '0') // chromatic white
|
|
sessionStorage.setItem('t1_cdimc', '1') //dim curve 0linear 1squarelaw
|
|
sessionStorage.setItem('t1_thefs', '0') //tungsten dimming 0off 1_750 2_1000 3_1200 4_2000 5_2500
|
|
|
|
sessionStorage.setItem('t1_h0', '1206') // power on time
|
|
sessionStorage.setItem('t1_hr0', '1206') // resetable
|
|
sessionStorage.setItem('t1_h1', '213') // leds on time
|
|
sessionStorage.setItem('t1_hr1', '213') // resetable
|
|
sessionStorage.setItem('t1_h3', '300') // airfilters
|
|
sessionStorage.setItem('t1_hr3', '45') // resetable
|
|
|
|
sessionStorage.setItem('t1_t0', '28') // led brd top now
|
|
sessionStorage.setItem('t1_tm0', '62') // max
|
|
sessionStorage.setItem('t1_tmr0', '62') // resetable
|
|
sessionStorage.setItem('t1_t3', '26') // led brd bottom now
|
|
sessionStorage.setItem('t1_tm3', '64') // max
|
|
sessionStorage.setItem('t1_tmr3', '64') // resetable
|
|
sessionStorage.setItem('t1_t2', '25') // base now
|
|
sessionStorage.setItem('t1_tm2', '56') // max
|
|
sessionStorage.setItem('t1_tmr2', '56') // resetable
|
|
sessionStorage.setItem('t1_lt0', '22.3') // red amber now
|
|
sessionStorage.setItem('t1_ltm0', '53') // max
|
|
sessionStorage.setItem('t1_ltmr0', '53') // resetable
|
|
sessionStorage.setItem('t1_lt1', '22.9') // green yellow now
|
|
sessionStorage.setItem('t1_ltm1', '67') // max
|
|
sessionStorage.setItem('t1_ltmr1', '67') // resetable
|
|
sessionStorage.setItem('t1_lt2', '23.1') // blue now
|
|
sessionStorage.setItem('t1_ltm2', '65') // max
|
|
sessionStorage.setItem('t1_ltmr2', '65') // resetable
|
|
}
|
|
}
|
|
|
|
function populateUIFromSessionStorage() {
|
|
for (var i = 0; i < sessionStorage.length; i++) {
|
|
var valueToLoad = '';
|
|
switch (sessionStorage.key(i)) {
|
|
case 't1_dmxp':
|
|
var valueToLoad = "Mode " + (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
|
|
break;
|
|
case 't1_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 't1_bldmc':
|
|
case 't1_blptm':
|
|
case 't1_ee2d':
|
|
case 't1_them':
|
|
case 't1_pr':
|
|
case 't1_tr':
|
|
case 't1_ptf':
|
|
case 't1_pte':
|
|
case 't1_ccalm':
|
|
case 't1_chrwh':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "off"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "on"
|
|
}
|
|
break;
|
|
case 't1_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 't1_dint':
|
|
case 't1_mics':
|
|
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
|
|
break;
|
|
|
|
case 't1_dsd':
|
|
case 't1_dtl':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "off"
|
|
} else {
|
|
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + " min")
|
|
}
|
|
break;
|
|
case 't1_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 't1_fanm':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "auto"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "high"
|
|
}
|
|
break;
|
|
case 't1_tmpu':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "°C"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "°F"
|
|
}
|
|
break;
|
|
case 't1_ptm':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "speed"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "time"
|
|
}
|
|
break;
|
|
case 't1_cmixm':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "rgb"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "cmy"
|
|
}
|
|
break;
|
|
case 't1_thefs':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "off"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "750 W"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
|
|
var valueToLoad = "1000 W"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 3) {
|
|
var valueToLoad = "1200 W"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 4) {
|
|
var valueToLoad = "2000 W"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 5) {
|
|
var valueToLoad = "2500 W"
|
|
}
|
|
break;
|
|
case 't1_cdimc':
|
|
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
|
|
var valueToLoad = "linear"
|
|
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
|
|
var valueToLoad = "square law"
|
|
}
|
|
break;
|
|
case 't1_frq':
|
|
var valueToLoad = t1_frq_s(sessionStorage.getItem('t1_frq'))
|
|
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^="t1_tu_v"]').html(sessionStorage.getItem('t1_tu'))
|
|
}
|
|
}
|
|
|
|
// calc proper frequency to be displayed
|
|
function t1_frq_s(t1_frq) {
|
|
var f = 360000000000;
|
|
var k = (0x700) - (t1_frq & 0xfff);
|
|
var arr = 465 + ((k >> 8) & 0x0f);
|
|
var x = k & 0xff;
|
|
f = f * (1 << (t1_frq >> 12)) / (arr * (256 - x) + (arr + 1) * (x));
|
|
return Math.floor(f / 10000) + '.' + ('0000' + Math.floor(f % 10000)).slice(-4)
|
|
}
|