$(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 = '
Password settings
';
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 = '
' + text +'
';
$('#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('hr0', '0')
} else if (p_data.rh == 1){
sessionStorage.setItem('hr1', '0')
} else if (p_data.rh == 3){
sessionStorage.setItem('hr3', sessionStorage.getItem('h3'))
}
break;
case '/reset_temps':
if (p_data.rt == 0) {
sessionStorage.setItem('tmr0', sessionStorage.getItem('t0'))
} else if (p_data.rt == 3){
sessionStorage.setItem('tmr3', sessionStorage.getItem('t3'))
} else if (p_data.rt == 2){
sessionStorage.setItem('tmr2', sessionStorage.getItem('t2'))
}
break;
case '/ltemps':
if (p_data.rlt == 0) {
sessionStorage.setItem('ltmr0', sessionStorage.getItem('lt0'))
} else if (p_data.rlt == 1){
sessionStorage.setItem('ltmr1', sessionStorage.getItem('lt1'))
} else if (p_data.rlt == 2){
sessionStorage.setItem('ltmr2', sessionStorage.getItem('lt2'))
}
break;
default:
for (const [key, value] of Object.entries(p_data)) {
sessionStorage.setItem(key, value)
if (key == 'tmpu') {
if (value == 0) {
sessionStorage.setItem('tu', 'C')
} else if (value == 1) {
sessionStorage.setItem('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('
Wrong value!
');
}
});
}
}
// 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 = '
';
html += '';
html += '';
html += e.length > 0 ? '
' + e + '
' : '';
html += '
';
return html;
}
// returns btn field
function c_btn(text, btnvalue, btnclass) {
return '';
}
// returns select field
function c_opt(n,t,o,pl,vp,lp,e) {
var html = '
';
html += '';
html += '';
html += e.length > 0 ? '
' + e + '
' : '';
html += '
';
return html;
}
// returns radio field
function c_rad(n,t,r,e,c) {
var html = '
';
html += '';
for (i = 0; i < r.length; i++) {
html += '
';
html += '';
html += '';
html += '
';
}
html += e.length > 0 ? '
' + e + '
' : '';
html += '
';
return html;
}
// add leading zeros to single digit hours, minutes, etc...
function addLeadingZeros(num) {
return String(num).padStart(2, '0');
}
function initSessionStorage() {
var currentTime = new Date();
if (sessionStorage.getItem('dmxa') == null) {
/* CONSTANTS */
sessionStorage.setItem('ip', '2.246.16.203') // ip addr
sessionStorage.setItem('mac', '00:00:00:00:00:00') //
sessionStorage.setItem('rdmu', '52:53:00:00:00:00') //
/* VARIABLES */
sessionStorage.setItem('dmxa', '1') // dmx addr
sessionStorage.setItem('dmxp', '2') // dmx mode
sessionStorage.setItem('dmxi', '0') // input (wired0 wireless1 wirelessout2)
sessionStorage.setItem('rdmn', 'Robin T1 Wash') // rdm name
sessionStorage.setItem('bldmc', '0') // blackout dmc
sessionStorage.setItem('blptm', '0') // blackout pt
sessionStorage.setItem('dty', currentTime.getFullYear()) // date year
sessionStorage.setItem('dtmo', addLeadingZeros(currentTime.getMonth() + 1)) // date month
sessionStorage.setItem('dtd', addLeadingZeros(currentTime.getDay())) // date day
sessionStorage.setItem('dth', addLeadingZeros(currentTime.getHours())) // time hour
sessionStorage.setItem('dtmi', addLeadingZeros(currentTime.getMinutes())) // time minute
sessionStorage.setItem('dts', addLeadingZeros(currentTime.getSeconds())) // time seconds
sessionStorage.setItem('emod', '0') //ethmode 0dis 1art 2gma1 3gma2 4sacn
sessionStorage.setItem('ee2d', '0') //eth to dmx
sessionStorage.setItem('eanu', '0') //art uni
sessionStorage.setItem('emau', '1') //ma uni
sessionStorage.setItem('emas', '1') //ma session
sessionStorage.setItem('esau', '1') //sacn uni
sessionStorage.setItem('dint', '9') //disp int
sessionStorage.setItem('dsd', '0') //disp screensave
sessionStorage.setItem('dtl', '0') //disp lock
sessionStorage.setItem('dor', '2') //disp orientation 0norm 1inv 2auto
sessionStorage.setItem('mics', '9') // mic sens
sessionStorage.setItem('them', '0') // theatre mode
sessionStorage.setItem('fannl', '0') // fan noise level percent
sessionStorage.setItem('frq', '4928') // cpulse frequency, use frq_s to calculate. 4928 = 600.0000Hz
sessionStorage.setItem('fanm', '0') // fanmode 0auto 1high
sessionStorage.setItem('tmpu', '0') //temp unit 0c 1f
sessionStorage.setItem('tu', 'C') // temp unit string
sessionStorage.setItem('pr', '0') // pan rev
sessionStorage.setItem('ptf', '1') // pt feedback
sessionStorage.setItem('pte', '1') // pt EMS
sessionStorage.setItem('tr', '0') // tilt rev
sessionStorage.setItem('ptm', '0') // pt mode 0speed 1time
sessionStorage.setItem('ccalm', '1') // col cal mode
sessionStorage.setItem('cmixm', '0') // color mix mode 0rgb 1cmy
sessionStorage.setItem('chrwh', '0') // chromatic white
sessionStorage.setItem('cdimc', '1') //dim curve 0linear 1squarelaw
sessionStorage.setItem('thefs', '0') //tungsten dimming 0off 1_750 2_1000 3_1200 4_2000 5_2500
sessionStorage.setItem('h0', '1206') // power on time
sessionStorage.setItem('hr0', '1206') // resetable
sessionStorage.setItem('h1', '213') // leds on time
sessionStorage.setItem('hr1', '213') // resetable
sessionStorage.setItem('h3', '300') // airfilters
sessionStorage.setItem('hr3', '45') // resetable
sessionStorage.setItem('t0', '28') // led brd top now
sessionStorage.setItem('tm0', '62') // max
sessionStorage.setItem('tmr0', '62') // resetable
sessionStorage.setItem('t3', '26') // led brd bottom now
sessionStorage.setItem('tm3', '64') // max
sessionStorage.setItem('tmr3', '64') // resetable
sessionStorage.setItem('t2', '25') // base now
sessionStorage.setItem('tm2', '56') // max
sessionStorage.setItem('tmr2', '56') // resetable
sessionStorage.setItem('lt0', '22.3') // red amber now
sessionStorage.setItem('ltm0', '53') // max
sessionStorage.setItem('ltmr0', '53') // resetable
sessionStorage.setItem('lt1', '22.9') // green yellow now
sessionStorage.setItem('ltm1', '67') // max
sessionStorage.setItem('ltmr1', '67') // resetable
sessionStorage.setItem('lt2', '23.1') // blue now
sessionStorage.setItem('ltm2', '65') // max
sessionStorage.setItem('ltmr2', '65') // resetable
}
}
function populateUIFromSessionStorage() {
for (var i = 0; i < sessionStorage.length; i++) {
var valueToLoad = '';
switch (sessionStorage.key(i)) {
case 'dmxp':
var valueToLoad = "Mode " + (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
break;
case '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 'bldmc':
case 'blptm':
case 'ee2d':
case 'them':
case 'pr':
case 'tr':
case 'ptf':
case 'pte':
case 'ccalm':
case 'chrwh':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "on"
}
break;
case 'emod':
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 'dint':
case 'mics':
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
break;
case 'dsd':
case 'dtl':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else {
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + " min")
}
break;
case '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 'fanm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "auto"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "high"
}
break;
case 'tmpu':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "°C"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "°F"
}
break;
case 'ptm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "speed"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "time"
}
break;
case 'cmixm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "rgb"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "cmy"
}
break;
case '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 'cdimc':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "linear"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "square law"
}
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^="tu_v"]').html(sessionStorage.getItem('tu'))
}
}