move to src for deploy

This commit is contained in:
2025-04-12 21:50:58 +02:00
parent c7fbc0f50c
commit 238dec4050
25 changed files with 13 additions and 0 deletions

749
src/iforte/base.js Normal file
View File

@@ -0,0 +1,749 @@
// 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)
);
}

203
src/iforte/discovery.html Normal file
View File

@@ -0,0 +1,203 @@
<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>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="./index.html"><img src="../files/robe_logo_white.svg"></a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav mr-auto">
<li class="nav-item"><a class="nav-link" href="./index.html">Status</a></li>
<li class="nav-item"><a class="nav-link" href="./personality.html">Personality</a></li>
<li class="nav-item"><a class="nav-link" href="./logs.html">Logs</a></li>
<li class="nav-item"><a class="nav-link" href="./sensors.html">RAINS logs</a></li>
<li class="nav-item active"><a class="nav-link" href="./discovery.html">Discovery</a></li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" id="idnt"><img class="rdmi" src="../files/identify.svg"></a></li>
</ul>
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container-fluid in">
<h1>Discovery</h1>
<div class="row" id="boxes">
<div class="col-12">
<div class="clearfix">
<div class="float-left pt02">
<input type="checkbox" id="w-ot">
<label for="w-ot" class="pl04">Move devices with warning to top</label>
</div>
<button class="btn btn-primary float-right" id="scan">Discover (1)</button>
</div>
<h2>Columns selection (max. 7 items)</h2>
<div class="clearfix" id="cols">
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-0">
<label for="cchb-0">DMX address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-1">
<label for="cchb-1">DMX preset</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-2">
<label for="cchb-2">RDM UID</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-3">
<label for="cchb-3">IP address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-4" >
<label for="cchb-4">Head temperature [°C]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-5" >
<label for="cchb-5">Relative humidity [%]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-6">
<label for="cchb-6">RAINS (max wet)</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-7" >
<label for="cchb-7">Last pressure test</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" checked="" id="cchb-8">
<label for="cchb-8">Device status</label>
</div>
</div>
<div class="table-responsive">
<table class="table mt-2" id="d-t">
<thead id="dmax">
<tr>
<th>
<i class="as"></i>
<i class="ab"></i> Device
</th>
<th>
<i></i>
<i class="ab"></i> DMX address
</th>
<th>
<i></i>
<i class="ab"></i> DMX preset
</th>
<th>
<i></i>
<i class="ab"></i> RDM UID
</th>
<th>
<i></i>
<i class="ab"></i> IP address
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Head temperature [°C]
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Relative humidity [%]
</th>
<th>
<i></i>
<i class="ab"></i> RAINS (max wet)
</th>
<th style="display: none;">
<i></i>
<i class="ab"></i> Last pressure test
</th>
<th>
<i></i>
<i class="ab"></i> Device status
</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<tr>
<td>iForte</td>
<td id="iforte_dmxa_v">1</td>
<td id="iforte_dmxp_v">Mode 1</td>
<td id="iforte_rdmu_v">52:53:01:2c:00:0e</td>
<td><a href="../iforte/index.html">2.247.136.14</a></td>
<td style="display: none;">47</td>
<td style="display: none;">14.0</td>
<td>
<div class="rains sl">
<div id="iforte_rains_bar_max" style="width:63%"></div>
</div>
</td>
<td style="display: none;">2.3.2023 16:19:02 - OK</td>
<td id="iforte_devs_v">active</td>
</tr>
<tr>
<td>Robin T1 Wash</td>
<td>1</td>
<td>Mode 3</td>
<td>52:53:00:00:00:00</td>
<td><a href="../t1/index.html">2.246.16.203</a></td>
<td style="display: none;">47</td>
<td style="display: none;">-</td>
<td>-</td>
<td style="display: none;">-</td>
<td>active</td>
</tr>
</tbody>
<tbody class="rd" id="scd"></tbody>
</table>
</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>
$('.cchb').on('change', function() {
var cbid = $(this).attr('id')
var colid = cbid.charAt(cbid.length - 1)
colid++
// handle visibility of columns
$('#d-t tr').each(function() {
$(this).find('td:eq(' + colid + ')').toggle();
});
$('#d-t th:eq(' + colid + ')').toggle();
// only allows 7 columns at any time
var checkedCount = $('.cchb:checked').length;
if (checkedCount === 7) {
$('.cchb:not(:checked)').prop('disabled', true);
} else {
$('.cchb').prop('disabled', false);
}
})
</script>
</body>
</html>

BIN
src/iforte/iforte.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

426
src/iforte/index.html Normal file
View File

@@ -0,0 +1,426 @@
<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>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="./index.html"
><img src="../files/robe_logo_white.svg" /></a
><button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbar"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="./index.html">Status</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./personality.html">Personality</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./logs.html">Logs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./sensors.html">RAINS logs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./discovery.html">Discovery</a>
</li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item">
<a class="nav-link" id="idnt"
><img class="rdmi" src="../files/identify.svg"
/></a>
</li>
</ul>
</div>
</div>
</nav>
<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>
</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 id="iforte_tu_v"></div>
/
<div id="iforte_tm0_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr0_v"></div>
°
<div id="iforte_tu_v"></div>
</li>
<li>
<div id="iforte_t3_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm3_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr3_v"></div>
°
<div id="iforte_tu_v"></div>
</li>
<li>
<div id="iforte_t1_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm1_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr1_v"></div>
°
<div id="iforte_tu_v"></div>
</li>
<li>
<div id="iforte_t2_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tm2_v"></div>
°
<div id="iforte_tu_v"></div>
/
<div id="iforte_tmr2_v"></div>
°
<div id="iforte_tu_v"></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"
id="esm"
>
Enter standby mode
</button>
<div>Current RAINS status</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div class="rains">
<div id="iforte_rains_bar_current" style="width: 50%"></div>
</div>
<div>MAX WET/resettable</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div class="rains">
<div id="iforte_rains_bar_max" style="width: 50%"></div>
</div>
<button class="btn btn-primary btn-block" id="maxwetreset">MAX WET reset</button>
<p>
<small id="iforte_demo_rains_last_reset"></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;
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("iforte_dmxa","DMX address","Please put DMX address from 1 to 512");
h += c_opt("iforte_dmxp", "DMX preset", [2], "Mode ", 0, 1, "");
h += c_opt("iforte_dmxi","DMX input",["wired", "wireless", "wireless XLR out"],"",0,1,"Can not set wireless input now!");
h += c_txt("iforte_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");
}
// pers set
$("#m-b").html(h);
copy_form_values(1);
$("#cfg-modal").modal();
$(".sb").bind("click", function () {
loader(1);
var par = ["iforte_dmxa","iforte_dmxp","iforte_dmxi","iforte_rdmn"];
do_ajax("/set_dmx", serialize_parameters(par));
});
// hours reset
$(".rh").bind("click", function () {
loader(1);
do_ajax('/reset_hours', "rh=" + this.value)
});
// max temp reset
$(".rt").bind("click", function () {
loader(1);
do_ajax('/reset_temps', "rt=" + this.value)
});
// wireless unlink
$(".lwu").bind("click", function () {
loader(1);
close_modal();
loader(0);
});
}
// standby mode
$("#esm").on("click", function () {
toggleStandbyMode();
});
// max wet reset
$("#maxwetreset").on("click", function () {
do_ajax('/max_wet', "0");
});
</script>
</body>
</html>

541
src/iforte/logs.html Normal file
View File

