Compare commits

...

10 Commits

Author SHA1 Message Date
d9ae5f8c2b fix deploy 2025-04-12 22:00:12 +02:00
116458feda Merge branch 'main' of https://nas.vincent-bouquet.fr/gitea/Vincent/reap-simulator-vincent 2025-04-12 21:51:38 +02:00
238dec4050 move to src for deploy 2025-04-12 21:50:58 +02:00
Kwimbee
0b8f06099a fix DMX sniff on T1 2025-01-23 17:11:48 +01:00
Kwimbee
ea5680b473 indent fix + typo + dmx sniff fix 2025-01-23 13:26:14 +01:00
Vincent BOUQUET
c7fbc0f50c fix pressure test failing
pressure should not be raising if test fails
2023-12-16 15:48:40 +01:00
Kwimbee
4f427eda4e no return 2023-12-14 11:19:24 +01:00
Kwimbee
b306a982de discovery page now dynamic 2023-12-12 17:33:04 +01:00
Kwimbee
8800fc6c97 fix max wet bar init value 2023-12-12 17:32:51 +01:00
Vincent BOUQUET
1af18ea84c format index 2023-12-11 21:31:29 +01:00
26 changed files with 629 additions and 627 deletions

18
deploy.ps1 Normal file
View File

@@ -0,0 +1,18 @@
# Define variables
$localFolder = "./src/."
$remoteUser = "debian"
$remoteHost = "robe.vincent-bouquet.fr"
$remotePath = "/var/www/html/public/reap"
$port = 22 # Change this if your SSH server uses a different port
# Build the SCP commands
$sshCommand = "ssh -p ${port} ${remoteUser}@${remoteHost} 'mkdir -p `"${remotePath}`" && sudo rm -rf `"${remotePath}/*`"'"
$scpCommand = "scp -r -P ${port} `"${localFolder}`" ${remoteUser}@${remoteHost}:`"${remotePath}`""
# Execute SSH command to clean remote directory
Write-Host "Cleaning remote directory: $remotePath"
Invoke-Expression $sshCommand
# Execute the command
Write-Host "Executing: $scpCommand"
Invoke-Expression $scpCommand

View File

@@ -1,480 +0,0 @@
<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"
onclick="window.location = ('../index.html')"
></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">MAX WET reset</button>
<p>
<small id="iforte_wrt">last reset: 2.3.2023 16:19:57</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", pv(par), function (json) {
if (json) {
if (json["status"] == 0) {
copy_form_values(0);
if (a_m == 0) {
console.log(json["dmxf"]);
fill_values(json, ["dmxf"]);
}
ptit(json["pt"]);
close_modal();
}
show_errors(json["status"], par);
loader(0);
}
});
});
// hours reset
$(".rh ").bind("click ", function () {
loader(1);
do_ajax(
"/reset_hours",
{
index: $(this).attr("value"),
},
function (json) {
if (json) {
fill_values(json, ["hr0", "hr1", "hr2", "hr3"]);
}
loader(0);
}
);
});
// max temp reset
$(".rt").bind("click", function () {
loader(1);
do_ajax(
"/reset_temps",
{
index: $(this).attr("value"),
},
function (json) {
if (json) {
fill_values(json, ["tmr0", "tmr1", "tmr2"]);
}
loader(0);
}
);
});
// wireless unlink
$(".lwu").bind("click", function () {
loader(1);
close_modal();
loader(0);
});
}
// standby mode
$("#esm").on("click", function () {
toggleStandbyMode();
});
</script>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 314 B

After

