initial push

This commit is contained in:
2023-03-02 17:44:00 +01:00
commit 7a22aa3f7d
25 changed files with 3303 additions and 0 deletions

14
.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
# ---> VisualStudioCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# reap-simulator
As seen on https://spares.robe.cz/reap/

BIN
favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

1
files/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

6
files/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

75
files/identify.svg Normal file
View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="129mm"
height="78mm"
viewBox="0 0 129 78"
version="1.1"
id="svg918"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="identify.svg">
<defs
id="defs912" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="310.94801"
inkscape:cy="184.51041"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1149"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata915">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Vrstva 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-219)">
<path
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 62.115518,219.30336 c -19.559635,0.16053 -34.91929,9.98784 -45.389037,19.77501 -10.46975,9.78717 -16.04958747,19.53421 -16.04958747,19.53421 0,0 32.12589547,32.12828 63.12224447,32.12828 6.636515,0 12.8988,-1.02298 18.722888,-2.71767 l -4.867921,-5.57847 c -4.101769,0.87081 -9.485077,1.37666 -14.010513,1.37666 -27.144204,0 -54.2189124,-26.04337 -54.2189124,-26.04337 0,0 18.7207594,-32.63352 53.4813414,-32.3944 37.310809,0.25666 58.728339,29.94339 58.728339,29.94339 0,0 -10.32915,12.8855 -27.462918,21.32634 l 4.159438,4.76664 c 19.03679,-10.41404 30.47979,-25.83098 30.47979,-25.83098 0,0 -23.16179,-35.96902 -65.76756,-36.28564 -0.310105,-0.002 -0.619564,-0.003 -0.927592,0 z"
id="path1463"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscsccscsccccsc" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
d="m 49.23261,237.74385 a 23.056549,23.056549 0 0 0 -2.213231,32.53158 23.056549,23.056549 0 0 0 28.386884,5.06381 c 0.19947,0.66027 0.53552,1.29122 1.02001,1.84645 l 15.66712,17.95451 c 1.82122,2.08711 4.96722,2.30115 7.054333,0.47993 l 1.009234,-0.88067 c 2.08712,-1.82122 2.30115,-4.96721 0.47993,-7.05433 L 84.969773,269.73062 c -0.50874,-0.58302 -1.12273,-1.01406 -1.78632,-1.30122 a 23.056549,23.056549 0 0 0 -1.41926,-28.47232 23.056549,23.056549 0 0 0 -32.531583,-2.21323 z m 4.10025,4.69889 a 16.81994,16.81994 0 0 1 23.732443,1.61459 16.81994,16.81994 0 0 1 -1.61494,23.73205 16.81994,16.81994 0 0 1 -23.731708,-1.61454 16.81994,16.81994 0 0 1 1.614205,-23.7321 z"
id="path1482"
inkscape:connector-curvature="0"
inkscape:transform-center-x="-0.1889881"
inkscape:transform-center-y="15.875" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
d="m 64.743783,246.13944 a 8.8824405,8.8824405 0 0 0 -8.882145,8.88267 8.8824405,8.8824405 0 0 0 8.882145,8.88214 8.8824405,8.8824405 0 0 0 8.88266,-8.88214 8.8824405,8.8824405 0 0 0 -8.88266,-8.88267 z m -3.761012,1.96526 a 4.2522319,4.2522319 0 0 1 4.252454,4.25245 4.2522319,4.2522319 0 0 1 -4.252454,4.25246 4.2522319,4.2522319 0 0 1 -4.251937,-4.25246 4.2522319,4.2522319 0 0 1 4.251937,-4.25245 z"
id="path1520"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

2
files/jquery-3.3.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

465
files/layout.css Normal file
View File

@@ -0,0 +1,465 @@
body {
margin-top: 75px
}
a {
outline: 0
}
nav.navbar {
margin-top: 20px
}
.navbar-brand {
font-size: 1.2rem
}
.navbar-brand img {
height: 1.6rem;
padding-right: 1rem
}
.navbar-toggler {
font-size: 1rem
}
.navbar-dark .navbar-toggler {
border: 0
}
.device-label {
color: #0070af;
background: #22262a;
font-weight: bold
}
.container-fluid.in {
padding-top: 1.6rem;
padding-bottom: 1rem
}
h1 {
font-size: 1.7rem;
margin-bottom: 1rem
}
h2 {
font-size: 1.3rem
}
h2 a.cfg {
display: inline-block;
float: right;
cursor: pointer
}
h2 a.cfg img {
height: 21px
}
.box-c {
margin-bottom: 30px
}
.box-c h2 {
background-color: #0070af;
color: #fff;
font-size: 1.4rem;
padding: .3rem .5rem;
margin-bottom: 0
}
.box-c.log h2 {
background-color: #555;
color: #fff;
font-size: 1.2rem
}
.box-c h2.err {
background-color: #dc3545;
transition: background-color ease 600ms
}
.box-c h3,
.modal-content h3 {
color: #0070af;
font-size: 1.2rem;
padding: .3rem 0rem;
margin-bottom: .1rem
}
.box-c h3 div.fall {
font-weight: normal;
display: inline-block;
padding-left: 1rem;
font-size: 1rem
}
.box {
padding: .6rem;
margin-top: 0;
background: #ddd
}
.box p {
margin-bottom: 0;
text-align: right
}
.group {
list-style-type: none;
list-style-position: inside;
padding: 0;
margin-bottom: 0;
display: inline-block
}
.group li {
font-weight: normal;
color: #212529
}
.group.vals {
float: right
}
.group.vals div {
display: inline-block
}
.group.vals li {
padding: .0rem .0rem;
font-weight: bold;
color: #0070af
}
.group.vals li.err {
color: red
}
.modal-content {
border-radius: 0
}
.modal-header {
background-color: #0070af;
color: #fff;
border-radius: 0;
padding: .6rem 1rem
}
.modal-header img {
height: 25px;
margin-top: 3px;
margin-right: 10px
}
.modal-header img.loader {
-webkit-animation: rotation 1400ms infinite linear;
animation: rotation 1400ms infinite linear
}
@-webkit-keyframes rotation {
from {
-webkit-transform: rotate(0)
}
to {
-webkit-transform: rotate(359deg)
}
}
.modal-header.err,
.modal-header.suc {
background-color: #dc3545;
transition: background-color ease 600ms
}
.modal-header.suc {
background-color: #28a745
}
.form-group>label,
.form-group>legend,
.form-row div:first-child label {
font-weight: bold
}
.mt06 {
margin-top: .6rem
}
.mr06 {
margin-right: .6rem
}
.pl03 {
padding-left: .4rem
}
.btn-pm {
padding: 0rem .3rem
}
.btn-pm i {
padding: 3px;
display: block;
border: solid #fff;
border-width: 0 3px 3px 0;
transform: rotate(45deg);
transition: transform .3s ease;
margin: 4px 0 5px 0
}
.btn-pm i.blue {
border: solid #0070af;
border-width: 0 4px 4px 0;
margin: 7px 0 6px 0
}
.btn-pm img {
width: 12px;
transform: rotate(-90deg);
transition: transform .3s ease
}
.btn-pm.op i {
transform: rotate(-135deg)
}
h2 .btn-pm {
padding: 0rem .45rem;
background-color: #fff;
border-color: #eee
}
h2 .btn-pm:hover,
h2 .btn-pm:focus {
background-color: #ccc
}
.nlb {
font-size: 1.8rem;
line-height: .7;
padding: .26rem .35rem
}
.device-label.serr {
background-color: #dc3545;
color: #fff
}
.device-label.stou {
background-color: #fc0;
color: #333
}
tr.err {
background-color: #dc9ca3
}
tr.na {
background-color: #fc0
}
@keyframes ert {
0 {
background-color: #22262a;
color: #0070af
}
30% {
background-color: #dc3545;
color: #fff
}
100% {
background-color: #22262a;
color: #0070af
}
}
@keyframes ctout {
0 {
background-color: #22262a;
color: #0070af
}
30% {
background-color: #f90;
color: #fff
}
100% {
background-color: #22262a;
color: #0070af
}
}
.dn {
display: none
}
.btn-group-sm>.btn,
.btn-sm {
padding: 0rem .5rem
}
.derr {
font-weight: bold
}
.dmax {
background-color: #e0be58
}
.rdmi {
height: 27px;
padding: 6px 2px
}
.rdmi.a {
background-color: #dc3545
}
th i {
border: solid black;
border-width: 0 3px 3px 0;
display: inline-block;
padding: 4px;
transform: rotate(-135deg);
-webkit-transform: rotate(-135deg);
margin: 0 4px;
cursor: pointer
}
.ab {
transform: rotate(45deg);
-webkit-transform: rotate(45deg)
}
.as {
border-color: #dc3545;
border-width: 0 4px 4px 0
}
.pt02 {
padding-top: .2rem
}
.pl04 {
padding-left: .4rem
}
.loader {
border: 5px solid #0069d9;
border-radius: 50%;
border-top: 5px solid #fff;
width: 20px;
height: 20px;
-webkit-animation: spin 1s linear infinite;
animation: spin 1s linear infinite;
float: left;
margin: .1rem .5rem 0 0
}
@-webkit-keyframes spin {
0 {
-webkit-transform: rotate(0)
}
100% {
-webkit-transform: rotate(360deg)
}
}
@keyframes spin {
0 {
transform: rotate(0)
}
100% {
transform: rotate(360deg)
}
}
.prst {
padding: 14px
}
.prst span {
display: block;
padding-bottom: 12px
}
.ptok,
.ptf {
font-size: 50px;
font-weight: bold;
color: #28a745
}
.ptf {
color: red
}
.fl {
float: left
}
.fr {
float: right
}
.rains {
clear: both;
background: #000;
height: 30px;
margin-bottom: .5rem;
padding-right: 4px
}
.rains.sl {
height: 28px;
margin-bottom: 0
}
.rains>div {
background-color: #f70;
height: 100%;
width: 0;
padding-left: 4px
}
.myd {
background-color: #007bff;
color: #fff
}
.myd.na {
color: #000
}
.dchb {
display: inline-block;
padding-right: 1rem
}
.dchb>label {
padding-left: .3rem
}
.esm {
margin-top: .4rem;
margin-bottom: 1.4rem
}
#d-t th,
#d-t td {
text-align: center
}
#d-t th:first-child,
#d-t td:first-child {
text-align: left
}

5
files/popper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

56
files/robe_logo_white.svg Normal file
View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg2"
version="1.1"
xml:space="preserve"
width="415"
height="110"
viewBox="0 0 415 110"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath16"><path
d="M 0,173 446,173 446,0 0,0 0,173 Z"
id="path18" /></clipPath></defs><g
style="fill:#ffffff"
transform="matrix(1.25,0,0,-1.25,140.86154,42.229256)"
id="g20"><path
id="path22"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 0,0 c -2.442,-2.964 -4.657,-7.477 -3.98,-13.168 0.577,-4.853 2.86,-8.605 6.022,-11.33 3.101,-2.672 8.165,-4.479 13.167,-3.981 4.927,0.491 8.682,2.834 11.331,5.92 2.711,3.16 4.72,7.441 4.184,12.963 -0.256,2.649 -1.014,4.719 -2.04,6.635 C 25.776,2.463 20.151,6.657 11.535,5.92 6.645,5.501 2.317,2.81 0,0 m 10.31,26.539 5.92,0 C 27.173,25.383 34.908,21.071 40.932,14.698 43.801,11.664 46.191,7.961 48.077,3.572 49.92,-0.721 51.333,-6.041 51.139,-11.637 50.74,-23.19 46.475,-31.385 40.523,-37.563 34.485,-43.832 26.795,-48.26 15.822,-49.302 l -5.206,0 c -8.208,0.668 -14.821,3.804 -19.802,7.553 -8.233,6.198 -15.164,16.198 -15.311,30.214 -0.117,11.165 4.527,20.015 10.309,26.131 5.966,6.311 13.483,10.798 24.498,11.943" /></g><g
style="fill:#ffffff"
transform="matrix(1.25,0,0,-1.25,333.01479,34.702381)"
id="g24"><path
id="path26"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 0,0 c -6.181,-0.481 -10.744,-4.191 -13.269,-8.472 -0.176,-0.297 -0.776,-0.812 -0.409,-1.02 l 31.031,0 C 14.351,-3.843 8.871,0.69 0,0 m -1.327,20.517 5.92,0 c 12.026,-1.163 20.497,-6.576 26.54,-14.086 5.608,-6.971 10.345,-18.183 7.553,-31.336 -17.459,-0.064 -35.175,0.129 -52.466,-0.102 2.188,-4.775 7.154,-8.15 13.577,-9.289 6.866,-1.219 13.952,0.944 18.271,3.674 0.75,-5.438 1.35,-11.298 2.041,-17.149 0.099,-0.833 0.453,-1.896 0.306,-2.347 -0.227,-0.697 -2.536,-1.512 -3.471,-1.939 -3.696,-1.689 -8.024,-2.858 -12.861,-3.267 l -5.103,0 c -10.962,0.896 -18.816,5.94 -24.6,11.841 -6.032,6.153 -10.241,14.574 -10.513,25.926 -0.134,5.503 1.211,10.748 3.062,15.107 1.857,4.374 4.37,8.038 7.247,11.024 6.028,6.259 13.451,10.827 24.497,11.943" /></g><g
style="fill:#ffffff"
transform="matrix(1.25,0,0,-1.25,234.51441,66.472506)"
id="g28"><path
id="path30"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 0,0 c -0.443,-3.299 -1.049,-6.436 -1.531,-9.697 3.939,0.4 10.435,-0.798 13.27,0.715 1.213,0.648 2.112,2.137 2.552,3.878 0.347,1.378 0.61,3.47 -0.409,4.491 -1.128,1.132 -3.972,0.92 -6.329,0.92 l -7.348,0 C 0.061,0.28 0.088,0.083 0,0 M 4.287,26.437 C 3.785,23.299 3.306,20.136 2.756,17.046 c 4.738,0.438 12.007,-1.246 14.29,1.837 1.081,1.461 1.958,4.701 0.511,6.432 -2.21,2.64 -8.653,0.911 -13.168,1.428 -0.118,-0.017 -0.11,-0.161 -0.102,-0.306 m -20.414,16.434 41.339,0 c 2.378,0 4.524,0.05 6.533,-0.307 5.608,-0.995 10.132,-3.76 11.943,-8.676 1.249,-3.392 1.095,-8.232 -0.205,-11.942 C 41.142,15.26 36.124,10.761 28.887,9.084 35.939,7.956 40.114,4.103 40.114,-3.879 c 0,-3.486 -0.921,-6.682 -1.94,-9.39 -3.147,-8.382 -10.248,-12.34 -20.617,-13.372 -3.568,-0.356 -7.3,-0.205 -11.126,-0.205 l -33.991,0 c 3.878,23.172 7.426,46.675 11.433,69.717" /></g><g
style="fill:#ffffff"
transform="matrix(1.25,0,0,-1.25,53.844284,45.420256)"
id="g32"><path
id="path34"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 0,0 9.493,0 c 3.403,0 6.745,-0.224 8.574,0.919 1.308,0.818 2.85,3.972 2.143,6.328 C 19.37,10.054 15.621,9.8 11.841,9.8 L 1.633,9.8 C 0.939,6.682 0.48,3.331 0,0 m -30.111,-43.891 0,0.715 c 3.886,22.925 7.388,46.233 11.33,69.103 l 30.52,0 c 5.238,0 10.463,0.222 15.209,-0.102 9.444,-0.644 16.553,-4.049 18.883,-11.636 1.254,-4.085 0.55,-8.948 -1.021,-12.862 -2.888,-7.196 -8.405,-12.264 -15.617,-15.005 2.091,-10.021 4.028,-20.197 6.022,-30.315 l -26.743,0 c -0.961,9.143 -1.918,18.292 -2.959,27.355 l -8.269,0 c -1.568,-9.013 -2.906,-18.257 -4.491,-27.253 l -22.864,0 z" /></g><g
transform="matrix(1.25,0,0,-1.25,374.35579,68.259006)"
id="g36"><path
id="path38"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
d="m 0,0 c 6.684,0.677 11.168,-2.981 13.371,-7.247 1.231,-2.382 1.689,-4.083 1.429,-7.451 -0.518,-6.721 -6.568,-12.08 -13.473,-12.045 -4.252,0.022 -6.744,1.426 -9.085,3.675 -2.532,2.431 -4.716,5.734 -4.287,11.024 0.14,1.731 0.794,3.612 1.327,4.695 1.195,2.435 3.34,4.708 5.92,6.022 C -3.469,-0.649 -1.864,-0.188 0,0" /></g><g
transform="matrix(1.3327053,0,0,1.3327053,-116.13492,-4.2831463)"
id="text4146-0"
style="font-style:normal;font-weight:normal;font-size:67.82930756px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><path
id="path4151-3"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.67531967px;font-family:Arial;-inkscape-font-specification:Arial;fill:#ffffff"
d="m 387.29939,9.1524032 q 2.75308,0 5.37575,1.4200108 2.62267,1.40552 4.08615,4.042682 1.46348,2.622673 1.46348,5.477183 0,2.825531 -1.44899,5.433714 -1.4345,2.608182 -4.04268,4.057172 -2.59369,1.434501 -5.43371,1.434501 -2.84002,0 -5.44821,-1.434501 -2.59369,-1.44899 -4.04268,-4.057172 -1.44899,-2.608183 -1.44899,-5.433714 0,-2.85451 1.46348,-5.477183 1.47797,-2.637162 4.10064,-4.042682 2.62267,-1.4200108 5.37576,-1.4200108 z m 0,1.8112378 q -2.3039,0 -4.49187,1.188172 -2.17349,1.173682 -3.40513,3.376147 -1.23164,2.187975 -1.23164,4.564319 0,2.361854 1.20266,4.53534 1.21715,2.158995 3.39064,3.376147 2.17348,1.202662 4.53534,1.202662 2.36185,0 4.53534,-1.202662 2.17348,-1.217152 3.37614,-3.376147 1.20266,-2.173486 1.20266,-4.53534 0,-2.376344 -1.23164,-4.564319 -1.21715,-2.202465 -3.40512,-3.376147 -2.18798,-1.188172 -4.47738,-1.188172 z m -4.79616,15.170928 0,-11.765801 4.04268,0 q 2.07206,0 2.99941,0.333268 0.92735,0.318778 1.47797,1.130212 0.55062,0.811435 0.55062,1.724298 0,1.289602 -0.92736,2.245935 -0.91286,0.956334 -2.4343,1.072253 0.62307,0.260818 0.9998,0.623066 0.71001,0.695515 1.73879,2.332874 l 1.4345,2.303895 -2.31838,0 -1.04328,-1.854708 q -1.23164,-2.187975 -1.98511,-2.738591 -0.52164,-0.405718 -1.52144,-0.405718 l -1.11572,0 0,4.999017 -1.89818,0 z m 1.89818,-6.621886 2.30389,0 q 1.65185,0 2.24593,-0.492656 0.60858,-0.492657 0.60858,-1.304092 0,-0.521636 -0.2898,-0.927353 -0.2898,-0.420207 -0.81143,-0.623066 -0.50715,-0.202859 -1.89818,-0.202859 l -2.15899,0 0,3.550026 z" /></g></svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

51
files/settings.svg Normal file
View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 231.2 231.2"
style="enable-background:new 0 0 231.2 231.2;"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="settings.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1147"
id="namedview7"
showgrid="false"
inkscape:zoom="1.0207613"
inkscape:cx="-46.044067"
inkscape:cy="115.6"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><style
type="text/css"
id="style3">
.st0{fill:#333333;}
</style><path
class="st0"
d="M230.5,102.8c-0.4-3.2-4.2-5.7-7.4-5.7c-10.6,0-20-6.2-23.9-15.8c-4-9.9-1.4-21.3,6.5-28.6 c2.5-2.3,2.8-6.1,0.7-8.7c-5.4-6.9-11.6-13.1-18.3-18.5c-2.6-2.1-6.5-1.8-8.8,0.7c-6.9,7.6-19.3,10.5-28.8,6.5 c-10-4.2-16.2-14.3-15.6-25.1c0.2-3.4-2.3-6.4-5.7-6.8c-8.6-1-17.3-1-26-0.1c-3.3,0.4-5.8,3.3-5.7,6.6c0.4,10.7-6,20.6-15.8,24.7 c-9.5,3.9-21.7,1-28.6-6.5c-2.3-2.5-6.1-2.8-8.7-0.7c-6.9,5.4-13.2,11.7-18.7,18.5c-2.1,2.7-1.8,6.5,0.7,8.8 c8,7.3,10.6,18.9,6.5,28.8c-4,9.5-13.9,15.6-25.2,15.6c-3.7-0.1-6.3,2.3-6.7,5.7c-1,8.7-1,17.5,0,26.3c0.4,3.3,4.3,5.7,7.6,5.7 c10.1-0.3,19.7,6,23.8,15.8c4,9.9,1.4,21.3-6.5,28.6c-2.5,2.3-2.8,6.1-0.7,8.7c5.4,6.8,11.5,13.1,18.3,18.5c2.7,2.1,6.5,1.8,8.8-0.7 c6.9-7.6,19.3-10.5,28.8-6.5c10,4.2,16.3,14.3,15.6,25.1c-0.2,3.4,2.3,6.4,5.7,6.8c4.4,0.5,8.9,0.8,13.3,0.8c4.2,0,8.5-0.2,12.7-0.7 c3.4-0.4,5.8-3.3,5.7-6.6c-0.4-10.7,6-20.6,15.8-24.7c9.5-3.9,21.8-1,28.6,6.5c2.3,2.5,6.1,2.8,8.7,0.7c6.9-5.4,13.2-11.6,18.7-18.5 c2.1-2.6,1.8-6.5-0.7-8.8c-8-7.3-10.7-18.9-6.5-28.8c3.9-9.4,13.4-15.7,23.6-15.7l1.4,0c3.3,0.3,6.4-2.3,6.8-5.7 C231.5,120.4,231.5,111.5,230.5,102.8z M115.6,182.3c-36.8,0-66.7-29.8-66.7-66.7S78.8,49,115.6,49s66.7,29.8,66.7,66.7 c0,12.5-3.4,24.2-9.4,34.2l-29.2-29.2c2.1-5,3.2-10.4,3.2-16c0-10.9-4.3-21.2-12-28.9c-7.7-7.7-18-12-28.9-12 c-3.6,0-7.3,0.5-10.8,1.4c-1.5,0.4-2.8,1.7-3.2,3.2c-0.4,1.6,0.1,3.2,1.3,4.4c0,0,14.4,14.5,19.2,19.3c0.5,0.5,0.5,1.7,0.4,2.1 l0,0.3c-0.5,5.3-1.4,11.7-2.2,14.1c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.2,0.2-0.3,0.3c-2.5,0.8-8.9,1.7-14.3,2.2l0,0l-0.2,0.1 c0,0-0.1,0-0.2,0c-0.6,0-1.4-0.2-2.2-0.9c-5-5-18.9-18.8-18.9-18.8c-1.2-1.2-2.5-1.5-3.4-1.5c-2,0-3.8,1.4-4.3,3.5 c-3.8,14.1,0.2,29.3,10.5,39.6c7.7,7.7,18,12,28.9,12c5.6,0,11-1.1,16-3.2l29.5,29.5C141.1,178.4,128.8,182.3,115.6,182.3z"
id="path5"
style="fill:#ffffff" /></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

423
iforte/base.js Normal file
View File

@@ -0,0 +1,423 @@
function get_cookie(n,d,ti=false) {
var r = d;
var c = document.cookie.split(';');
c.forEach(function(v,i) {
v = v.split('=');
if (v[0].trim() == n) {
if (ti) {
const par = parseInt(v[1].trim());
if (!isNaN(par)) {
r = par;
}
} else r = v[1].trim();
}
});
return r;
}
function mhdr_status(c) {
if (c.length == 0) $('#cfg-modal .modal-header').removeClass('suc err');
else $('#cfg-modal .modal-header').addClass(c);
}
function loader(a) {
if (a) $('#cfg-modal .modal-header img').addClass('loader');
else $('#cfg-modal .modal-header img').removeClass('loader');
}
function do_ajax(p_url,p_data,f,i = -1,a = true) {
$.ajax({
url: p_url,
type: 'POST',
data: p_data,
dataType: 'json',
async: a,
success: function (json) {
f(json,i);
},
error: function () {
// console.log('do_ajax error');
f();
},
timeout:2000
});
}
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>');
}
});
}
}
function fill_values(d,ids) {
for (i = 0; i < ids.length; i++) {
$('#' + ids[i] + '_v').html(d[ids[i]]);
}
}
function show_errors(s,ids) {
if (s) mhdr_status('err');
for (i = 0; i < ids.length; i++) {
if (s & (1 << i)) $('#' + ids[i]).addClass('is-invalid').removeClass('is-valid');
else $('#' + ids[i]).removeClass('is-invalid').addClass('is-valid');
}
}
function close_modal() {
setTimeout(function() {
$('#m-b').empty();
$('#cfg-modal').modal('hide');
},500);
}
function pv(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(n,t,r,e,c) {
var html = '<div class="form-group' + c + '">';
html += '<legend class="col-form-label">' + t + '</legend>';
for (i = 0; i < r.length; i++) {
html += '<div class="form-check form-check-inline">';
html += '<input class="form-check-input" type="radio" name="' + n + '" value="' + i + '" id="' + n + (i + 1) + '">';
html += '<label class="form-check-label" for="' + n + (i + 1) + '">' + r[i] + '</label>';
html += '</div>';
}
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
html += '</div>';
return html;
}
function box(t,id,p,su = '',vid = '',bc = '') {
var s = '';
s += '<div class="col-md-6 col-xl-4 box-c' + bc + '">';
if (id >= 0) s += '<h2>' + t + '<a class="cfg" onclick="open_modal(' + id + ');"><img src="/settings.svg.gz"></a></h2>';
else s += '<h2>' + t + '</h2>';
s += '<div class="box">';
for (var j in p) {
if (p[j][0].length > 0) s += '<h3>' + p[j][0] + '</h3>';
s += '<ul class="group">';
for (var i in p[j][1]) {
l = p[j][1][i].split(";");
if (l.length == 4) s += l[0];
else s += '<li>' + l[0] + '</li>';
}
s += '</ul>';
s += '<ul class="group vals" id="' + vid + '">';
for (var i in p[j][1]) {
l = p[j][1][i].split(";");
if (l.length == 4) {
var t = l[3].replace(/&DG/gi,'&deg;');
s += t;
} else if (l.length == 3) s += l[2];
else if (l.length == 2) s += '<li><div id="' + l[1] + '_v">-</div></li>';
else s += '<li>-</li>';
}
s += '</ul>';
}
s += su;
s += '</div>';
s += '</div>';
return s;
}
function gens() {
var o = '<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark">';
o += '<div class="container">';
o += '<a class="navbar-brand" href="/"><img src="/robe_logo_white.svg.gz"></a>';
o += '<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar">';
o += '<span class="navbar-toggler-icon"></span>';
o += '</button>';
o += '<div class="collapse navbar-collapse" id="navbar">';
o += '<ul class="navbar-nav mr-auto">';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="/">Status</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="/personality">Personality</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="/logs">Logs</a>';
o += '</li>';
o += '<li class="nav-item snz">';
o += '<a class="nav-link" href="/sensors">RAINS logs</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="/discovery">Discovery</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="#" id="scfg">Settings</a>';
o += '</li>';
o += '<li class="nav-item">';
o += '<a class="nav-link" href="#" id="idnt"><img class="rdmi" src="/identify.svg.gz"></a>';
o += '</li>';
o += '</ul>';
o += '</div>';
o += '</div>';
o += '</nav>';
o += '<div class="fixed-top text-center device-label" id="pth"></div>';
o += '<div class="container-fluid in">';
o += '<h1></h1>';
o += '<div class="row" id="boxes"></div>';
o += '</div>';
o += '<div id="cfg-modal" class="modal fade" tabindex="-1" role="dialog">';
o += '<div class="modal-dialog" role="document">';
o += '<div class="modal-content">';
o += '<div class="modal-header">';
o += '<img src="/settings.svg.gz">';
o += '<h5 class="modal-title" id="m-t"></h5>';
o += '<button type="button" class="close" data-dismiss="modal" aria-label="Close">';
o += '<span aria-hidden="true">&times;</span>';
o += '</button>';
o += '</div>';
o += '<div class="modal-body" id="m-b">';
o += '</div>';
o += '<div class="modal-footer" id="m-f">';
o += '<button type="button" class="btn btn-primary sb">Save</button>';
o += '</div>';
o += '</div>';
o += '</div>';
o += '</div>';
return o;
}
var pre = '';
var dmxsnf = '';
function ptit(t) {
// console.log('setting title to ' + t);
if (t == $('#pth').data('title')) return;
// console.log('set');
if (t.length) $('#pth').data('title',t);
$('#pth').html($('#pth').data('title') + dmxsnf);
$('#pt_v').html(pre + $('#pth').html());
// console.log($('#pth').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_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;
}
$(document).ready(function() {
$('body').prepend(gens());
var am = 0;
var mip = 0;
mip = 1;
var href = $(location).attr('pathname');
if (href.indexOf('personality') != -1) am = 1;
if (href.indexOf('logs') != -1) am = 2;
if (href.indexOf('sensors') != -1) am = 3;
if (href.indexOf('discovery') != -1) am = (3 + mip);
$('#navbar ul li').eq(am).addClass('active');
//handle settings
$(document).on('click','#scfg',function() {
mhdr_status('');
$('#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');
$('#m-b').html(h);
$('.sb').unbind();
$('#cfg-modal').modal();
$('.sb').bind('click',function() {
loader(1);
var par = ['opswd','npswd','npsch'];
do_ajax('/set_cfg',pv(par),function (json) {
if (json) {
if (json['status'] == 0) {
mhdr_status('suc');
close_modal();
location = '/';
}
show_errors(json['status'],par);
loader(0);
}
});
});
});
//periodicly get status
var bsy = false;
var ebli = 0;
var eblio = 255;
var idntb = $('#idnt img');
function sta() {
do_ajax('/serr',{},function (json) {
// console.log(json);
dmxsnf = '';
if (json ) {
if (json['err'] == 1) ebli = 0x80;
else ebli = 0;
if (json['dmxsnf'] == 1) dmxsnf = ' [sniffing DMX]';
if (json['idnt'] == 1) idntb.addClass('a');
else idntb.removeClass('a');
if (json['dls'] && json['dls'] == 1) {
$('.snz').show();
}
} else if (json == undefined) {
ebli = 0x40;
} else ebli = 0;
bsy = false;
});
}
setInterval(function() {
if (!bsy) {
bsy = true;
sta();
}
},3000);
sta();
setInterval(function() {
if (ebli == eblio) return;
var opre = pre;
if (ebli & 0x80) {
ebli ^= 0x01;
if (ebli & 0x01) pre = '(!) ';
$('#pth').removeClass('stou');
$('#pth').addClass('serr');
} else if (ebli & 0x40) {
ebli ^= 0x01;
if (ebli & 0x01) pre = '(?) ';
$('#pth').removeClass('serr');
$('#pth').addClass('stou');
} else {
ebli = 0;
$('#pth').removeClass('serr stou');
pre = '';
}
//$('#pt_v').html(pre + $('#pth').data('title') + dmxsnf);
if (opre != pre) ptit('');
eblio = ebli;
},1000);
$('#idnt').click(function() {
idntb.toggleClass('a');
do_ajax('/rdmi',{s:idntb.hasClass('a') ? 1:0},function(json) {});
});
});

1
iforte/discovery.html Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

404
iforte/index.html Normal file
View File

@@ -0,0 +1,404 @@
<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>
<title id="pt_v">iForte</title>
</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 snz">
<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" href="#" id="scfg">Settings</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" 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">iForte</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="dmxa_v">350</div>
</li>
<li>
<div id="dmxp_v">Mode 1</div>
<small id="dmxf_v">(54 channels)</small>
</li>
<li>
<div id="dmxi_v">wired</div>
</li>
<li class="mt-2">
<div id="ip_v">2.247.136.14</div>
</li>
<li>
<div id="mac_v">00:0d:19:06:88:0e</div>
</li>
<li class="mt-2">
<div id="rdmu_v">52:53:01:2c:00:0e</div>
</li>
<li>
<div id="rdmn_v">iForte</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="h0_v">164</div>h / <div id="hr0_v">161</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="h1_v">21</div>h
</li>
<li>
<div id="hr1_v">19</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="t0_v">34</div>° <div class="tu">C</div> / <div id="tm0_v">65</div>° <div class="tu">C</div> / <div id="tmr0_v">65</div>° <div class="tu">C</div>
</li>
<li>
<div id="t3_v">36</div>° <div class="tu">C</div> / <div id="tm3_v">65</div>° <div class="tu">C</div> / <div id="tmr3_v">65</div>° <div class="tu">C</div>
</li>
<li>
<div id="t1_v">49</div>° <div class="tu">C</div> / <div id="tm1_v">97</div>° <div class="tu">C</div> / <div id="tmr1_v">97</div>° <div class="tu">C</div>
</li>
<li>
<div id="t2_v">34</div>° <div class="tu">C</div> / <div id="tm2_v">59</div>° <div class="tu">C</div> / <div id="tmr2_v">59</div>° <div class="tu">C</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="lwc_v">linked</div>
</li>
<li>
<div id="lws_v">0.0%</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="devs_v">active</div>
</li>
</ul>
<button class="btn btn-primary btn-block esm dn btn-success" value="0" style="display: inline-block;">Enter standby mode</button>
<div>Current RAINS status</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div id="rai" class="rains">
<div style="width: 63%;"></div>
</div>
<div>MAX WET/resettable</div>
<div>
<small class="fl">WET</small>
<small class="fr">DRY</small>
</div>
<div id="rair" class="rains">
<div style="width: 63%;"></div>
</div>
<button class="btn btn-primary btn-block mwr" value="0">MAX WET reset</button>
<p>
<small id="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">
<ul class="group" id="err_v"></ul>
</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;
mhdr_status('');
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('dmxa','DMX address','Please put DMX address from 1 to 512');h+=c_opt('dmxp','DMX preset',[1],'Mode ',0,1,'');h+=c_opt('dmxi','DMX input',['wired','wireless','wireless XLR out'],'',0,1,'Can not set wireless input now!');h+=c_txt('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')}$('#m-b').html(h);copy_form_values(1);$('#cfg-modal').modal();$('.sb').bind('click',function(){loader(1);var par=['dmxa','dmxp','dmxi','rdmn'];do_ajax('/set_dmx
',pv(par),function (json){if(json){if(json['
status ']==0){mhdr_status('
suc ');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)}})});$('.rh ').bind('
click ',function(){loader(1);do_ajax(' / reset_hours ',{index:$(this).attr('
value ')},function (json){if(json){mhdr_status('
suc ');fill_values(json,['
hr0 ','
hr1 ','
hr2 ','
hr3 '])}loader(0)})});$('.rt ').bind('
click ',function(){loader(1);do_ajax(' / reset_temps ',{index:$(this).attr('
value ')},function (json){if(json){mhdr_status('
suc ');fill_values(json,['
tmr0 ','
tmr1 ','
tmr2 '])}loader(0)})});$('.lwu ').bind('
click ',function(){loader(1);do_ajax(' / lwm ',{unlink:1},function (json){if(json){fill_values(json,['
lwc ','
lws ']);mhdr_status('
suc ');close_modal()}loader(0)})})}$(document).ready(function(){$('
h1 ').html('
Device status ');var boxes='
';boxes+=box(m_t[0],0,[['
',['
DMX address; dmxa ','
DMX preset; dmxp; < li > < div id = "dmxp_v" > - < /div> < small id = "dmxf_v" > < /small> < /li>','DMX input;dmxi',' < li class = "mt-2" > IP address < /li>;;; < li class = "mt-2" > < div id = "ip_v" > - < /div> < /li>','MAC address;mac',' < li class = "mt-2" > RDM UID < /li>;;; < li class = "mt-2" > < div id = "rdmu_v" > - < /div> < /li>','RDM label;rdmn',]],]);var lot_ta='';lot_ta=' < ul class = "group" > < li > LED on time total < /li> < li > LED on time adaptive < /li> < /ul>',lot_ta+=' < ul class = "group vals" > < li > < div id = "h1_v" > - < /div>h < /li> < li > < div id = "hr1_v" > - < /div>h < /li> < /ul>',boxes+=box('Device times',1,[['',[' < li > Power on time < /li>;;; < li > < div id = "h0_v" > - < /div>h / < div id = "hr0_v" > - < /div>h < /li>',]],],' < p > < small > total / resettable < /small> < /p>'+lot_ta);boxes+=box('Device temperatures',2,[['',[' < li > LEDs < /li>;;; < li > < div id = "t0_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm0_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr0_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',' < li > PSU < /li>;;; < li > < div id = "t3_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm3_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr3_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',' < li > Driver < /li>;;; < li > < div id = "t1_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm1_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr1_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',' < li > Base < /li>;;; < li > < div id = "t2_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tm2_v" > - < /div>&DG < div class = "tu" > < /div> / < div id = "tmr2_v" > - < /div>&DG < div class = "tu" > < /div> < /li>',]],],' < p > < small > current / maximum / resettable < /small> < /p>');boxes+=box('Wireless state',3,[['',['State;lwc','Signal strength;lws',]],]);boxes+=box('Software versions',-1,[['',['Display System','Module M','Module L1','Module L2','Module O','Module F-A','Module F-B','Module G1','Module G2','Module P','Module C1','Module C2','Module DL',]],],'','sw_vers');boxes+=box('Device state',-1,[['',['Device status;devs',]],],c_btn('',0,' esm dn')+' < div > Current RAINS status < /div> < div > < small class = "fl" > WET < /small> < small class = "fr" > DRY < /small> < /div> < div id = "rai"
class = "rains" > < div > < /div> < /div> < div > MAX WET / resettable < /div> < div > < small class = "fl" > WET < /small> < small class = "fr" > DRY < /small> < /div> < div id = "rair"
class = "rains" > < div > < /div> < /div>'+c_btn('MAX WET reset',0,' mwr')+' < p > < small id = "wrt" > < /small> < /p>');boxes+=' < div class = "col-12 box-c" > ';boxes+=' < h2 id = "sta_err" > Status messages < /h2>';boxes+=' < div class = "box" > ';boxes+=' < ul class = "group"
id = "err_v" > ';boxes+=' < /ul>';boxes+=' < /div>';boxes+=' < /div>';$('#boxes').html(boxes);var emb=$('button.esm');emb.addClass('btn-success');function ems_btn(v){if(v==0){emb.removeClass('sa btn-warning').html('Enter standby mode').show()} else {emb.addClass('sa btn-warning').html('Escape standby mode').show()}}emb.click(function(){var run=true;var s_v=(emb.hasClass('sa') ? 0:1);if((s_v==1)&&!confirm('Are you sure you want to enter standby mode?')) run=false;if(run){do_ajax('/sbm
',{s:s_v},function (json){ems_btn(json['
sm ']);fill_values(json,['
devs '])})}});var bussy=0;function do_5s(){bussy|=(1< < 0);
do_ajax('/lwm', {}, function(json) {
if (json) {
fill_values(json, ['lwc', 'lws'])
}
bussy &= ~(1 < < 0)
});
bussy |= (1 < < 1);
do_ajax('/reset_temps', {}, function(json) {
if (json) {
fill_values(json, ['t0', 't1', 't2', 't3', 'tm0', 'tm1', 'tm2', 'tm3', 'tmr0', 'tmr1', 'tmr2', 'tmr3']);
$('.tu').html(json['tu'])
}
bussy &= ~(1 < < 1)
});
bussy |= (1 < < 3);
do_ajax('/reset_hours', {}, function(json) {
if (json) {
fill_values(json, ['h0', 'h1', 'h2', 'h3', 'hr0', 'hr1', 'hr2', 'hr3'])
}
bussy &= ~(1 < < 3)
});
bussy |= (1 < < 4);
do_ajax('/devsta', {}, function(json) {
if (json) {
fill_values(json, ['devs']);
$('#rai>div').css('width', json['rains']);
$('#rair>div').css('width', json['maxw']);
$('#wrt').html('last reset: ' + json['maxwt']);
ems_btn(json['sm'])
} else {
fill_values({
devs: 'disconnected'
}, ['devs'])
}
bussy &= ~(1 < < 4)
});
bussy |= (1 < < 7);
do_ajax('/errors', {}, function(json) {
if (json) {
if (json['err']) {
if (json['err'].length) $('#sta_err').addClass('err');
else $('#sta_err').removeClass('err');
var html = '';
for (i = 0; i < json['err'].length; i++) html += ' < li > '+json['
err '][i]+' < /li>';$('#err_v').html(html)}}bussy&=~(1< < 7)
})
}
do_ajax('/status_i', {}, function(json) {
if (json) {
fill_values(json, ['dmxa', 'dmxp', 'dmxf', 'dmxi', 'pt', 'ip', 'mac', 'rdmu', 'rdmn']);
ptit(json['pt']);
$('.tu').html(json['tu'])
}
});
do_ajax('/reset_hours', {}, function(json) {
if (json) {
fill_values(json, ['h0', 'h1', 'h2', 'h3', 'hr0', 'hr1', 'hr2', 'hr3'])
}
});
do_ajax('/sw_ver', {}, function(json) {
if (json) {
$('#sw_vers li').each(function(i) {
var v = json['vers'][i];
$(this).html(v == 0 ? '-' : Math.floor(v / 10) + '.' + (v % 10))
})
}
});
do_5s();
setInterval(function() {
if (bussy == 0) do_5s()
}, 5000);
$('button.mwr').click(function() {
do_ajax('/mwres', {}, function(json) {
if (json) {
$('#rair>div').css('width', json['maxw']);
$('#wrt').html('last reset: ' + json['maxwt'])
}
})
})
});
</script>
</body>
</html>

1
iforte/logs.html Normal file

File diff suppressed because one or more lines are too long

1
iforte/personality.html Normal file

File diff suppressed because one or more lines are too long

1
iforte/sensors.html Normal file

File diff suppressed because one or more lines are too long

36
index.html Normal file
View File

@@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; 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>
<link rel="icon" type="image/png" href="../favicon.png" />
<title>REAP Simulators</title>
</head>
<body>
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-dark" style="margin-top: 0px !important;">
<div class="container">
<a class="navbar-brand" href="./index.html"><img src="./files/robe_logo_white.svg"></a>
</div>
</nav>
<div class="container in">
<h1>Available simulators</h1>
<div class="row" id="boxes">
<div class="col-md-6 col-xl-4 box-c">
<h2>T1 Profile</h2>
<div class="box">
<button type="button" class="btn btn-primary" style="width: 100%;" onclick="location.href='t1/index.html'">Launch</button>
</div>
</div>
<div class="col-md-6 col-xl-4 box-c">
<h2>iForte</h2>
<div class="box">
<button type="button" class="btn btn-primary" style="width: 100%;" onclick="location.href='iforte_index.html'" disabled>Coming soon</button>
</div>
</div>
</div>
</div>
</body>
</html>

461
t1/base.js Normal file
View File

@@ -0,0 +1,461 @@
$(document).ready(function() {
initSessionStorage()
populateUIFromSessionStorage()
// Sets the proper fixture name in the header and title
var fixturename = "Robin T1 Wash - Simulated";
$('#pth').html(fixturename)
$(document).prop('title', fixturename)
//handle settins modal
$(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 += c_btn('Reset demo values', 'btnresetdemo', ' btnresetdemo')
$('#m-b').html(h);
$('.sb').unbind();
$('#cfg-modal').modal();
$('.sb').bind('click',function() {
loader(1);
setTimeout(function() {
close_modal();
loader(0);
}, 500);
});
});
// handle reset demo values
$(document).on('click','.btnresetdemo',function() {
$('.sb').html('OK')
sessionStorage.clear()
initSessionStorage()
populateUIFromSessionStorage()
showCustomModal('Cleared', 'Simulated page reset to default settings.')
});
});
// custom modal
function showCustomModal(title, text) {
loader(0)
$('#m-t').html(title);
var h = '<h3>' + text +'</h3>';
$('#m-b').html(h);
$('.sb').unbind();
$('#cfg-modal').modal();
$('.sb').bind('click',function() {
close_modal()
});
}
// turns loader animation on or off (0 or 1)
function loader(a) {
if (a) $('#cfg-modal .modal-header img').addClass('loader');
else $('#cfg-modal .modal-header img').removeClass('loader');
}
// called on modal saves
function do_ajax(p_url,p_data) {
loader(1)
// convert p_data to an Object
const data_object = {}
p_data.toString().split('&').forEach(element => {
var kvp = element.split('=');
data_object[kvp[0]] = kvp[1]
});
p_data = data_object
switch (p_url) {
case '/reset_hours':
if (p_data.rh == 0) {
sessionStorage.setItem('hr0', '0')
} else if (p_data.rh == 1){
sessionStorage.setItem('hr1', '0')
} else if (p_data.rh == 3){
sessionStorage.setItem('hr3', sessionStorage.getItem('h3'))
}
break;
case '/reset_temps':
if (p_data.rt == 0) {
sessionStorage.setItem('tmr0', sessionStorage.getItem('t0'))
} else if (p_data.rt == 3){
sessionStorage.setItem('tmr3', sessionStorage.getItem('t3'))
} else if (p_data.rt == 2){
sessionStorage.setItem('tmr2', sessionStorage.getItem('t2'))
}
break;
case '/ltemps':
if (p_data.rlt == 0) {
sessionStorage.setItem('ltmr0', sessionStorage.getItem('lt0'))
} else if (p_data.rlt == 1){
sessionStorage.setItem('ltmr1', sessionStorage.getItem('lt1'))
} else if (p_data.rlt == 2){
sessionStorage.setItem('ltmr2', sessionStorage.getItem('lt2'))
}
break;
default:
for (const [key, value] of Object.entries(p_data)) {
sessionStorage.setItem(key, value)
if (key == 'tmpu') {
if (value == 0) {
sessionStorage.setItem('tu', 'C')
} else if (value == 1) {
sessionStorage.setItem('tu', 'F')
}
}
}
break;
}
populateUIFromSessionStorage()
loader(0)
close_modal()
}
// closes the currently open modal
function close_modal() {
loader(0)
setTimeout(function() {
$('#m-b').empty();
$('#cfg-modal').modal('hide');
},500);
}
// fills modals with form values
function copy_form_values(dir) {
$('#m-b input:text, #m-b input[type=range]').each(function() {
var id = $(this).attr('id');
if (dir == 0) $('#' + id + '_v').html($('#' + id).val());
else $('#' + id).val($('#' + id + '_v').html());
});
$('#m-b select').each(function() {
var id = $(this).attr('id');
text = $('#' + id + '_v').html();
if (dir == 1) {
$(this).find('option').filter(function () { return $(this).html() == text; }).attr('selected', 'selected');
} else {
$('#' + id + '_v').html($(this).find('option:selected').html());
}
});
$('#m-b input:radio').each(function() {
var id = $(this).attr('name');
text = $('#' + id + '_v').html();
label = $(this).parent().find('label').html();
if (dir == 1) {
if (label == text) $(this).attr('checked','checked');
} else {
if ($(this).is(':checked')) $('#' + id + '_v').html(label);
}
});
if (dir == 1) {
$('#m-b div.form-group').each(function() {
var len = $(this).find('div.invalid-feedback').length;
if (len == 0) {
$(this).append('<div class="invalid-feedback">Wrong value!</div>');
}
});
}
}
// creates a parameter-like url format from an array
function serialize_parameters(p) {
var s = '';
for (var i in p) {
var o = p[i];
if (i == 0) s += o + '=';
else s += '&' + o + '=';
if ($('#' + o).val() != undefined) s += $('#' + o).val();
else if ($('input[name=' + o + ']:checked').val() != undefined) s += $('input[name=' + o + ']:checked').val();
}
return s;
}
// returns txt field
function c_txt(input_id,label,e,form_div_class = '',input_text = 'text') {
var html = '<div class="form-group' + form_div_class + '">';
html += '<label for="' + input_id + '" class="col-form-label">' + label + '</label>';
html += '<input type="'+ input_text +'" class="form-control" id="' + input_id + '">';
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</div>' : '';
html += '</div>';
return html;
}
// returns btn field
function c_btn(text, btnvalue, btnclass) {
return '<button class="btn btn-primary btn-block' + btnclass + '" value="' + btnvalue + '">' + text + '</button>';
}
// returns select field
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;
}
// returns radio field
function c_rad(n,t,r,e,c) {
var html = '<div class="form-group' + c + '">';
html += '<legend class="col-form-label">' + t + '</legend>';
for (i = 0; i < r.length; i++) {
html += '<div class="form-check form-check-inline">';
html += '<input class="form-check-input" type="radio" name="' + n + '" value="' + i + '" id="' + n + (i + 1) + '">';
html += '<label class="form-check-label" for="' + n + (i + 1) + '">' + r[i] + '</label>';
html += '</div>';
}
html += e.length > 0 ? '<div class="invalid-feedback">' + e + '</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() {
var currentTime = new Date();
if (sessionStorage.getItem('dmxa') == null) {
/* CONSTANTS */
sessionStorage.setItem('ip', '2.246.16.203') // ip addr
sessionStorage.setItem('mac', '00:00:00:00:00:00') //
sessionStorage.setItem('rdmu', '52:53:00:00:00:00') //
/* VARIABLES */
sessionStorage.setItem('dmxa', '1') // dmx addr
sessionStorage.setItem('dmxp', '2') // dmx mode
sessionStorage.setItem('dmxi', '0') // input (wired0 wireless1 wirelessout2)
sessionStorage.setItem('rdmn', 'Robin T1 Wash') // rdm name
sessionStorage.setItem('bldmc', '0') // blackout dmc
sessionStorage.setItem('blptm', '0') // blackout pt
sessionStorage.setItem('dty', currentTime.getFullYear()) // date year
sessionStorage.setItem('dtmo', addLeadingZeros(currentTime.getMonth() + 1)) // date month
sessionStorage.setItem('dtd', addLeadingZeros(currentTime.getDay())) // date day
sessionStorage.setItem('dth', addLeadingZeros(currentTime.getHours())) // time hour
sessionStorage.setItem('dtmi', addLeadingZeros(currentTime.getMinutes())) // time minute
sessionStorage.setItem('dts', addLeadingZeros(currentTime.getSeconds())) // time seconds
sessionStorage.setItem('emod', '0') //ethmode 0dis 1art 2gma1 3gma2 4sacn
sessionStorage.setItem('ee2d', '0') //eth to dmx
sessionStorage.setItem('eanu', '0') //art uni
sessionStorage.setItem('emau', '1') //ma uni
sessionStorage.setItem('emas', '1') //ma session
sessionStorage.setItem('esau', '1') //sacn uni
sessionStorage.setItem('dint', '9') //disp int
sessionStorage.setItem('dsd', '0') //disp screensave
sessionStorage.setItem('dtl', '0') //disp lock
sessionStorage.setItem('dor', '2') //disp orientation 0norm 1inv 2auto
sessionStorage.setItem('mics', '9') // mic sens
sessionStorage.setItem('them', '0') // theatre mode
sessionStorage.setItem('fannl', '0') // fan noise level percent
sessionStorage.setItem('frq', '4928') // cpulse frequency, use frq_s to calculate. 4928 = 600.0000Hz
sessionStorage.setItem('fanm', '0') // fanmode 0auto 1high
sessionStorage.setItem('tmpu', '0') //temp unit 0c 1f
sessionStorage.setItem('tu', 'C') // temp unit string
sessionStorage.setItem('pr', '0') // pan rev
sessionStorage.setItem('ptf', '1') // pt feedback
sessionStorage.setItem('pte', '1') // pt EMS
sessionStorage.setItem('tr', '0') // tilt rev
sessionStorage.setItem('ptm', '0') // pt mode 0speed 1time
sessionStorage.setItem('ccalm', '1') // col cal mode
sessionStorage.setItem('cmixm', '0') // color mix mode 0rgb 1cmy
sessionStorage.setItem('chrwh', '0') // chromatic white
sessionStorage.setItem('cdimc', '1') //dim curve 0linear 1squarelaw
sessionStorage.setItem('thefs', '0') //tungsten dimming 0off 1_750 2_1000 3_1200 4_2000 5_2500
sessionStorage.setItem('h0', '1206') // power on time
sessionStorage.setItem('hr0', '1206') // resetable
sessionStorage.setItem('h1', '213') // leds on time
sessionStorage.setItem('hr1', '213') // resetable
sessionStorage.setItem('h3', '300') // airfilters
sessionStorage.setItem('hr3', '45') // resetable
sessionStorage.setItem('t0', '28') // led brd top now
sessionStorage.setItem('tm0', '62') // max
sessionStorage.setItem('tmr0', '62') // resetable
sessionStorage.setItem('t3', '26') // led brd bottom now
sessionStorage.setItem('tm3', '64') // max
sessionStorage.setItem('tmr3', '64') // resetable
sessionStorage.setItem('t2', '25') // base now
sessionStorage.setItem('tm2', '56') // max
sessionStorage.setItem('tmr2', '56') // resetable
sessionStorage.setItem('lt0', '22.3') // red amber now
sessionStorage.setItem('ltm0', '53') // max
sessionStorage.setItem('ltmr0', '53') // resetable
sessionStorage.setItem('lt1', '22.9') // green yellow now
sessionStorage.setItem('ltm1', '67') // max
sessionStorage.setItem('ltmr1', '67') // resetable
sessionStorage.setItem('lt2', '23.1') // blue now
sessionStorage.setItem('ltm2', '65') // max
sessionStorage.setItem('ltmr2', '65') // resetable
}
}
function populateUIFromSessionStorage() {
for (var i = 0; i < sessionStorage.length; i++) {
var valueToLoad = '';
switch (sessionStorage.key(i)) {
case 'dmxp':
var valueToLoad = "Mode " + (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
break;
case 'dmxi':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "wired"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "wireless"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "wireless XLR out"
}
break;
case 'bldmc':
case 'blptm':
case 'ee2d':
case 'them':
case 'pr':
case 'tr':
case 'ptf':
case 'pte':
case 'ccalm':
case 'chrwh':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "on"
}
break;
case 'emod':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "disable"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "ArtNet"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "gMA1"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 3) {
var valueToLoad = "gMA2"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 4) {
var valueToLoad = "sACN"
}
break;
case 'dint':
case 'mics':
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + 1)
break;
case 'dsd':
case 'dtl':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else {
var valueToLoad = (parseInt(sessionStorage.getItem(sessionStorage.key(i))) + " min")
}
break;
case 'dor':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "normal"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "inverted"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "auto"
}
break;
case 'fanm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "auto"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "high"
}
break;
case 'tmpu':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "°C"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "°F"
}
break;
case 'ptm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "speed"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "time"
}
break;
case 'cmixm':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "rgb"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "cmy"
}
break;
case 'thefs':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "off"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "750 W"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 2) {
var valueToLoad = "1000 W"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 3) {
var valueToLoad = "1200 W"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 4) {
var valueToLoad = "2000 W"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 5) {
var valueToLoad = "2500 W"
}
break;
case 'cdimc':
if (sessionStorage.getItem(sessionStorage.key(i)) == 0) {
var valueToLoad = "linear"
} else if (sessionStorage.getItem(sessionStorage.key(i)) == 1) {
var valueToLoad = "square law"
}
break;
default:
var valueToLoad = sessionStorage.getItem(sessionStorage.key(i))
break;
}
$("#" + sessionStorage.key(i) + "_v").html(valueToLoad)
// for each element with id tu_v sets html to string of temp unit
$('div[id^="tu_v"]').html(sessionStorage.getItem('tu'))
}
}

98
t1/discovery.html Normal file
View File

@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; 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>
<title id="pt_v">Robin T1 Wash</title>
</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="./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">Robin T1 Wash</div>
<div class="container 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 (0)</button>
</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>&nbsp;</th>
</tr>
</thead>
<tbody id="scd">
<tr>
<td>Robin T1 Wash</td>
<td>100</td>
<td>Mode 3</td>
<td>52:53:00:00:00</td>
<td><a href="">2.146.200.16</a></td>
</tr>
<tr>
<td>Robin EspriTE</td>
<td>200</td>
<td>Mode 1</td>
<td>52:53:00:00:00</td>
<td><a href="">2.146.12.146</a></td>
</tr>
<tr>
<td>Robin T2 Profile</td>
<td>300</td>
<td>Mode 3</td>
<td>52:53:00:00:00</td>
<td><a href="">2.146.28.123</a></td>
</tr>
</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>
</body>
</html>

320
t1/index.html Normal file
View File

@@ -0,0 +1,320 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; 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>
<title id="pt_v">Robin T1 Wash</title>
</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="./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">Robin T1 Wash</div>
<div class="container 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="dmxa_v"></div>
</li>
<li>
<div id="dmxp_v"></div>
</li>
<li>
<div id="dmxi_v"></div>
</li>
<li class="mt-2">
<div id="ip_v"></div>
</li>
<li>
<div id="mac_v"></div>
</li>
<li class="mt-2">
<div id="rdmu_v"></div>
</li>
<li>
<div id="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>
<li>LEDs on time</li>
<li>Air filters</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="h0_v"></div>
h /
<div id="hr0_v"></div>
h
</li>
<li>
<div id="h1_v"></div>
h /
<div id="hr1_v"></div>
h
</li>
<li>
<div id="h3_v"></div>
h /
<div id="hr3_v"></div>
h
</li>
</ul>
<p><small>total / resetable</small></p>
</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 board top</li>
<li>LEDs board bottom</li>
<li>Base</li>
<li>Red/Amber leds</li>
<li>Green/Yellow leds</li>
<li>Blue led</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="t0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tm0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tmr0_v"></div>
°
<div class="tu" id="tu_v"></div>
</li>
<li>
<div id="t3_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tm3_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tmr3_v"></div>
°
<div class="tu" id="tu_v"></div>
</li>
<li>
<div id="t2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tm2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="tmr2_v"></div>
°
<div class="tu" id="tu_v"></div>
</li>
<li>
<div id="lt0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltm0_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltmr0_v"></div>
°
<div class="tu" id="tu_v"></div>
</li>
<li>
<div id="lt1_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltm1_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltmr1_v"></div>
°
<div class="tu" id="tu_v"></div>
</li>
<li>
<div id="lt2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltm2_v"></div>
°
<div class="tu" id="tu_v"></div>
/
<div id="ltmr2_v"></div>
°
<div class="tu" id="tu_v"></div>
</li>
</ul>
<p><small>current / maximum / resetable</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="lwc_v">not installed</div>
</li>
<li>
<div id="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 L3</li>
<li>Module O</li>
<li>Module F-A</li>
<li>Module SC</li>
</ul>
<ul class="group vals" id="sw_vers">
<li>2.2</li>
<li>1.3</li>
<li>2.0</li>
<li>1.4</li>
<li>1.4</li>
<li>2.3</li>
<li>1.1</li>
<li>1.1</li>
</ul>
</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('dmxa', 'DMX address', 'Please put DMX address from 1 to 512');
h += c_opt('dmxp', 'DMX preset', [3], 'Mode ', 0, 1, '');
h += c_opt('dmxi', 'DMX input', ['wired', 'wireless', 'wireless XLR out'], '', 0, 1, 'Can not set wireless input now!');
h += c_txt('rdmn', 'RDM label', 'Please insert label,max 32 characters')
} else if (a_m == 1) {
h += c_btn('Power on time reset', 0, ' rh');
h += c_btn('LEDs on time reset', 1, ' rh')
h += c_btn('Air filters reset', 3, ' rh')
} else if (a_m == 2) {
h += c_btn('Led board top temperature reset', 0, ' rt');
h += c_btn('Led board bottom temperature reset', 3, ' rt');
h += c_btn('Base temperature reset', 2, ' rt');
h += c_btn('Red/Amber temperature reset', 0, ' rlt');
h += c_btn('Green/Yellow temperature reset', 1, ' rlt');
h += c_btn('Blue temperature reset', 2, ' rlt')
} else if (a_m == 3) {
h += c_btn('Unlink Wireless module', 0, ' lwu')
}
$('#m-b').html(h);
copy_form_values(1);
$('#cfg-modal').modal();
$('.sb').bind('click', function() {
loader(1);
var par = ['dmxa', 'dmxp', 'dmxi', 'rdmn'];
do_ajax('/set_dmx', serialize_parameters(par))
});
$('.rh').bind('click', function() {
loader(1);
do_ajax('/reset_hours', "rh=" + this.value)
});
$('.rt').bind('click', function() {
loader(1);
do_ajax('/reset_temps', "rt=" + this.value)
});
$('.rlt').bind('click', function() {
loader(1);
do_ajax('/ltemps', "rlt=" + this.value)
});
$('.lwu').bind('click', function() {
// on unlink wireless module
loader(1)
close_modal()
})
}
</script>
</body>
</html>