@@ -0,0 +1,541 @@
<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>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="./index.html"><img src="../files/robe_logo_white.svg"></a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav mr-auto">
<li class="nav-item"><a class="nav-link" href="./index.html">Status</a></li>
<li class="nav-item"><a class="nav-link" href="./personality.html">Personality</a></li>
<li class="nav-item active"><a class="nav-link" href="./logs.html">Logs</a></li>
<li class="nav-item"><a class="nav-link" href="./sensors.html">RAINS logs</a></li>
<li class="nav-item"><a class="nav-link" href="./discovery.html">Discovery</a></li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" id="idnt"><img class="rdmi" src="../files/identify.svg"></a></li>
</ul>
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container-fluid in">
<h1>Device logs</h1>
<div class="row" id="boxes">
<div class="col-12 box-c">
<h2 id="sta_err"><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse"
data-target="#lfb"><i class="blue"></i></button> Logs filter<a class="cfg"
onclick="cfgm();"><img src="../files/settings.svg"></a></h2>
<div class="box collapse clearfix" id="lfb">
<small>Logs filters not functionnal on this simulator.</small>
<br>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_me">
<i></i>
</button> Mechanical errors <div class="fall">
<input type="checkbox" id="f_me_p"> all must pass
</div>
</h3>
<div class="collapse" id="f_me">
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_0" value="0">
<label class="form-check-label" for="fe_0">Pan error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_1" value="1">
<label class="form-check-label" for="fe_1">Tilt error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_2" value="2">
<label class="form-check-label" for="fe_2">Gobo Carousel 1 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_3" value="3">
<label class="form-check-label" for="fe_3">Gobo Rotation 1 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_4" value="4">
<label class="form-check-label" for="fe_4">Gobo Carousel 2 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_5" value="5">
<label class="form-check-label" for="fe_5">Gobo Rotation 2 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_6" value="6">
<label class="form-check-label" for="fe_6">Frost/Prism error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_7" value="7">
<label class="form-check-label" for="fe_7">Focus error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_8" value="8">
<label class="form-check-label" for="fe_8">Zoom error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_9" value="9">
<label class="form-check-label" for="fe_9">Iris error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_10" value="10">
<label class="form-check-label" for="fe_10">Fr. Shutters Rot. error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_11" value="11">
<label class="form-check-label" for="fe_11">Fr. Shutter 1 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_12" value="12">
<label class="form-check-label" for="fe_12">Fr. Shutter 2 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_13" value="13">
<label class="form-check-label" for="fe_13">Fr. Shutter 3 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_14" value="14">
<label class="form-check-label" for="fe_14">Fr. Shutter 4 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_15" value="15">
<label class="form-check-label" for="fe_15">Effect Wheel error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_16" value="16">
<label class="form-check-label" for="fe_16">Color 1 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_17" value="17">
<label class="form-check-label" for="fe_17">Color 2 error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_18" value="18">
<label class="form-check-label" for="fe_18">Prism Rot. error</label>
</div>
</div>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_se">
<i></i>
</button> System errors <div class="fall">
<input type="checkbox" id="f_se_p"> all must pass
</div>
</h3>
<div class="collapse" id="f_se">
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_19" value="0">
<label class="form-check-label" for="fe_19">Fans failure</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_20" value="1">
<label class="form-check-label" for="fe_20">Too much humidity in device</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_21" value="2">
<label class="form-check-label" for="fe_21">Vcc 5v failure</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_22" value="3">
<label class="form-check-label" for="fe_22">Overheated</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_23" value="6">
<label class="form-check-label" for="fe_23">Temperature sensor error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_24" value="7">
<label class="form-check-label" for="fe_24">Vcc 48v failure</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_25" value="8">
<label class="form-check-label" for="fe_25">Eeprom error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_26" value="9">
<label class="form-check-label" for="fe_26">Recharge the battery</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_27" value="10">
<label class="form-check-label" for="fe_27">Battery faulty. replace it</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_28" value="11">
<label class="form-check-label" for="fe_28">Pan/tilt EMS cal. error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_29" value="12">
<label class="form-check-label" for="fe_29">Pan/tilt EMS error</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_30" value="13">
<label class="form-check-label" for="fe_30">Internal error 1</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_31" value="14">
<label class="form-check-label" for="fe_31">Internal error 2</label>
</div>
</div>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_sst">
<i></i>
</button> Statuses <div class="fall">
<input type="checkbox" id="f_sst_p"> all must pass
</div>
</h3>
<div class="collapse" id="f_sst">
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_32" value="0">
<label class="form-check-label" for="fe_32">Power on</label>
</div>
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="fe_33" value="3">
<label class="form-check-label" for="fe_33">Power off</label>
</div>
</div>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_te">
<i></i>
</button> Temperatures <div class="fall">
<input type="checkbox" id="f_te_p"> all must pass
</div>
</h3>
<div class="collapse" id="f_te">
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl3" for="fts3">PSU</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts3">
<option value="0">-</option>
<option value="1">&lt;=</option>
<option value="2">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv3">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv3">° <span class="tu">C</span>
</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl0" for="fts0">LEDs</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts0">
<option value="0">-</option>
<option value="1">&lt;=</option>
<option value="2">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv0">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv0">° <span class="tu">C</span>
</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl1" for="fts1">Driver</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts1">
<option value="0">-</option>
<option value="1">&lt;=</option>
<option value="2">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv1">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv1">° <span class="tu">C</span>
</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl2" for="fts2">Base</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts2">
<option value="0">-</option>
<option value="1">&lt;=</option>
<option value="2">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv2">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv2">° <span class="tu">C</span>
</label>
</div>
</div>
</div>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_dt">
<i></i>
</button> Start date/time
</h3>
<div class="collapse" id="f_dt">
<div class="form-row">
<div class="form-group col-auto">
<label for="fsd" class="col-form-label">Date</label>
</div>
<div class="form-group col-auto">
<input type="date" class="form-control" id="fsd" step="1">
</div>
<div class="form-group col-auto">
<label for="fst" class="col-form-label">Time</label>
</div>
<div class="form-group col-auto">
<input type="time" class="form-control" id="fst" step="1">
</div>
</div>
</div>
<h3>
<button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#f_cfg">
<i></i>
</button> Sorting,filter pass
</h3>
<div class="collapse" id="f_cfg">
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" for="fso">Sorting</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fso">
<option value="0">descending</option>
<option value="1">ascending</option>
</select>
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="fpas">Filter pass</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fpas">
<option value="0">single groups</option>
<option value="1">all groups</option>
</select>
</div>
</div>
</div>
<div id="ferr"></div>
<div class="float-right">
<button type="button" class="btn btn-primary mr06" id="fap" onclick="alert('Logs filters not functionnal on this simulator.')">Apply filter</button>
<button type="button" class="btn btn-primary" id="fcl" onclick="alert('Logs filters not functionnal on this simulator.')">Clear filter</button>
</div>
</div>
</div>
</div>
<div class="row" id="logs">
<div class="col-md-6 box-c log">
<h2>Log 2.3.2023 15:57:55</h2>
<div class="box">
<div class="lse">
<h3>Statuses</h3>Power On
</div>
<div>
<h3>Temperatures</h3>
<ul class="group">
<li class="dn">LEDs</li>
<li class="dn">Driver</li>
<li>Base</li>
<li class="dn">PSU</li>
</ul>
<ul class="group vals">
<li class="dn">-32°C</li>
<li class="dn">-32°C</li>
<li class="">37°C</li>
<li class="dn">-32°C</li>
</ul>
<h3>Display orientation</h3>Side Botom
</div>
</div>
</div>
<div class="col-md-6 box-c log">
<h2>Log 2.3.2023 15:37:22</h2>
<div class="box">
<div class="lse">
<h3>Statuses</h3>Power Off
</div>
<div>
<h3>Temperatures</h3>
<ul class="group">
<li>LEDs</li>
<li>Driver</li>
<li>Base</li>
<li>PSU</li>
</ul>
<ul class="group vals">
<li class="">23°C</li>
<li class="">35°C</li>
<li class="">34°C</li>
<li class="">33°C</li>
</ul>
<h3>Display orientation</h3>Side Botom
</div>
</div>
</div>
<div class="col-md-6 box-c log">
<h2>Log 2.3.2023 13:04:27</h2>
<div class="box">
<div>
<h3>Temperatures</h3>
<ul class="group">
<li class="dn">LEDs</li>
<li class="dn">Driver</li>
<li>Base</li>
<li class="dn">PSU</li>
</ul>
<ul class="group vals">
<li class="dn">-32°C</li>
<li class="dn">-32°C</li>
<li class="">21°C</li>
<li class="dn">-32°C</li>
</ul>
<h3>Display orientation</h3>Side Botom
</div>
</div>
</div>
<div class="col-md-6 box-c log">
<h2>Log 2.3.2023 13:04:25</h2>
<div class="box">
<div class="lse">
<h3>Statuses</h3>Power On
</div>
<div>
<h3>Temperatures</h3>
<ul class="group">
<li class="dn">LEDs</li>
<li class="dn">Driver</li>
<li>Base</li>
<li class="dn">PSU</li>
</ul>
<ul class="group vals">
<li class="dn">-32°C</li>
<li class="dn">-32°C</li>
<li class="">21°C</li>
<li class="dn">-32°C</li>
</ul>
</div>
</div>
</div>
</div>
<div class="text-center" id="nxtl">
<button class="btn btn-primary nlb">
<strong>+</strong>
</button>
</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>
// CREATES MODAL FOR LOG TOOLS
function cfgm() {
$('#m-t').html('Logs tools');
$('#m-f').empty();
$('.sb').unbind();
var tl = c_btn('Download log file', 0, ' dlog');
tl += c_btn('Start DMX sniff', 0, ' ddmx');
$('#m-b').html(tl);
$('#cfg-modal').modal();
$('.dlog').bind('click', function () {
close_modal()
});
$('.ddmx').bind('click', function () {
close_modal()
})
}
function lfix(l) {
return l.charAt(0).toUpperCase() + l.slice(1).toLowerCase().replace('ems', 'EMS')
}
function c_chb(id, t, v, ch) {
var html =
'<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input" id="' + id +
'" value="' + v + '"' + ch + '>';
html += '<label class="form-check-label" for="' + id + '">' + t + '</label></div>';
return html
}
function c_tit(id, t, e, c, p) {
var html =
'<h3><button class="btn btn-primary btn-pm" type="button" data-toggle="collapse" data-target="#' + id +
'"><i></i></button>';
html += ' ' + t;
if (p) html += '<div class="fall"><input type="checkbox" id="' + id + '_p"> all must pass</div>';
html += '</h3>';
html += '<div class="collapse' + c + '" id="' + id + '">';
if (e) html += '</div>';
return html
}
function c_ftmp(i, t) {
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">&lt;=</option><option value="2">&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 +
'">&deg;<span class="tu" t1_tu_v"></span></label></div>';
html += '</div>';
return html
}
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_sil(id, t, o) {
var html = '<div class="form-group col-auto"><label class="col-form-label" for="' + id + '">' + t +
'</label></div>';
html += '<div class="form-group col-auto"><select class="form-control" id="' + id + '">';
for (i = 0; i < o.length; i++) {
html += '<option value="' + i + '">' + o[i] + '</option>'
}
html += '</select></div>';
return html
}
</script>
</body>
</html>

