Implemented value input in webserver

This commit is contained in:
2020-05-24 16:32:58 +02:00
parent 94630149c2
commit 3334bf3c3a

View File

@@ -83,7 +83,10 @@ void initWebserver()
}
else if (const auto *changeValueDisplay = currentDisplay->asChangeValueDisplayInterface())
{
content += "<input type=\"number\" value=\"" + String{changeValueDisplay->shownValue()} + "\" />";
content += "<form action=\"/setValue\" method=\"GET\">";
content += "<input type=\"number\" name=\"value\" value=\"" + String{changeValueDisplay->shownValue()} + "\" />";
content += "<button type=\"submit\">Update</button>";
content += "</form>";
}
else
{
@@ -134,6 +137,44 @@ void initWebserver()
webServer.send(302, "text/html", "ok");
});
webServer.on("/setValue", HTTP_GET, [](){
if (!webServer.hasArg("value"))
{
webServer.send(400, "text/plain", "value parameter missing");
return;
}
if (!currentDisplay)
{
webServer.send(400, "text/plain", "currentDisplay is null");
return;
}
auto *changeValueDisplay = currentDisplay->asChangeValueDisplayInterface();
if (!changeValueDisplay)
{
webServer.send(400, "text/plain", "currentDisplay is a change value display");
return;
}
const auto valueStr = webServer.arg("value");
char *egal;
const auto value = std::strtol(std::begin(valueStr), &egal, 10);
if (egal != std::end(valueStr))
{
webServer.send(400, "text/plain", "value could not be parsed");
return;
}
changeValueDisplay->setShownValue(value);
webServer.sendHeader("Connection", "close");
webServer.sendHeader("Location", "/");
webServer.send(302, "text/html", "ok");
});
webServer.begin();
}