412
t1/logs.html Normal file
View File

@@ -0,0 +1,412 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; 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>
<title id="pt_v">Robin T1 Wash</title>
</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="./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">Robin T1 Wash</div>
<div class="container 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">
<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">Focus 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">Zoom 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">BD. Rotation
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">BD. 1 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">BD. 2 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">BD. 3 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">BD. 4 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">Scrim 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">Scrim 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">Frost 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">Frost 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">Leds 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_14" value="0"><label class="form-check-label" for="fe_14">Fans failure</label>
</div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_15" value="2"><label class="form-check-label" for="fe_15">Powerdown mode</label>
</div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_16" value="6"><label class="form-check-label" for="fe_16">Temperature sensor
error</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_17" value="8"><label class="form-check-label" for="fe_17">Eeprom error</label>
</div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_18" value="9"><label class="form-check-label" for="fe_18">Recharge the
battery</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_19" value="10"><label class="form-check-label" for="fe_19">Battery faulty.
replace it</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_20" value="11"><label class="form-check-label" for="fe_20">Pan/tilt EMS cal.
error</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_21" value="12"><label class="form-check-label" for="fe_21">Pan/tilt EMS
error</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_22" value="13"><label class="form-check-label" for="fe_22">Internal error
1</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_23" value="14"><label class="form-check-label" for="fe_23">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_24" value="0"><label class="form-check-label" for="fe_24">Power on</label></div>
<div class="form-check form-check-inline"><input type="checkbox" class="form-check-input"
id="fe_25" value="3"><label class="form-check-label" for="fe_25">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="tl0" for="fts0">LEDs
board 1</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" id="tu_v">C</span></label></div>
</div>
<div class="form-row">
<div class="form-group col-auto"><label class="col-form-label" id="tl1"
for="fts1">Ambient</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" id="tu_v">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" id="tu_v">C</span></label></div>
</div>
<div class="form-row">
<div class="form-group col-auto"><label class="col-form-label" id="tl3" for="fts3">LEDs
board 2</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" id="tu_v">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">Apply
filter</button><button type="button" class="btn btn-primary" id="fcl">Clear filter</button>
</div>
</div>
</div>
</div>
<div class="row" id="logs">
<div class="col-md-6 box-c log">
<h2>Log 13.05.2022 11:07:53</h2>
<div class="box">
<div class="lse">
<h3>Statuses</h3>Power Off
</div>
<div>
<h3>Temperatures</h3>
<ul class="group">
<li>LEDs board 1</li>
<li class="">Ambient</li>
<li>Base</li>
<li>LEDs board 2</li>
</ul>
<ul class="group vals">
<li class="">31°C</li>
<li class="">25°C</li>
<li class="">27°C</li>
<li class="">32°C</li>
</ul>
<h3>Display orientation</h3>Side Bottom
</div>
</div>
</div>
<div class="col-md-6 box-c log">
<h2>Log 13.05.2022 11:08:41</h2>
<div class="box">
<div class="lse">
<h3>Statuses</h3>Power On
</div>
<div>
<h3>Temperatures</h3>
<ul class="group">
<li class="">LEDs board 1</li>
<li class="">Ambient</li>
<li>Base</li>
<li class="">LEDs board 2</li>
</ul>
<ul class="group vals">
<li class="">27°C</li>
<li class="">31°C</li>
<li class="">25°C</li>
<li class="">28°C</li>
</ul>
<h3>Display orientation</h3>Side Bottom
</div>
</div>
</div>
<div class="col-md-6 box-c log">
<h2>Log 13.05.2022 11:08:46</h2>
<div class="box">
<div>
<h3>Temperatures</h3>
<ul class="group">
<li class="">LEDs board 1</li>
<li class="">Ambient</li>
<li>Base</li>
<li class="">LEDs board 2</li>
</ul>
<ul class="group vals">
<li class="">31°C</li>
<li class="">35°C</li>
<li class="">26°C</li>
<li class="">24°C</li>
</ul>
<h3>Display orientation</h3>Side Bottom
</div>
</div>
</div>
<div class="col-md-6 box-c log">
<h2>Log 13.05.2022 11:04:49</h2>
<div class="box">
<div>
<h3>Temperatures</h3>
<ul class="group">
<li class="">LEDs board 1</li>
<li class="">Ambient</li>
<li>Base</li>
<li class="">LEDs board 2</li>
</ul>
<ul class="group vals">
<li class="">29°C</li>
<li class="">22°C</li>
<li class="">22°C</li>
<li class="">35°C</li>
</ul>
<h3>Display orientation</h3>Side Bottom
</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>
var lfn = 'data';
// 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" id="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>

