Added changes to set.cpp and wled_server.cpp
This commit is contained in:
parent
3f8dc76f84
commit
4f1eb64ac6
@ -10,18 +10,17 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
html {
|
html {
|
||||||
--h: 11.55vh;
|
--h: 10.2vh;
|
||||||
}
|
}
|
||||||
button {
|
button {
|
||||||
background: #333;
|
background: #333;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-family: Verdana, Helvetica, sans-serif;
|
font-family: Verdana, Helvetica, sans-serif;
|
||||||
border: 0.3ch solid #333;
|
border: 1px solid #333;
|
||||||
display: inline-block;
|
font-size: 6vmin;
|
||||||
font-size: 8vmin;
|
|
||||||
height: var(--h);
|
height: var(--h);
|
||||||
width: 95%;
|
width: 95%;
|
||||||
margin-top: 2.4vh;
|
margin-top: 2vh;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
|
@ -12,7 +12,7 @@ const char PAGE_settingsCss[] PROGMEM = R"=====(<style>body{font-family:Verdana,
|
|||||||
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
||||||
const char PAGE_settings[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>WLED Settings
|
const char PAGE_settings[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>WLED Settings
|
||||||
</title><style>
|
</title><style>
|
||||||
body{text-align:center;background:#222;height:100px;margin:0}html{--h:11.55vh}button{background:#333;color:#fff;font-family:Verdana,Helvetica,sans-serif;border:.3ch solid #333;display:inline-block;font-size:8vmin;height:var(--h);width:95%%;margin-top:2.4vh}
|
body{text-align:center;background:#222;height:100px;margin:0}html{--h:10.2vh}button{background:#333;color:#fff;font-family:Verdana,Helvetica,sans-serif;border:1px solid #333;font-size:6vmin;height:var(--h);width:95%%;margin-top:2vh}
|
||||||
</style><script>
|
</style><script>
|
||||||
function BB(){window.frameElement&&(document.getElementById("b").style.display="none",document.documentElement.style.setProperty("--h","13.86vh"))}
|
function BB(){window.frameElement&&(document.getElementById("b").style.display="none",document.documentElement.style.setProperty("--h","13.86vh"))}
|
||||||
</script></head><body onload="BB()"><form action="/"><button type="submit"
|
</script></head><body onload="BB()"><form action="/"><button type="submit"
|
||||||
|
@ -31,8 +31,8 @@ bool isAsterisksOnly(const char* str, byte maxLen)
|
|||||||
void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
||||||
{
|
{
|
||||||
|
|
||||||
//0: menu 1: wifi 2: leds 3: ui 4: sync 5: time 6: sec 7: DMX
|
//0: menu 1: wifi 2: leds 3: ui 4: sync 5: time 6: sec 7: DMX 8: usermods
|
||||||
if (subPage <1 || subPage >7) return;
|
if (subPage <1 || subPage >8) return;
|
||||||
|
|
||||||
//WIFI SETTINGS
|
//WIFI SETTINGS
|
||||||
if (subPage == 1)
|
if (subPage == 1)
|
||||||
@ -407,6 +407,57 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//USERMODS
|
||||||
|
if (subPage == 8)
|
||||||
|
{
|
||||||
|
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
|
||||||
|
JsonObject um = doc.createNestedObject("um");
|
||||||
|
|
||||||
|
size_t args = request->args();
|
||||||
|
uint j=0;
|
||||||
|
for (size_t i=0; i<args; i++) {
|
||||||
|
String name = request->argName(i);
|
||||||
|
String value = request->arg(i);
|
||||||
|
|
||||||
|
// POST request parameters are combined as <usermodname>_<usermodparameter>
|
||||||
|
uint8_t umNameEnd = name.indexOf("_");
|
||||||
|
if (!umNameEnd) break; // parameter does not contain "_" -> wrong
|
||||||
|
|
||||||
|
JsonObject mod = um[name.substring(0,umNameEnd)]; // get a usermod JSON object
|
||||||
|
if (mod.isNull()) {
|
||||||
|
mod = um.createNestedObject(name.substring(0,umNameEnd)); // if it does not exist create it
|
||||||
|
}
|
||||||
|
DEBUG_PRINT(name.substring(0,umNameEnd));
|
||||||
|
DEBUG_PRINT(":");
|
||||||
|
name = name.substring(umNameEnd+1); // remove mod name from string
|
||||||
|
|
||||||
|
// check if parameters represent array
|
||||||
|
if (name.endsWith("[]")) {
|
||||||
|
name.replace("[]","");
|
||||||
|
if (!mod[name].is<JsonArray>()) {
|
||||||
|
JsonArray ar = mod.createNestedArray(name);
|
||||||
|
ar.add(value);
|
||||||
|
j=0;
|
||||||
|
} else {
|
||||||
|
mod[name].add(value);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
DEBUG_PRINT(name);
|
||||||
|
DEBUG_PRINT("[");
|
||||||
|
DEBUG_PRINT(j);
|
||||||
|
DEBUG_PRINT("] = ");
|
||||||
|
DEBUG_PRINTLN(value);
|
||||||
|
} else {
|
||||||
|
mod.remove(name); // checkboxes get two fields (first is always "off", existence of second depends on checkmark and may be "on")
|
||||||
|
mod[name] = value;
|
||||||
|
DEBUG_PRINT(name);
|
||||||
|
DEBUG_PRINT(" = ");
|
||||||
|
DEBUG_PRINTLN(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
usermods.readFromConfig(um); // force change of usermod parameters
|
||||||
|
}
|
||||||
|
|
||||||
if (subPage != 2 && (subPage != 6 || !doReboot)) serializeConfig(); //do not save if factory reset or LED settings (which are saved after LED re-init)
|
if (subPage != 2 && (subPage != 6 || !doReboot)) serializeConfig(); //do not save if factory reset or LED settings (which are saved after LED re-init)
|
||||||
if (subPage == 4) alexaInit();
|
if (subPage == 4) alexaInit();
|
||||||
}
|
}
|
||||||
|
@ -314,6 +314,7 @@ String settingsProcessor(const String& var)
|
|||||||
{
|
{
|
||||||
if (var == "CSS") {
|
if (var == "CSS") {
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
|
buf[0] = 0;
|
||||||
getSettingsJS(optionType, buf);
|
getSettingsJS(optionType, buf);
|
||||||
return String(buf);
|
return String(buf);
|
||||||
}
|
}
|
||||||
@ -365,6 +366,7 @@ void serveSettings(AsyncWebServerRequest* request, bool post)
|
|||||||
#ifdef WLED_ENABLE_DMX // include only if DMX is enabled
|
#ifdef WLED_ENABLE_DMX // include only if DMX is enabled
|
||||||
else if (url.indexOf("dmx") > 0) subPage = 7;
|
else if (url.indexOf("dmx") > 0) subPage = 7;
|
||||||
#endif
|
#endif
|
||||||
|
else if (url.indexOf("um") > 0) subPage = 8;
|
||||||
} else subPage = 255; //welcome page
|
} else subPage = 255; //welcome page
|
||||||
|
|
||||||
if (subPage == 1 && wifiLock && otaLock)
|
if (subPage == 1 && wifiLock && otaLock)
|
||||||
@ -386,6 +388,7 @@ void serveSettings(AsyncWebServerRequest* request, bool post)
|
|||||||
case 5: strcpy_P(s, PSTR("Time")); break;
|
case 5: strcpy_P(s, PSTR("Time")); break;
|
||||||
case 6: strcpy_P(s, PSTR("Security")); strcpy_P(s2, PSTR("Rebooting, please wait ~10 seconds...")); break;
|
case 6: strcpy_P(s, PSTR("Security")); strcpy_P(s2, PSTR("Rebooting, please wait ~10 seconds...")); break;
|
||||||
case 7: strcpy_P(s, PSTR("DMX")); break;
|
case 7: strcpy_P(s, PSTR("DMX")); break;
|
||||||
|
case 8: strcpy_P(s, PSTR("Usermods")); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcat_P(s, PSTR(" settings saved."));
|
strcat_P(s, PSTR(" settings saved."));
|
||||||
@ -412,6 +415,7 @@ void serveSettings(AsyncWebServerRequest* request, bool post)
|
|||||||
case 5: request->send_P(200, "text/html", PAGE_settings_time, settingsProcessor); break;
|
case 5: request->send_P(200, "text/html", PAGE_settings_time, settingsProcessor); break;
|
||||||
case 6: request->send_P(200, "text/html", PAGE_settings_sec , settingsProcessor); break;
|
case 6: request->send_P(200, "text/html", PAGE_settings_sec , settingsProcessor); break;
|
||||||
case 7: request->send_P(200, "text/html", PAGE_settings_dmx , settingsProcessor); break;
|
case 7: request->send_P(200, "text/html", PAGE_settings_dmx , settingsProcessor); break;
|
||||||
|
case 8: request->send_P(200, "text/html", PAGE_settings_um , settingsProcessor); break;
|
||||||
case 255: request->send_P(200, "text/html", PAGE_welcome); break;
|
case 255: request->send_P(200, "text/html", PAGE_welcome); break;
|
||||||
default: request->send_P(200, "text/html", PAGE_settings , settingsProcessor);
|
default: request->send_P(200, "text/html", PAGE_settings , settingsProcessor);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user