Compare commits
3 commits
0bb586b28c
...
5415e7df91
Author | SHA1 | Date | |
---|---|---|---|
5415e7df91 | |||
46beff09fe | |||
ec71d1b553 |
3 changed files with 109 additions and 17 deletions
include/Webserver
|
@ -9,6 +9,10 @@
|
|||
#include "Page_grow_HTML.h"
|
||||
|
||||
|
||||
/* dirty tmpParam hack again */
|
||||
byte tmpParam_editGaugeId = 255;
|
||||
|
||||
|
||||
/* subnav processor */
|
||||
const byte WEB_GROW_SUBNAV_GENERAL = 1;
|
||||
const byte WEB_GROW_SUBNAV_LIGHT = 2;
|
||||
|
@ -967,18 +971,24 @@ String Proc_WebPage_grow_dashboard(const String& var) {
|
|||
html += F("</td><td>");
|
||||
html += config.system.sensor.name[config.grow.dashboard.gaugeSensor[i]];
|
||||
html += F("</td><td>");
|
||||
html += FPSTR(Sensor_Read_descr[config.grow.dashboard.gaugeRead[i]]);
|
||||
html += FPSTR(Sensor_Read_descr[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
html += F("</td><td>");
|
||||
// edit button
|
||||
html += F("<form class='linkForm' action='/grow/dashboard/gaugeAdd' method='get'>");
|
||||
html += F("<input type='hidden' name='edit' value='");
|
||||
html += i;
|
||||
html += F("'>");
|
||||
html += F("<input type='submit' value='✏️' title='Edit'></form> ");
|
||||
// delete button
|
||||
html += F("<form class='linkForm' action='/grow/dashboard/' method='post'>");
|
||||
html += F("<input type='hidden' name='delete_gauge' value='");
|
||||
html += i;
|
||||
html += F("'>");
|
||||
html += F("<input type='submit' value='❌' onclick=\"return confirmDelete('");
|
||||
html += F("gauge for");
|
||||
html += F("gauge for ");
|
||||
html += config.system.sensor.name[config.grow.dashboard.gaugeSensor[i]];
|
||||
html += F(" ");
|
||||
html += FPSTR(Sensor_Read_descr[config.grow.dashboard.gaugeRead[i]]);
|
||||
html += FPSTR(Sensor_Read_descr[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
html += F("')\" title='Delete'></form>");
|
||||
html += F("</td></tr>");
|
||||
}
|
||||
|
@ -1042,7 +1052,12 @@ void WebPage_grow_dashboard(AsyncWebServerRequest *request) {
|
|||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_HTML, Proc_WebPage_grow_dashboard_POST);
|
||||
|
||||
} else {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_HTML, Proc_WebPage_grow_dashboard);
|
||||
if(request->hasParam("success")) {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_HTML, Proc_WebPage_grow_dashboard_POST);
|
||||
} else {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_HTML, Proc_WebPage_grow_dashboard);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1068,12 +1083,6 @@ String Proc_WebPage_grow_dashboard_gaugeAdd(const String& var) {
|
|||
return FPSTR(Common_HTML_ACTION_ADD);
|
||||
} else if(var == "GAUGE_ID") {
|
||||
return String(Give_Free_Dashboard_GaugeId());
|
||||
} else if(var == "SENSOR_ID") {
|
||||
String html;
|
||||
return html;
|
||||
} else if(var == "READ_ID") {
|
||||
String html;
|
||||
return html;
|
||||
} else if(var == "SELECT_SENSOR_READ") {
|
||||
String html;
|
||||
html += Html_SelectOpt_Sensor_Read();
|
||||
|
@ -1083,6 +1092,36 @@ String Proc_WebPage_grow_dashboard_gaugeAdd(const String& var) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
String Proc_WebPage_grow_dashboard_gaugeAddEdit(const String& var) {
|
||||
const static char LogLoc[] PROGMEM = "[Webserver:grow:dashboard:gaugeAdd(Proc)]";
|
||||
|
||||
if(TestHeaderFooter(var)) {
|
||||
return AddHeaderFooter(var, 1);
|
||||
} else if(Test_WebPage_grow_SUBNAV(var)) {
|
||||
return Proc_WebPage_grow_SUBNAV(var, WEB_GROW_SUBNAV_DASHBOARD);
|
||||
} else if(var == "ACTION") {
|
||||
return FPSTR(Common_HTML_ACTION_ADD);
|
||||
} else if(var == "GAUGE_ID") {
|
||||
return String(tmpParam_editGaugeId);
|
||||
} else if(var == "SELECT_SENSOR_READ") {
|
||||
String html;
|
||||
html += Html_SelectOpt_Sensor_Read(config.grow.dashboard.gaugeSensor[tmpParam_editGaugeId], config.grow.dashboard.gaugeRead[tmpParam_editGaugeId]);
|
||||
return html;
|
||||
} else if(var == "SENSOR_ID") {
|
||||
return String(config.grow.dashboard.gaugeSensor[tmpParam_editGaugeId]);
|
||||
} else if(var == "READ_ID") {
|
||||
return String(config.grow.dashboard.gaugeRead[tmpParam_editGaugeId]);
|
||||
} else if(var == "MIN") {
|
||||
return String(config.grow.dashboard.gaugeMin[tmpParam_editGaugeId]);
|
||||
} else if(var == "MAX") {
|
||||
return String(config.grow.dashboard.gaugeMax[tmpParam_editGaugeId]);
|
||||
} else {
|
||||
return String();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String Proc_WebPage_grow_dashboard_gaugeAdd_POST(const String& var) {
|
||||
/* This is the processor for POST
|
||||
* Its exactly the same, just looking for SAVE_MSG string.
|
||||
|
@ -1104,11 +1143,55 @@ void WebPage_grow_dashboard_gaugeAdd(AsyncWebServerRequest *request) {
|
|||
|
||||
/* Which kind of Request */
|
||||
if(request->method() == HTTP_POST) {
|
||||
byte gaugeId;
|
||||
|
||||
if(request->hasParam("gaugeId", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("gaugeId", true);
|
||||
gaugeId = param->value().toInt();
|
||||
/* set gaugeId to configured = true */
|
||||
config.grow.dashboard.gaugeConfigured[gaugeId] = true;
|
||||
}
|
||||
|
||||
if(request->hasParam("gaugeSensor", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("gaugeSensor", true);
|
||||
config.grow.dashboard.gaugeSensor[gaugeId] = param->value().toInt();
|
||||
}
|
||||
|
||||
if(request->hasParam("gaugeRead", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("gaugeRead", true);
|
||||
config.grow.dashboard.gaugeRead[gaugeId] = param->value().toInt();
|
||||
}
|
||||
|
||||
if(request->hasParam("gaugeMin", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("gaugeMin", true);
|
||||
config.grow.dashboard.gaugeMin[gaugeId] = param->value().toInt();
|
||||
}
|
||||
|
||||
if(request->hasParam("gaugeMax", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("gaugeMax", true);
|
||||
config.grow.dashboard.gaugeMax[gaugeId] = param->value().toInt();
|
||||
}
|
||||
|
||||
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML, Proc_WebPage_grow_dashboard_gaugeAdd_POST);
|
||||
SaveConfig();
|
||||
request->redirect("/grow/dashboard/?success");
|
||||
//request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML, Proc_WebPage_grow_dashboard_gaugeAdd_POST);
|
||||
|
||||
} else {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML, Proc_WebPage_grow_dashboard_gaugeAdd);
|
||||
/* GET REQUEST */
|
||||
/* when in edit mode */
|
||||
if(request->hasParam("edit")) {
|
||||
const AsyncWebParameter* param = request->getParam("edit");
|
||||
tmpParam_editGaugeId = param->value().toInt();
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML, Proc_WebPage_grow_dashboard_gaugeAddEdit);
|
||||
/* if we want to add new sensor, check if a sensor id is available. if not send error */
|
||||
} else if(Give_Free_SensorId() > Max_Sensors) {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML_NO_ID_AVAILABLE, Proc_WebPage_grow_dashboard_gaugeAdd);
|
||||
/* Otherwise let the user create new sensor */
|
||||
} else {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML, Proc_WebPage_grow_dashboard_gaugeAdd);
|
||||
}
|
||||
|
||||
//request->send_P(200, TEXT_HTML, Page_grow_dashboard_gaugeAdd_HTML, Proc_WebPage_grow_dashboard_gaugeAdd);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@ const char Page_grow_dashboard_gaugeAdd_HTML[] PROGMEM = R"(%HEADER%
|
|||
%SUBNAV%
|
||||
%SAVE_MSG%
|
||||
|
||||
<h3>%ACTION% Gauge Id %GAUGE_ID%</h3>
|
||||
<h3>%ACTION% Gauge ID %GAUGE_ID%</h3>
|
||||
<p>Select which Sensor Reading to use for the gauge<br></p>
|
||||
|
||||
<form method='post' action='/grow/dashboard/gaugeAdd'>
|
||||
|
@ -155,12 +155,21 @@ const char Page_grow_dashboard_gaugeAdd_HTML[] PROGMEM = R"(%HEADER%
|
|||
</select><br>
|
||||
|
||||
<u>Min</u><br>
|
||||
<input type='number' name='min' step='1' value='%MIN%' required><br>
|
||||
<input type='number' name='gaugeMin' step='1' value='%MIN%' required><br>
|
||||
|
||||
<u>Max</u><br>
|
||||
<input type='number' name='min' step='1' value='%MAX%' required><br>
|
||||
<input type='number' name='gaugeMax' step='1' value='%MAX%' required><br>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<input type='submit' value='💾 Save settings'>
|
||||
|
||||
%FOOTER% )";
|
||||
|
||||
|
||||
const char Page_grow_dashboard_gaugeAdd_HTML_NO_ID_AVAILABLE[] PROGMEM = R"(%HEADER%
|
||||
%SUBNAV%
|
||||
%SAVE_MSG%
|
||||
|
||||
<h3>You cannot create more gauges, limit reached.</h3>
|
||||
|
||||
%FOOTER% )";
|
||||
|
|
|
@ -1389,7 +1389,7 @@ void WebPage_system_sensor_add(AsyncWebServerRequest *request) {
|
|||
// I like it more when user gets redirected to the output overview after saving
|
||||
request->redirect("/system/sensor/?success");
|
||||
} else {
|
||||
|
||||
/* GET REQUEST */
|
||||
/* when in edit mode */
|
||||
if(request->hasParam("edit")) {
|
||||
const AsyncWebParameter* param = request->getParam("edit");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue