mirror of
https://gitlab.com/zwirbel/illucat.git
synced 2025-12-15 17:58:20 +01:00
pixel plugin improvements, new ui
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"pin": 4,
|
"pin": 4,
|
||||||
"length": 3,
|
"length": 17,
|
||||||
"brightness": 32,
|
"brightness": 32,
|
||||||
"updateInterval": 150,
|
"updateInterval": 150,
|
||||||
"defaultColor": 100
|
"defaultColor": 100
|
||||||
|
|||||||
BIN
data/www/favicon-32x32.png
Normal file
BIN
data/www/favicon-32x32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
BIN
data/www/favicon.ico
Normal file
BIN
data/www/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -1,35 +1,75 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<script src="jquery-3.3.1.min.js"></script>
|
<title>ESP Kit</title>
|
||||||
<script src="script.js"></script>
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-32x32.png">
|
||||||
|
<link rel="stylesheet" type="text/css" href="styles.css">
|
||||||
|
<script src="script.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body class="sui">
|
||||||
<h1>Sprocket Config</h1>
|
<div class="content">
|
||||||
|
<form class="param-control container collapsible open" action="#" method="POST">
|
||||||
<button class="js-restart">Restart</button>
|
<span class="heading">Pixels</span>
|
||||||
<br>
|
<div class="content">
|
||||||
<br>
|
<ul>
|
||||||
<fieldset>
|
<li class="form-row ParamColor"
|
||||||
<legend>Network</legend>
|
data-name="color"
|
||||||
<form action="/config" method="post">
|
data-topic="pixels/color"
|
||||||
<input type="hidden" name="fileName" value="/config.json">
|
data-label="Color">
|
||||||
<textarea name="config" class="js-config" rows="20" cols="50"></textarea>
|
</li>
|
||||||
<br>
|
<li class="form-row ParamColor"
|
||||||
<input type="submit" value="Submit">
|
data-name="color"
|
||||||
</form>
|
data-topic="pixels/color2"
|
||||||
</fieldset>
|
data-label="Color 2">
|
||||||
<fieldset>
|
</li>
|
||||||
<legend>NeoPixel Config</legend>
|
<!-- data-entries='[{"text": "Color", "value": "0"}, {"text": "Rainbow", "value": "1"}, {"text": "TheaterChase", "value": "2"}, {"text": "Wipe", "value": "3"}, {"text": "Scanner", "value": "4"}, {"text": "Fade", "value": "5"}]' -->
|
||||||
<form action="/config" method="post">
|
<li class="form-row ParamSelect"
|
||||||
<input type="hidden" name="fileName" value="/pixelConfig.json">
|
data-label="Pattern"
|
||||||
<textarea name="config" class="js-config" rows="20" cols="50"></textarea>
|
data-name="pattern"
|
||||||
<br>
|
data-topic="pixels/pattern"
|
||||||
<input type="submit" value="Submit">
|
data-default="0"
|
||||||
</form>
|
data-entries='[{"text": "None", "value": "0"}, {"text": "Rainbow", "value": "1"}, {"text": "TheaterChase", "value": "2"}, {"text": "Fade", "value": "5"}]'
|
||||||
</fieldset>
|
></li>
|
||||||
|
<!-- <li class="form-row ParamSlider"
|
||||||
|
data-name="totalSteps"
|
||||||
|
data-min="1"
|
||||||
|
data-max="255"
|
||||||
|
data-value="255"
|
||||||
|
data-topic="pixels/totalSteps"
|
||||||
|
data-label="Total Steps">
|
||||||
|
</li> -->
|
||||||
|
<li class="form-row ParamSlider"
|
||||||
|
data-name="brightness"
|
||||||
|
data-min="0"
|
||||||
|
data-max="255"
|
||||||
|
data-value="64"
|
||||||
|
data-topic="pixels/brightness"
|
||||||
|
data-label="Brightness">
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div class="settings container collapsible">
|
||||||
|
<span class="heading">Settings</span>
|
||||||
|
<div class="content">
|
||||||
|
<h2>Network</h2>
|
||||||
|
<div class="Form" data-fileName="/config.json" data-name="configForm" data-from="/config.json" data-endpoint="/config"></div>
|
||||||
|
<h2>NeoPixel</h2>
|
||||||
|
<div class="Form" data-fileName="/pixelConfig.json" data-name="configForm" data-from="/pixelConfig.json" data-endpoint="/config"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="settings container collapsible">
|
||||||
|
<span class="heading">System</span>
|
||||||
|
<div class="content">
|
||||||
|
<div><label>Heap: </label><span class="js-heap"></span><span> bytes</span><br><br></div>
|
||||||
|
<button class="js-restart">Restart</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
2
data/www/jquery-3.3.1.min.js
vendored
2
data/www/jquery-3.3.1.min.js
vendored
File diff suppressed because one or more lines are too long
12190
data/www/script.js
12190
data/www/script.js
File diff suppressed because it is too large
Load Diff
290
data/www/styles.css
Normal file
290
data/www/styles.css
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.shown {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.disabled {
|
||||||
|
opacity: 0.65;
|
||||||
|
}
|
||||||
|
.sui {
|
||||||
|
background: #000000;
|
||||||
|
color: #0eb8c0;
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.sui * {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
.sui > .content {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.sui label {
|
||||||
|
color: #b3b2b2;
|
||||||
|
}
|
||||||
|
.sui button {
|
||||||
|
background: #097479;
|
||||||
|
color: #eeeeee;
|
||||||
|
font-size: 0.9em;
|
||||||
|
border: 0;
|
||||||
|
padding: .8em;
|
||||||
|
margin: 0 .4em;
|
||||||
|
}
|
||||||
|
.heading {
|
||||||
|
font-size: 1.2em;
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.sui h2 {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
background: #333333;
|
||||||
|
padding: 16px;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: solid 1px #555555;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.container.collapsible > .heading {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.container.collapsible > .heading:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.container.collapsible > .content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.container.collapsible.open > .heading {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.container.collapsible.open > .content {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
input[type=range] {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
width: 100%;
|
||||||
|
margin: 8.4px 0;
|
||||||
|
padding: 0 !important;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
input[type=range]:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
input[type=range]::-webkit-slider-runnable-track {
|
||||||
|
width: 100%;
|
||||||
|
height: 3.2px;
|
||||||
|
cursor: pointer;
|
||||||
|
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
|
||||||
|
background: #097479;
|
||||||
|
border-radius: 1.3px;
|
||||||
|
border: 0.2px solid #010101;
|
||||||
|
}
|
||||||
|
input[type=range]::-webkit-slider-thumb {
|
||||||
|
box-shadow: 0.6px 0.6px 2.8px #000000, 0px 0px 0.6px #0d0d0d;
|
||||||
|
border: 0.4px solid #000000;
|
||||||
|
height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
border-radius: 50px;
|
||||||
|
background: #0eb8c0;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
margin-top: -8.6px;
|
||||||
|
}
|
||||||
|
input[type=range]:focus::-webkit-slider-runnable-track {
|
||||||
|
background: #0eb4bb;
|
||||||
|
}
|
||||||
|
input[type=range]::-moz-range-track {
|
||||||
|
width: 100%;
|
||||||
|
height: 3.2px;
|
||||||
|
cursor: pointer;
|
||||||
|
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
|
||||||
|
background: #097479;
|
||||||
|
border-radius: 1.3px;
|
||||||
|
border: 0.2px solid #010101;
|
||||||
|
}
|
||||||
|
input[type=range]::-moz-range-thumb {
|
||||||
|
box-shadow: 0.6px 0.6px 2.8px #000000, 0px 0px 0.6px #0d0d0d;
|
||||||
|
border: 0.4px solid #000000;
|
||||||
|
height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
border-radius: 50px;
|
||||||
|
background: #0eb8c0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
input[type=range]::-ms-track {
|
||||||
|
width: 100%;
|
||||||
|
height: 3.2px;
|
||||||
|
cursor: pointer;
|
||||||
|
background: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
input[type=range]::-ms-fill-lower {
|
||||||
|
background: #043437;
|
||||||
|
border: 0.2px solid #010101;
|
||||||
|
border-radius: 2.6px;
|
||||||
|
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
|
||||||
|
}
|
||||||
|
input[type=range]::-ms-fill-upper {
|
||||||
|
background: #097479;
|
||||||
|
border: 0.2px solid #010101;
|
||||||
|
border-radius: 2.6px;
|
||||||
|
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
|
||||||
|
}
|
||||||
|
input[type=range]::-ms-thumb {
|
||||||
|
box-shadow: 0.6px 0.6px 2.8px #000000, 0px 0px 0.6px #0d0d0d;
|
||||||
|
border: 0.4px solid #000000;
|
||||||
|
height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
border-radius: 50px;
|
||||||
|
background: #0eb8c0;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 3.2px;
|
||||||
|
}
|
||||||
|
input[type=range]:focus::-ms-fill-lower {
|
||||||
|
background: #097479;
|
||||||
|
}
|
||||||
|
input[type=range]:focus::-ms-fill-upper {
|
||||||
|
background: #0eb4bb;
|
||||||
|
}
|
||||||
|
/* The switch - the box around the slider */
|
||||||
|
.switch {
|
||||||
|
position: relative;
|
||||||
|
display: inline;
|
||||||
|
/* The slider */
|
||||||
|
/* Rounded sliders */
|
||||||
|
}
|
||||||
|
.switch input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.switch .slider {
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: #7b7b7b;
|
||||||
|
-webkit-transition: .4s;
|
||||||
|
transition: .4s;
|
||||||
|
margin-left: -50px;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
.switch .slider:before {
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
height: 26px;
|
||||||
|
width: 26px;
|
||||||
|
left: 4px;
|
||||||
|
bottom: 4px;
|
||||||
|
background-color: white;
|
||||||
|
-webkit-transition: .4s;
|
||||||
|
transition: .4s;
|
||||||
|
}
|
||||||
|
.switch input:checked + .slider {
|
||||||
|
background-color: #097479;
|
||||||
|
}
|
||||||
|
.switch input:focus + .slider {
|
||||||
|
box-shadow: 0 0 1px #0eb8c0;
|
||||||
|
}
|
||||||
|
.switch input:checked + .slider:before {
|
||||||
|
-webkit-transform: translateX(26px);
|
||||||
|
-ms-transform: translateX(26px);
|
||||||
|
transform: translateX(26px);
|
||||||
|
}
|
||||||
|
.switch .slider.round {
|
||||||
|
border-radius: 34px;
|
||||||
|
height: 34px;
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
.switch .slider.round:before {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
form .form-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding: .2em;
|
||||||
|
}
|
||||||
|
form .form-row > label {
|
||||||
|
padding: .5em 1em .5em 0;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
form .form-row > label + label {
|
||||||
|
flex: 0;
|
||||||
|
}
|
||||||
|
form .form-row > label.switch + label {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
form .form-row > input {
|
||||||
|
flex: 2;
|
||||||
|
}
|
||||||
|
form .form-row > span {
|
||||||
|
flex: 2;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
form .form-row input[type="checkbox"] {
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 768px) {
|
||||||
|
form .form-row > input,
|
||||||
|
form .form-row > span {
|
||||||
|
flex: 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 992px) {
|
||||||
|
form .form-row > input,
|
||||||
|
form .form-row > span {
|
||||||
|
flex: 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 1200px) {
|
||||||
|
form .form-row > input,
|
||||||
|
form .form-row > span {
|
||||||
|
flex: 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sui input[type="text"],
|
||||||
|
.sui input[type="password"] {
|
||||||
|
height: 16px;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
color: #eeeeee;
|
||||||
|
border-bottom: solid 1px #097479;
|
||||||
|
}
|
||||||
|
.sui input[type="text"]:focus,
|
||||||
|
.sui input[type="password"]:focus,
|
||||||
|
.sui input[type="text"]:hover,
|
||||||
|
.sui input[type="password"]:hover {
|
||||||
|
outline: none;
|
||||||
|
border-bottom: 1px solid #0eb8c0;
|
||||||
|
}
|
||||||
|
.sui input[type="checkbox"] {
|
||||||
|
transform: scale(2);
|
||||||
|
}
|
||||||
|
.ColorPicker {
|
||||||
|
flex: none !important;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
height: 42px;
|
||||||
|
width: 42px;
|
||||||
|
}
|
||||||
|
.sui select {
|
||||||
|
padding: .5em;
|
||||||
|
color: #eeeeee;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
border-bottom: solid 1px #097479;
|
||||||
|
}
|
||||||
|
.sui select:focus,
|
||||||
|
.sui select:hover {
|
||||||
|
outline: none;
|
||||||
|
border: none;
|
||||||
|
border-bottom: solid 1px #0eb8c0 !important;
|
||||||
|
}
|
||||||
|
.sui select option {
|
||||||
|
background: #333333;
|
||||||
|
}
|
||||||
@@ -39,4 +39,4 @@ lib_deps = ${common.lib_deps}
|
|||||||
ESPAsyncTCP
|
ESPAsyncTCP
|
||||||
Adafruit NeoPixel
|
Adafruit NeoPixel
|
||||||
DNSServer
|
DNSServer
|
||||||
https://gitlab.com/wirelos/sprocket-core.git#mediator
|
https://gitlab.com/wirelos/sprocket-core.git#develop
|
||||||
@@ -46,10 +46,11 @@ class PixelPlugin : public Plugin {
|
|||||||
pixels->show();
|
pixels->show();
|
||||||
}
|
}
|
||||||
void setColor(String msg){
|
void setColor(String msg){
|
||||||
|
pixels->ActivePattern = NONE;
|
||||||
pixels->Color1 = atoi(msg.c_str());
|
pixels->Color1 = atoi(msg.c_str());
|
||||||
if(pixels->ActivePattern == NONE){
|
//if(pixels->ActivePattern == NONE){
|
||||||
pixels->ColorSet(pixels->Color1);
|
pixels->ColorSet(pixels->Color1);
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
void setColor2(String msg){
|
void setColor2(String msg){
|
||||||
pixels->Color2 = atoi(msg.c_str());
|
pixels->Color2 = atoi(msg.c_str());
|
||||||
|
|||||||
Reference in New Issue
Block a user