Added changes to set.cpp and wled_server.cpp
This commit is contained in:
parent
3f8dc76f84
commit
4f1eb64ac6
@ -10,18 +10,17 @@
|
||||
margin: 0;
|
||||
}
|
||||
html {
|
||||
--h: 11.55vh;
|
||||
--h: 10.2vh;
|
||||
}
|
||||
button {
|
||||
background: #333;
|
||||
color: #fff;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
border: 0.3ch solid #333;
|
||||
display: inline-block;
|
||||
font-size: 8vmin;
|
||||
border: 1px solid #333;
|
||||
font-size: 6vmin;
|
||||
height: var(--h);
|
||||
width: 95%;
|
||||
margin-top: 2.4vh;
|
||||
margin-top: 2vh;
|
||||
}
|
||||
</style>
|
||||
<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!!
|
||||
const char PAGE_settings[] PROGMEM = R"=====(<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>WLED Settings
|
||||
</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>
|
||||
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"
|
||||
|
@ -31,8 +31,8 @@ bool isAsterisksOnly(const char* str, byte maxLen)
|
||||
void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
||||
{
|
||||
|
||||
//0: menu 1: wifi 2: leds 3: ui 4: sync 5: time 6: sec 7: DMX
|
||||
if (subPage <1 || subPage >7) return;
|
||||
//0: menu 1: wifi 2: leds 3: ui 4: sync 5: time 6: sec 7: DMX 8: usermods
|
||||
if (subPage <1 || subPage >8) return;
|
||||
|
||||
//WIFI SETTINGS
|
||||
if (subPage == 1)
|
||||
@ -407,6 +407,57 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
||||
}
|
||||
#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 == 4) alexaInit();
|
||||
}
|
||||
|
@ -314,6 +314,7 @@ String settingsProcessor(const String& var)
|
||||
{
|
||||
if (var == "CSS") {
|
||||
char buf[2048];
|
||||
buf[0] = 0;
|
||||
getSettingsJS(optionType, buf);
|
||||
return String(buf);
|
||||
}
|
||||
@ -365,6 +366,7 @@ void serveSettings(AsyncWebServerRequest* request, bool post)
|
||||
#ifdef WLED_ENABLE_DMX // include only if DMX is enabled
|
||||
else if (url.indexOf("dmx") > 0) subPage = 7;
|
||||
#endif
|
||||
else if (url.indexOf("um") > 0) subPage = 8;
|
||||
} else subPage = 255; //welcome page
|
||||
|
||||
if (subPage == 1 && wifiLock && otaLock)
|
||||
@ -386,6 +388,7 @@ void serveSettings(AsyncWebServerRequest* request, bool post)
|
||||
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 7: strcpy_P(s, PSTR("DMX")); break;
|
||||
case 8: strcpy_P(s, PSTR("Usermods")); break;
|
||||
}
|
||||
|
||||
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 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 8: request->send_P(200, "text/html", PAGE_settings_um , settingsProcessor); break;
|
||||
case 255: request->send_P(200, "text/html", PAGE_welcome); break;
|
||||
default: request->send_P(200, "text/html", PAGE_settings , settingsProcessor);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user