465
t1/personality.html Normal file
View File

@@ -0,0 +1,465 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; 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>
<title id="pt_v">Robin T1 Wash</title>
</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="./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">Robin T1 Wash</div>
<div class="container 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="dmxa_v">1</div>
</li>
<li>
<div id="dmxp_v">Mode 3</div>
</li>
<li>
<div id="dmxi_v">wired</div>
</li>
<li>
<div id="rdmn_v">Robin T1 Wash</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="emod_v">disable</div>
</li>
<li>
<div id="ee2d_v">off</div>
</li>
<li>
<div id="eanu_v">0</div>
</li>
<li>
<div id="emau_v">1</div>
</li>
<li>
<div id="emas_v">1</div>
</li>
<li>
<div id="esau_v">1</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="pr_v">off</div>
</li>
<li>
<div id="tr_v">off</div>
</li>
<li>
<div id="ptf_v">on</div>
</li>
<li>
<div id="ptm_v">speed</div>
</li>
<li>
<div id="pte_v">on</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="bldmc_v">off</div>
</li>
</ul>
<h3>Active blackout while</h3>
<ul class="group">
<li>Pan/Tilt moving</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="blptm_v">off</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="dint_v">10</div>
</li>
<li>
<div id="dsd_v">5 min</div>
</li>
<li>
<div id="dtl_v">off</div>
</li>
<li>
<div id="dor_v">auto</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>Colour calibration mode</li>
<li>Colour mixing mode</li>
<li>Chromatic white</li>
<li>Thungsten effect simulation</li>
<li>Dimmer curve</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="ccalm_v">on</div>
</li>
<li>
<div id="cmixm_v">cmy</div>
</li>
<li>
<div id="chrwh_v">off</div>
</li>
<li>
<div id="thefs_v">off</div>
</li>
<li>
<div id="cdimc_v">square law</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="dtd_v">13</div>.<div id="dtmo_v">05</div>.<div id="dty_v">2022</div>
</li>
<li>
<div id="dth_v">11</div>:<div id="dtmi_v">09</div>:<div id="dts_v">21</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>Microphone sensitivity</li>
<li>Theatre mode</li>
<li>Frequency (Hz)</li>
<li>Fan mode</li>
<li>Temperature unit</li>
</ul>
<ul class="group vals" id="">
<li>
<div id="mics_v">10</div>
</li>
<li>
<div id="them_v">off</div>
<div id="themq" class="pl03 dn" style="display: none;">(<div id="fannl_v">0</div>%)</div>
</li>
<li>
<div id="frqs_v">600.0000</div>
</li>
<li>
<div id="fanm_v">auto</div>
</li>
<li>
<div id="tmpu_v">°C</div>
</li>
</ul>
</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', 'Lamp settings',
];
var addrs = ['set_dmx', 'eth_s', 'pt_s', 'bl_s', 'dis_s', 'ldt_s', 'oth_s', 'col_s', 'lamp_s', ];
var params = [
['dmxa', 'dmxp', 'dmxi', 'rdmn'],
['emod', 'ee2d', 'eanu', 'emau', 'emas', 'esau'],
['pr', 'tr', 'ptf', 'ptm', 'pte'],
['bldmc', 'blptm', 'blprm', 'blgwm', 'bltim'],
['dint', 'dsd', 'dtl', 'dor'],
['dtd', 'dtmo', 'dty', 'dth', 'dtmi', 'dts'],
['mics', 'fanm', 'tmpu', 'them', 'cpm', 'fannl', 'fsmo', 'btns', 'freq', 'freqa'],
['ccri', 'cdimc', 'hpwrm', 'ccalm', 'cmixm', 'chrwh', 'thefs', 'whip83z'],
['lonof', 'lpwr', 'ligde', 'llise', 'lonpon', 'lofvd', 'londp', 'lofdm'],
];
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('dmxa', 'DMX address', 'Please put DMX address from 1 to 512');
h += c_opt('dmxp', 'DMX preset', [3], 'Mode ', 0, 1, '');
h += c_opt('dmxi', 'DMX input', ['wired', 'wireless', 'wireless XLR out'], '', 0, 1,
'Can not set wireless input now!');
h += c_txt('rdmn', 'RDM label', 'Please insert label,max 32 characters')
} else if (a_m == 1) {
h += c_rad('emod', 'Ethernet mode', ['disable', 'ArtNet', 'gMA1', 'gMA2', 'sACN'], '', '');
h += c_rad('ee2d', 'Ethernet to DMX', off_on_l, '', '');
h += c_txt('eanu', 'ArtNet universe', 'Please put ArtNet universe from 0 to 255');
h += c_txt('emau', 'MANet I/II universe',
'Please put MANet I/II universe from 1 to 256 (64 for MANet I)');
h += c_txt('emas', 'MANet session ID', 'Please put MANet session ID from 1 to 32');
h += c_txt('esau', 'sACN universe', 'Please put sACN universe from 1 to 32000')
} else if (a_m == 2) {
h += '<div class="row">';
h += c_rad('pr', 'Pan reverse', off_on_l, '', ' col-6');
h += c_rad('tr', 'Tilt reverse', off_on_l, '', ' col-6');
h += c_rad('ptf', 'Pan/Tilt feedback', off_on_l, '', ' col-6');
h += c_rad('ptm', 'Pan/Tilt Mode', ['speed', 'time'], '', ' col-6');
h += c_rad('pte', 'Pan/Titl EMS', off_on_l, '', ' col-6');
h += '</div>'
} else if (a_m == 3) {
h += c_rad('bldmc', 'Blackout DMC', off_on_l, '', '');
h += '<h3>Active blackout while</h3>';
h += c_rad('blptm', 'Pan/Tilt moving', off_on_l, '', '')
} else if (a_m == 4) {
h += c_opt('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('dsd', 'Screensaver delay', dsd_dtl_l, '', 0, 0, '');
h += c_opt('dtl', 'Touchscreen lock', dsd_dtl_l, '', 0, 0, '');
h += c_rad('dor', 'Display orientation', ['normal', 'inverted', 'auto'], '')
} else if (a_m == 5) {
h += '<div class="row">';
h += c_txt('dtd', 'Day', '', ' col-4');
h += c_txt('dtmo', 'Month', '', ' col-4');
h += c_txt('dty', 'Year', '', ' col-4');
h += c_txt('dth', 'Hour', '', ' col-4');
h += c_txt('dtmi', 'Minute', '', ' col-4');
h += c_txt('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('mics', 'Microphone sensitivity', [20], '', 0, 1, '');
h += c_rad('them', 'Theatre mode', ['off', 'quiet'], '', '');
h += '<div class="form-group" id="fannl_fg">';
h += '<label for="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="fannl"></div>';
h += '<div class="col-3 col-sm-2 mt06 text-right">100%</div>';
h += '</div>';
h += '</div>';
h += c_rad('frqs', 'Frequency setup (Hz)', ['300', '600', '1200', '2400'], '', '');
h += '<div class="form-group">';
h += '<label for="frqa" class="col-form-label">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="frqa"></div>';
h += '<div class="col-5 col-sm-4 mt06 text-right" id="frq_bv"></div>';
h += '</div>';
h += '</div>';
h += c_rad('fanm', 'Fan mode', ['auto', 'high'], '', '');
h += c_rad('tmpu', 'Temperature unit', ['&deg;C', '&deg;F'], '', '')
} else if (a_m == 7) {
h += '<div class="row">';
h += c_rad('ccalm', 'Colour calibration mode', off_on_l, '', ' col-6');
h += c_rad('cmixm', 'Colour mixing mode', ['rgb', 'cmy'], '', ' col-6');
h += c_rad('chrwh', 'Chromatic white', off_on_l, '', ' col-12');
h += c_rad('thefs', 'Thungsten effect simulation', ['off', '750 W', '1000 W', '1200 W', '2000 W',
'2500 W'
], '', ' col-12');
h += c_rad('cdimc', 'Dimmer curve', ['linear', 'square law'], '', ' col-6')
} else if (a_m == 8) {
h += c_rad('lonof', 'Lamp status', off_on_l, '', '');
h += '<div class="form-group" id="ligde_fg">';
h += '<label for="ligde" class="col-form-label">Lamp ignition delay</label>';
h += '<div class="row">';
h +=
'<div class="col-9 col-sm-10"><input type="range" min="0" max="90" class="form-control" id="ligde"></div>';
h += '<div class="col-3 col-sm-2 mt06 text-right"></div>';
h += '</div>';
h += '</div>';
h += '<div class="row">';
h += c_rad('llise', 'Lamp light sensor', off_on_l, '', ' col-6');
h += c_rad('lonpon', 'Lamp on power on', off_on_l, '', ' col-6');
h += c_rad('lofvd', 'Lamp off via DMX', off_on_l, '', ' col-6');
h += c_rad('londp', 'Lamp on if DMX present', off_on_l, '', ' col-6');
h += c_rad('lofdm', 'Lamp off if DMX missing', off_on_l, '', ' col-6');
h += '</div>'
}
$('#m-b').html(h);
$('#m-f').show();
copy_form_values(1);
if (a_m == 8) {
if ($('#ligde_v').html() == 'off') {
$('#ligde').val(0)
}
}
$('#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)
});
if (a_m == 5) {
$('.uldt').bind('click', function () {
var date = new Date();
$('#dtd').val(date.getDate());
$('#dtmo').val(date.getMonth() + 1);
$('#dty').val(date.getFullYear());
$('#dth').val(('0' + date.getHours()).slice(-2));
$('#dtmi').val(('0' + date.getMinutes()).slice(-2));
$('#dts').val(('0' + date.getSeconds()).slice(-2))
})
} else if (a_m == 6) {
$('#fannl').on('input change', function () {
$(this).parent().next().html($(this).val() + '%')
});
$('#fannl').change();
$('input[name=them]').on('change', function () {
if ($('input[name=them]:checked').val() == 1) $('#fannl_fg').show();
else $('#fannl_fg').hide()
});
$('input[name=them]').change();
$('input[name=frqs]').eq(frq >> 12).attr('checked', 'checked');
$('#frqa').val(frq & 0xfff);
$('input[name=frqs]').on('change', function () {
frq = $('input[name=frqs]:checked').val() << 12;
frq |= 0x340;
$('#frqa').val(0x340);
$('#frq_bv').html(frq_s(frq) + ' Hz')
});
$('#frqa').on('input change', function () {
frq &= 0xf000;
frq |= $('#frqa').val();
$('#frq_bv').html(frq_s(frq) + ' Hz')
});
$('#frqa').change()
} else if (a_m == 8) {
$('#ligde').on('input change', function () {
var o = $(this).parent().next();
if ($(this).val() == 0) o.html('off');
else o.html($(this).val() + 's')
});
$('#ligde').change()
}
}
function frq_s(frq) {
var f = 360000000000;
var k = (0x700) - (frq & 0xfff);
var arr = 465 + ((k >> 8) & 0x0f);
var x = k & 0xff;
f = f * (1 << (frq >> 12)) / (arr * (256 - x) + (arr + 1) * (x));
return Math.floor(f / 10000) + '.' + ('0000' + Math.floor(f % 10000)).slice(-4)
}
</script>
</body>
</html>