var is_pressure_test_ongoing = false; var rains_value = 0; $(document).ready(function () { initSessionStorage(); populateUIFromSessionStorage(); loopRainsSimulator(); // 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 = "

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 += "

Simulator

"; 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 loopRainsSimulator() { 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(() => { loopRainsSimulator(); }, 1000); } 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) { if (is_pressure_test_ongoing) { if (time == 0) { is_pressure_test_ongoing = false; $("#pt-l1").html(""); $("#pt-l3").html(""); var is_test_failing = sessionStorage.getItem("iforte_demo_pressure_test"); 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) ); $("#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 = "

" + text + "

"; $("#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('
Wrong value!
'); } }); } // 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 = '
'; html += '"; html += ''; html += e.length > 0 ? '
' + e + "
" : ""; html += "
"; return html; } function c_btn(t, v, c) { return ( '" ); } function c_opt(n, t, o, pl, vp, lp, e) { var html = '
'; html += '"; html += '"; html += e.length > 0 ? '
' + e + "
" : ""; html += "
"; return html; } function c_rad(name, legend, options, invalid_feedback_text, group_class) { var html = '
'; html += '' + legend + ""; for (i = 0; i < options.length; i++) { html += '
'; html += ''; html += '"; html += "
"; } html += invalid_feedback_text.length > 0 ? '
' + invalid_feedback_text + "
" : ""; html += "
"; return html; } var pre = ""; var dmxsnf = ""; function c_dt(n, t, e, c, it) { var html = '
'; html += '"; html += '
'; html += ''; html += e.length > 0 ? '
' + e + "
" : ""; html += "
"; return html; } function c_fsens(i, t, u) { var html = ""; html += '
'; html += '
"; html += '
"; html += '
'; html += '
"; html += "
"; 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) ); }