Files
reap-simulator-vincent/src/iforte/base.js

749 lines
24 KiB
JavaScript

// 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)
);
}