636
src/iforte/personality.html Normal file
View File

@@ -0,0 +1,636 @@
<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>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="./index.html"
><img src="../files/robe_logo_white.svg" /></a
><button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbar"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="./index.html">Status</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="./personality.html">Personality</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./logs.html">Logs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./sensors.html">RAINS logs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./discovery.html">Discovery</a>
</li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item">
<a class="nav-link" id="idnt"
><img class="rdmi" src="../files/identify.svg"
/></a>
</li>
</ul>
</div>
</div>
</nav>
<div
class="fixed-top text-center device-label"
id="pth"
></div>
<div class="container-fluid in">
<h1>Personality</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>RDM label</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_dmxa_v"></div>
</li>
<li>
<div id="iforte_dmxp_v"></div>
</li>
<li>
<div id="iforte_dmxi_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>
Ethernet settings
<a class="cfg" onclick="open_modal(1);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Ethernet mode</li>
<li>Ethernet to DMX</li>
<li>ArtNet universe</li>
<li>MANet I/II universe</li>
<li>MaNet session ID</li>
<li>sACN universe</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_emod_v"></div>
</li>
<li>
<div id="iforte_ee2d_v"></div>
</li>
<li>
<div id="iforte_eanu_v"></div>
</li>
<li>
<div id="iforte_emau_v"></div>
</li>
<li>
<div id="iforte_emas_v"></div>
</li>
<li>
<div id="iforte_esau_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Pan/Tilt settings
<a class="cfg" onclick="open_modal(2);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Pan reverse</li>
<li>Tilt reverse</li>
<li>Pan/Tilt feedback</li>
<li>Pan/Tilt mode</li>
<li>Pan/Tilt EMS</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_pr_v"></div>
</li>
<li>
<div id="iforte_tr_v"></div>
</li>
<li>
<div id="iforte_ptf_v"></div>
</li>
<li>
<div id="iforte_ptm_v"></div>
</li>
<li>
<div id="iforte_pte_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Blackout settings
<a class="cfg" onclick="open_modal(3);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Blackout DMC</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_bldmc_v"></div>
</li>
</ul>
<h3>Active blackout while</h3>
<ul class="group">
<li>Pan/Tilt moving</li>
<li>Gobo wheel moving</li>
<li>Color wheel moving</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_blptm_v"></div>
</li>
<li>
<div id="iforte_blgwm_v"></div>
</li>
<li>
<div id="iforte_blprm_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Screen settings
<a class="cfg" onclick="open_modal(4);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Display intensity</li>
<li>Screensaver delay</li>
<li>Touchscreen lock</li>
<li>Display orientation</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_dint_v"></div>
</li>
<li>
<div id="iforte_dsd_v"></div>
</li>
<li>
<div id="iforte_dtl_v"></div>
</li>
<li>
<div id="iforte_dor_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Color settings
<a class="cfg" onclick="open_modal(7);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Dimmer curve</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_cdimc_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Date &amp; time settings
<a class="cfg" onclick="open_modal(5);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Date</li>
<li>Time</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_dtd_v"></div>
.
<div id="iforte_dtmo_v"></div>
.
<div id="iforte_dty_v"></div>
</li>
<li>
<div id="iforte_dth_v"></div>
:
<div id="iforte_dtmi_v"></div>
:
<div id="iforte_dts_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>
Other settings
<a class="cfg" onclick="open_modal(6);">
<img src="../files/settings.svg" />
</a>
</h2>
<div class="box">
<ul class="group">
<li>Follow spot mode</li>
<li>LEDs output frequency (Hz)</li>
<li>Fan mode</li>
<li>Gobo indexing</li>
<li>Temperature unit</li>
<li>Display buttons</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="iforte_fsmo_v"></div>
</li>
<li>
<div id="iforte_frq_v"></div>
</li>
<li>
<div id="iforte_fanm_v"></div>
</li>
<li>
<div id="iforte_gind_v"></div>
</li>
<li>
<div id="iforte_tmpu_v"></div>
</li>
<li>
<div id="iforte_btns_v"></div>
</li>
</ul>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c" style="display: block">
<h2>Pressure test</h2>
<div class="box prst text-center">
<span id="pt-l1"></span><span id="pt-l2"></span><span id="pt-l3"></span><button class="btn btn-success btn-block"
id="pt_b" onclick="pressureTest()">
Start test
</button>
</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",
"Ethernet settings",
"Pan/Tilt settings",
"Blackout settings",
"Screen settings",
"Date & time settings",
"Other settings",
"Color settings",
];
var addrs = [
"set_dmx",
"eth_s",
"pt_s",
"bl_s",
"dis_s",
"ldt_s",
"oth_s",
"col_s",
];
var params = [
["iforte_dmxa", "iforte_dmxp", "iforte_dmxi", "iforte_rdmn"],
["iforte_emod", "iforte_ee2d", "iforte_eanu", "iforte_emau", "iforte_emas", "iforte_esau"],
["iforte_pr", "iforte_tr", "iforte_ptf", "iforte_ptm", "iforte_pte"],
["iforte_bldmc", "iforte_blptm", "iforte_blprm", "iforte_blgwm", "iforte_bltim"],
["iforte_dint", "iforte_dsd", "iforte_dtl", "iforte_dor"],
["iforte_dtd", "iforte_dtmo", "iforte_dty", "iforte_dth", "iforte_dtmi", "iforte_dts"],
[
"iforte_fanm",
"iforte_tmpu",
"iforte_cpm",
"iforte_fannl",
"iforte_fsmo",
"iforte_btns",
"iforte_freq",
"iforte_freqa",
"iforte_gind",
"iforte_gwhm",
],
[
"iforte_cdimc"
]
];
var frq = 0;
function open_modal(i) {
a_m = i;
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>'
);
var off_on_l = ["off", "on"];
var h = "";
if (a_m == 0) {
h += c_txt(
"iforte_dmxa",
"DMX address",
"Please put DMX address from 1 to 512"
);
h += c_opt("iforte_dmxp", "DMX preset", [2], "Mode ", 0, 1, "");
h += c_opt(
"iforte_dmxi",
"DMX input",
["wired", "wireless", "wireless XLR out"],
"",
0,
1,
"Can not set wireless input now!"
);
h += c_txt(
"iforte_rdmn",
"RDM label",
"Please insert label,max 32 characters"
);
} else if (a_m == 1) {
h += c_rad(
"iforte_emod",
"Ethernet mode",
["disable", "ArtNet", "gMA1", "gMA2", "sACN"],
"",
""
);
h += c_rad("iforte_ee2d", "Ethernet to DMX", off_on_l, "", "");
h += c_txt(
"iforte_eanu",
"ArtNet universe",
"Please put ArtNet universe from 0 to 255"
);
h += c_txt(
"iforte_emau",
"MANet I/II universe",
"Please put MANet I / II universe from 1 to 256 (64 for MANet I)"
);
h += c_txt(
"iforte_emas",
"MANet session ID",
"Please put MANet session ID from 1 to 32"
);
h += c_txt(
"iforte_esau",
"sACN universe",
"Please put sACN universe from 1 to 32000"
);
} else if (a_m == 2) {
h += c_rad("iforte_pr", "Pan reverse", off_on_l, "", "");
h += c_rad("iforte_tr", "Tilt reverse", off_on_l, "", "");
h += c_rad("iforte_ptf", "Pan / Tilt feedback", off_on_l, "", "");
h += c_rad("iforte_ptm", "Pan / Tilt Mode", ["speed", "time"], "", "");
h += c_rad("iforte_pte", "Pan / Tilt EMS", off_on_l, "", "");
} else if (a_m == 3) {
h += c_rad("iforte_bldmc", "Blackout DMC", off_on_l, "", "");
h += "<h3>Active blackout while</h3>";
h += c_rad("iforte_blptm", "Pan/Tilt moving", off_on_l, "", "");
h += c_rad("iforte_blgwm", "Gobo wheel moving", off_on_l, "", "");
h += c_rad("iforte_blprm", "Color wheel moving", off_on_l, "", "");
} else if (a_m == 4) {
h += c_opt("iforte_dint", "Display intensity", [10], "", 0, 1, "");
var dsd_dtl_l = [
"off",
"1 min",
"2 min",
"3 min",
"4 min",
"5 min",
"6 min",
"7 min",
"8 min",
"9 min",
"10 min",
];
h += c_opt("iforte_dsd", "Screensaver delay", dsd_dtl_l, "", 0, 0, "");
h += c_opt("iforte_dtl", "Touchscreen lock", dsd_dtl_l, "", 0, 0, "");
h += c_rad(
"iforte_dor",
"Display orientation",
["normal", "inverted", "auto"],
""
);
} else if (a_m == 5) {
h += '<div class="row">';
h += c_txt("iforte_dtd", "Day", "", "col-4");
h += c_txt("iforte_dtmo", "Month", "", "col-4");
h += c_txt("iforte_dty", "Year", "", "col-4");
h += c_txt("iforte_dth", "Hour", "", "col-4");
h += c_txt("iforte_dtmi", "Minute", "", "col-4");
h += c_txt("iforte_dts", "Second", "", "col-4");
h += "</div>";
h +=
'<button class="btn btn-primary btn-block uldt">Use local date & time</button>';
} else if (a_m == 6) {
h += c_opt(
"iforte_fsmo",
"Follow spot mode",
["off", "soft", "medium", "hard"],
"",
0,
0,
""
);
h += c_rad(
"iforte_frqs",
"LEDs output frequency (Hz)",
["300", "600", "1200", "2400"],
"",
""
);
h += '<div class="form-group">';
h +=
'<label for="iforte_frqa" class="col-form-label">LEDs frequency adjust</label>';
h += '<div class="row">';
h +=
'<div class="col-7 col-sm-8"><input type="range" min="0" max="1663" class="form-control" id="iforte_frqa"></div>';
h += '<div class="col-5 col-sm-4 mt06 text-right" id="iforte_frq_bv"></div>';
h += "</div>";
h += "</div>";
h += c_rad("iforte_fanm", "Fan mode", ["auto", "high", "quiet"], "", "");
h += '<div class="form-group" id="iforte_fannl_fg">';
h +=
'<label for="iforte_fannl" class="col-form-label">Fan noise level</label>';
h += '<div class="row">';
h +=
'<div class="col-9 col-sm-10"><input type="range" min="0" max="100" class="form-control" id="iforte_fannl"></div>';
h += '<div class="col-3 col-sm-2 mt06 text-right">100 %</div>';
h += "</div>";
h += "</div>";
h += c_opt(
"iforte_gind",
"Gobo indexing",
[
"max. speed & shortcut",
"follow spd. & dir.",
"max. spd. & follow dir.",
],
"",
0,
0,
""
);
h += c_rad("iforte_tmpu", "Temperature unit", ["&deg;C", "&deg;F"], "", "");
h += c_rad("iforte_btns", "Display buttons", off_on_l, "", "");
} else if (a_m == 7) {
h += c_rad("iforte_cdimc", "Dimmer curve", ["linear", "square law"], "", "");
}
$("#m-b").html(h);
$("#m-f").show();
copy_form_values(1);
$("#cfg-modal").modal();
$(".sb").bind("click", function () {
loader(1);
var p_add = "";
if (a_m == 6) {
p_add = "&frq=" + frq;
}
do_ajax(addrs[a_m], serialize_parameters(params[a_m]) + p_add, function (json) {
if (json) {
if (json["status"] == 0) {
copy_form_values(0);
if (a_m == 0) {
ptit(json["pt"]);
} else if (a_m == 6) {
if (json["iforte_fanm"] == "quiet") {
$("#iforte_themq").show();
} else {
$("#iforte_themq").hide();
}
$("#iforte_frqs_v").html(iforte_frq_s(frq));
}
close_modal();
}
show_errors(json["status"], params[a_m]);
loader(0);
}
});
});
if (a_m == 5) {
$(".uldt").bind("click", function () {
var date = new Date();
$("#iforte_dtd").val(date.getDate());
$("#iforte_dtmo").val(date.getMonth() + 1);
$("#iforte_dty").val(date.getFullYear());
$("#iforte_dth").val(("0" + date.getHours()).slice(-2));
$("#iforte_dtmi").val(("0" + date.getMinutes()).slice(-2));
$("#iforte_dts").val(("0" + date.getSeconds()).slice(-2));
});
} else if (a_m == 6) {
$("#iforte_fannl").on("input change", function () {
$(this)
.parent()
.next()
.html($(this).val() + "%");
});
$("#iforte_fannl").change();
$("input[name=iforte_fanm]").on("change", function () {
if ($("input[name=iforte_fanm]:checked").val() == 2) {
$("#iforte_fannl_fg").show();
} else {
$("#iforte_fannl_fg").hide();
}
});
$("input[name=iforte_fanm]").change();
$("input[name=iforte_frqs]")
.eq(frq >> 12)
.attr("checked", "checked");
$("#iforte_frqa").val(frq & 0xfff);
$("input[name=iforte_frqs]").on("change", function () {
frq = $("input[name=iforte_frqs]:checked").val() << 12;
frq |= 0x340;
$("#iforte_frqa").val(0x340);
$("#iforte_frq_bv").html(iforte_frq_s(frq) + " Hz");
});
$("#iforte_frqa").on("input change", function () {
frq &= 0xf000;
frq |= $("#iforte_frqa").val();
$("#iforte_frq_bv").html(iforte_frq_s(frq) + " Hz");
});
$("#iforte_frqa").change();
}
}
</script>
</body>
</html>

352
src/iforte/sensors.html Normal file
View File

@@ -0,0 +1,352 @@
<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>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="./index.html"><img src="../files/robe_logo_white.svg"></a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav mr-auto">
<li class="nav-item"><a class="nav-link" href="./index.html">Status</a></li>
<li class="nav-item"><a class="nav-link" href="./personality.html">Personality</a></li>
<li class="nav-item"><a class="nav-link" href="./logs.html">Logs</a></li>
<li class="nav-item active"><a class="nav-link" href="./sensors.html">RAINS logs</a></li>
<li class="nav-item"><a class="nav-link" href="./discovery.html">Discovery</a></li>
<li class="nav-item"><a class="nav-link" id="scfg">Settings</a></li>
<li class="nav-item"><a class="nav-link" id="idnt"><img class="rdmi" src="../files/identify.svg"></a></li>
</ul>
</div>
</div>
</nav>
<div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container-fluid in">
<h1>RAINS logs</h1>
<div class="row" id="boxes">
<div class="col-12">
<ul class="nav nav-tabs" id="tab">
<li class="nav-item">
<a class="nav-link active" id="nav-sl" href="#" onclick="switchTab(0)">Sensors</a>
</li>
<li class="nav-item">
<a class="nav-link" id="nav-pl" href="#" onclick="switchTab(1)">Pressure measurements</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="sl" role="tabpanel">
<div class="row">
<div class="col-12 box-c mt-2 mb-2">
<h2 id="sta_err">
<button class="btn btn-primary btn-pm collapsed" type="button" data-toggle="collapse" data-target="#lfb"><i class="blue"></i></button>Logs filter</h2>
<div class="box collapse clearfix" id="lfb">
<small>Logs filters not functionnal on this simulator.</small>
<br>
<div class="form-row">
<div class="form-group col-auto">
<label for="fsd" class="col-form-label">Start date</label>
</div>
<div class="form-group col-auto">
<input type="date" class="form-control" id="fsd" step="1">
</div>
<div class="form-group col-auto">
<label for="fed" class="col-form-label">End date</label>
</div>
<div class="form-group col-auto">
<input type="date" class="form-control" id="fed" step="1">
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl0" for="fts0">Temperature</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts0">
<option value="0">-</option>
<option value="1">=</option>
<option value="2">&lt;</option>
<option value="3">&gt;</option>
<option value="4">&lt;=</option>
<option value="5">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv0">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv0">°C</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl1" for="fts1">Relative humidity</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts1">
<option value="0">-</option>
<option value="1">=</option>
<option value="2">&lt;</option>
<option value="3">&gt;</option>
<option value="4">&lt;=</option>
<option value="5">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv1">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv1">%</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-auto">
<label class="col-form-label" id="tl2" for="fts2">Pressure</label>
</div>
<div class="form-group col-auto">
<select class="form-control" id="fts2">
<option value="0">-</option>
<option value="1">=</option>
<option value="2">&lt;</option>
<option value="3">&gt;</option>
<option value="4">&lt;=</option>
<option value="5">&gt;=</option>
</select>
</div>
<div class="form-group col-auto">
<input type="text" class="form-control" size="5" id="ftv2">
</div>
<div class="form-group col-auto">
<label class="col-form-label" for="ftv2">hPa</label>
</div>
</div>
<div class="float-right">
<button type="button" class="btn btn-primary mr06" id="fap" onclick="alert('Logs filters not functionnal on this simulator.')">Apply filter</button>
<button type="button" class="btn btn-primary" id="fcl" onclick="alert('Logs filters not functionnal on this simulator.')">Clear filter</button>
</div>
</div>
</div>
</div>
<div class="clearfix mt-2">
<button class="btn btn-primary float-right dslog">Download log file</button>
</div>
<div class="table-responsive">
<table class="table mt-2">
<thead>
<tr>
<th>Date / Time</th>
<th>Temperature [°C]</th>
<th>Relative humidity [%]</th>
<th>Pressure [hPa]</th>
</tr>
</thead>
<tbody id="sensd">
<tr>
<td data-target="2023-3-2">2.3.2023 16:20:47</td>
<td>47</td>
<td>14.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:18:50</td>
<td>46</td>
<td>14.5</td>
<td>1021</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:15:36</td>
<td>45</td>
<td>14.5</td>
<td>1022</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:12:52</td>
<td>44</td>
<td>15.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:10:52</td>
<td>43</td>
<td>15.0</td>
<td>1020</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:07:46</td>
<td>42</td>
<td>15.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:04:27</td>
<td>41</td>
<td>16.0</td>
<td>1014</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:02:01</td>
<td>40</td>
<td>16.5</td>
<td>1021</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:58:37</td>
<td>39</td>
<td>16.5</td>
<td>1014</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:57:47</td>
<td>38</td>
<td>16.5</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:30:07</td>
<td>42</td>
<td>15.0</td>
<td>1013</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 15:05:29</td>
<td>41</td>
<td>15.0</td>
<td>1013</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="tab-pane fade" id="pl" role="tabpanel">
<div class="clearfix mt-2">
<button class="btn btn-primary float-right dsprs">Download measurements file</button>
</div>
<div class="table-responsive">
<table class="table mt-2">
<thead>
<tr>
<th>Date / Time</th>
<th>Temperature [°C]</th>
<th>Relative humidity [%]</th>
<th>Pressure [hPa]</th>
<th>Pressure difference [hPa]</th>
<th>Duration [m:s]</th>
<th>Result</th>
</tr>
</thead>
<tbody id="presr">
<tr>
<td data-target="2023-3-2">2.3.2023 16:19:02</td>
<td>46</td>
<td>14.5</td>
<td>1021</td>
<td>7.50</td>
<td>01:22</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:15:33</td>
<td>44</td>
<td>14.5</td>
<td>1022</td>
<td>7.50</td>
<td>01:26</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:10:31</td>
<td>42</td>
<td>15.0</td>
<td>1021</td>
<td>7.47</td>
<td>01:28</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-3-2">2.3.2023 16:02:09</td>
<td>40</td>
<td>16.5</td>
<td>1022</td>
<td>7.50</td>
<td>01:36</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-2-8">8.2.2023 16:18:04</td>
<td>53</td>
<td>24.0</td>
<td>1035</td>
<td>7.41</td>
<td>02:14</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-2-8">8.2.2023 12:29:14</td>
<td>43</td>
<td>16.0</td>
<td>1037</td>
<td>7.56</td>
<td>01:22</td>
<td>OK</td>
</tr>
<tr>
<td data-target="2023-2-8">8.2.2023 11:50:29</td>
<td>29</td>
<td>17.5</td>
<td>1037</td>
<td>7.47</td>
<td>01:58</td>
<td>OK</td>
</tr>
</tbody>
</table>
</div>
</div>
</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>
function switchTab(id) {
console.log(id);
if (id == 0) {
// go to SL
$('#nav-pl').removeClass("active")
$('#nav-sl').addClass("active")
$('#pl').removeClass("show active")
$('#sl').addClass("show active")
} else {
// go to PL
$('#nav-sl').removeClass("active")
$('#nav-pl').addClass("active")
$('#sl').removeClass("show active")
$('#pl').addClass("show active")
}
}
</script>
</body>
</html>