Width:  |  Height:  |  Size: 314 B

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -1,11 +1,13 @@
// GLOBAL VARIABLES
var is_pressure_test_ongoing = false; var is_pressure_test_ongoing = false;
var rains_value = 0; var rains_value = 0;
var rains_loop_timing = 2000;
$(document).ready(function () { $(document).ready(function () {
initSessionStorage(); initSessionStorage();
populateUIFromSessionStorage(); populateUIFromSessionStorage();
loopRainsSimulator(); loop_rains_simulator();
// Sets the proper fixture name in the header and title // Sets the proper fixture name in the header and title
var fixturename = "Robin iForte - Simulated"; var fixturename = "Robin iForte - Simulated";
@@ -79,7 +81,7 @@ function toggleStandbyMode() {
populateUIFromSessionStorage(); populateUIFromSessionStorage();
} }
function loopRainsSimulator() { function loop_rains_simulator() {
var rains_tube_age = sessionStorage.getItem("iforte_demo_rains_age"); var rains_tube_age = sessionStorage.getItem("iforte_demo_rains_age");
var rains_lowest = sessionStorage.getItem("iforte_demo_rains_lowest"); var rains_lowest = sessionStorage.getItem("iforte_demo_rains_lowest");
@@ -95,17 +97,16 @@ function loopRainsSimulator() {
} }
$("#iforte_rains_bar_current").width(rains_value + "%"); $("#iforte_rains_bar_current").width(rains_value + "%");
$("#iforte_rains_bar_max").width(rains_lowest + "%");
if (rains_value < rains_lowest) { if (rains_value < rains_lowest) {
sessionStorage.setItem("iforte_demo_rains_lowest", rains_value); sessionStorage.setItem("iforte_demo_rains_lowest", rains_value);
$("#iforte_rains_bar_max").width(rains_value + "%"); $("#iforte_rains_bar_max").width(rains_value + "%");
} }
setTimeout(() => { setTimeout(() => {
loopRainsSimulator(); loop_rains_simulator();
}, 1000); }, rains_loop_timing);
} }
function pressureTest() { function pressureTest() {
@@ -130,14 +131,14 @@ function pressureTest() {
} }
function pressure_test_loop(time, temp, pressure) { function pressure_test_loop(time, temp, pressure) {
var is_test_failing = sessionStorage.getItem("iforte_demo_pressure_test");
if (is_pressure_test_ongoing) { if (is_pressure_test_ongoing) {
if (time == 0) { if (time == 0) {
is_pressure_test_ongoing = false; is_pressure_test_ongoing = false;
$("#pt-l1").html(""); $("#pt-l1").html("");
$("#pt-l3").html(""); $("#pt-l3").html("");
var is_test_failing = sessionStorage.getItem("iforte_demo_pressure_test");
if (is_test_failing == 1) { if (is_test_failing == 1) {
$('#pt-l2').html('FAIL') $('#pt-l2').html('FAIL')
$('#pt-l2').addClass('ptf') $('#pt-l2').addClass('ptf')
@@ -160,7 +161,12 @@ function pressure_test_loop(time, temp, pressure) {
"Remaining Time " + "Remaining Time " +
new Date(time * 1000).toISOString().substring(14, 19) 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"); $("#pt-l3").html(temp + " °C / delta " + pressure.toFixed(2) + " hPa");
}
setTimeout(() => { setTimeout(() => {
temp = temp + 1; temp = temp + 1;

View File

@@ -26,7 +26,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container-fluid in"> <div class="container-fluid in">
<h1>Discovery</h1> <h1>Discovery</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">
@@ -127,19 +127,19 @@
<tbody> <tbody>
<tr> <tr>
<td>iForte</td> <td>iForte</td>
<td>350</td> <td id="iforte_dmxa_v">1</td>
<td>Mode 1 (54 channels)</td> <td id="iforte_dmxp_v">Mode 1</td>
<td>52:53:01:2c:00:0e</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><a href="../iforte/index.html">2.247.136.14</a></td>
<td style="display: none;">47</td> <td style="display: none;">47</td>
<td style="display: none;">14.0</td> <td style="display: none;">14.0</td>
<td> <td>
<div class="rains sl"> <div class="rains sl">
<div style="width:63%"></div> <div id="iforte_rains_bar_max" style="width:63%"></div>
</div> </div>
</td> </td>
<td style="display: none;">2.3.2023 16:19:02 - OK</td> <td style="display: none;">2.3.2023 16:19:02 - OK</td>
<td>active</td> <td id="iforte_devs_v">active</td>
</tr> </tr>
<tr> <tr>
<td>Robin T1 Wash</td> <td>Robin T1 Wash</td>

View File

Before

Width:  |  Height:  |  Size: 26 KiB

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>

View File

@@ -26,7 +26,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container-fluid in"> <div class="container-fluid in">
<h1>Device logs</h1> <h1>Device logs</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">
@@ -362,7 +362,7 @@
<li class="">37°C</li> <li class="">37°C</li>
<li class="dn">-32°C</li> <li class="dn">-32°C</li>
</ul> </ul>
<h3>Display orientation</h3>Side Botom <h3>Display orientation</h3>Side Bottom
</div> </div>
</div> </div>
</div> </div>
@@ -386,7 +386,7 @@
<li class="">34°C</li> <li class="">34°C</li>
<li class="">33°C</li> <li class="">33°C</li>
</ul> </ul>
<h3>Display orientation</h3>Side Botom <h3>Display orientation</h3>Side Bottom
</div> </div>
</div> </div>
</div> </div>
@@ -407,7 +407,7 @@
<li class="">21°C</li> <li class="">21°C</li>
<li class="dn">-32°C</li> <li class="dn">-32°C</li>
</ul> </ul>
<h3>Display orientation</h3>Side Botom <h3>Display orientation</h3>Side Bottom
</div> </div>
</div> </div>
</div> </div>
@@ -459,19 +459,35 @@
</div> </div>
</div> </div>
<script> <script>
var is_sniffing = false;
// CREATES MODAL FOR LOG TOOLS // CREATES MODAL FOR LOG TOOLS
function cfgm() { function cfgm() {
$('#m-t').html('Logs tools'); $('#m-t').html('Logs tools');
$('#m-f').empty(); $('#m-f').empty();
$('.sb').unbind(); $('.sb').unbind();
var tl = c_btn('Download log file', 0, ' dlog'); var tl = c_btn('Download log file', 0, ' dlog');
if (!is_sniffing) {
tl += c_btn('Start DMX sniff', 0, ' ddmx'); tl += c_btn('Start DMX sniff', 0, ' ddmx');
} else {
tl += c_btn('Stop DMX sniff', 0, ' ddmx');
}
$('#m-b').html(tl); $('#m-b').html(tl);
$('#cfg-modal').modal(); $('#cfg-modal').modal();
$('.dlog').bind('click', function () { $('.dlog').bind('click', function () {
// download logs
close_modal() close_modal()
}); });
$('.ddmx').bind('click', function () { $('.ddmx').bind('click', function () {
// start sniff
if (is_sniffing) {
$('.ddmx').html('Start DMX sniff');
is_sniffing = false;
} else {
$('.ddmx').html('Stop DMX sniff');
is_sniffing = true;
}
close_modal() close_modal()
}) })
} }

View File

@@ -55,7 +55,7 @@
<div <div
class="fixed-top text-center device-label" class="fixed-top text-center device-label"
id="pth" id="pth"
onclick="window.location = ('../index.html')"
></div> ></div>
<div class="container-fluid in"> <div class="container-fluid in">
<h1>Personality</h1> <h1>Personality</h1>

View File

@@ -26,7 +26,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container-fluid in"> <div class="container-fluid in">
<h1>RAINS logs</h1> <h1>RAINS logs</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">

View File

@@ -30,7 +30,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in"> <div class="container in">
<h1>Discovery</h1> <h1>Discovery</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">

View File

@@ -23,7 +23,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in"> <div class="container in">
<h1>Device status</h1> <h1>Device status</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">

View File

@@ -30,7 +30,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in"> <div class="container in">
<h1>Device logs</h1> <h1>Device logs</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">
@@ -323,19 +323,35 @@
</div> </div>
</div> </div>
<script> <script>
var is_sniffing = false;
// CREATES MODAL FOR LOG TOOLS // CREATES MODAL FOR LOG TOOLS
function cfgm() { function cfgm() {
$('#m-t').html('Logs tools'); $('#m-t').html('Logs tools');
$('#m-f').empty(); $('#m-f').empty();
$('.sb').unbind(); $('.sb').unbind();
var tl = c_btn('Download log file', 0, ' dlog'); var tl = c_btn('Download log file', 0, ' dlog');
if (!is_sniffing) {
tl += c_btn('Start DMX sniff', 0, ' ddmx'); tl += c_btn('Start DMX sniff', 0, ' ddmx');
} else {
tl += c_btn('Stop DMX sniff', 0, ' ddmx');
}
$('#m-b').html(tl); $('#m-b').html(tl);
$('#cfg-modal').modal(); $('#cfg-modal').modal();
$('.dlog').bind('click', function () { $('.dlog').bind('click', function () {
// download logs
close_modal() close_modal()
}); });
$('.ddmx').bind('click', function () { $('.ddmx').bind('click', function () {
// start sniff
if (is_sniffing) {
$('.ddmx').html('Start DMX sniff');
is_sniffing = false;
} else {
$('.ddmx').html('Stop DMX sniff');
is_sniffing = true;
}
close_modal() close_modal()
}) })
} }

View File

@@ -31,7 +31,7 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="fixed-top text-center device-label" id="pth" onclick="window.location = ('../index.html')"></div> <div class="fixed-top text-center device-label" id="pth" ></div>
<div class="container in"> <div class="container in">
<h1>Personality</h1> <h1>Personality</h1>
<div class="row" id="boxes"> <div class="row" id="boxes">

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB