dashboard gauge settings wip
This commit is contained in:
parent
55c5dad2ee
commit
393812cf85
2 changed files with 196 additions and 6 deletions
include/Webserver
|
@ -12,6 +12,7 @@
|
|||
/* dirty tmpParam hack again */
|
||||
byte tmpParam_editGaugeId = 255;
|
||||
byte tmpParam_editChartId = 255;
|
||||
byte tmpParam_editDataId = 255;
|
||||
|
||||
/* subnav processor */
|
||||
const byte WEB_GROW_SUBNAV_GENERAL = 1;
|
||||
|
@ -972,16 +973,20 @@ String Proc_WebPage_grow_dashboard(const String& var) {
|
|||
html += config.system.sensor.name[config.grow.dashboard.gaugeSensor[i]];
|
||||
html += F("</td><td>");
|
||||
//html += FPSTR(Sensor_Read_descr[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
|
||||
String unit;
|
||||
/* when RAW convert is set, use this for description. Otherwise use RAW*/
|
||||
if((SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]] == SENSOR_READ_TYPE_RAW) && (config.system.sensor.rawConvert[config.grow.dashboard.gaugeSensor[i]][config.grow.dashboard.gaugeRead[i]] > 0)) {
|
||||
html += FPSTR(Sensor_Convert_Raw_descr[config.system.sensor.rawConvert[config.grow.dashboard.gaugeSensor[i]][config.grow.dashboard.gaugeRead[i]]]);
|
||||
unit = FPSTR(Sensor_Convert_Raw_unit[config.system.sensor.rawConvert[config.grow.dashboard.gaugeSensor[i]][config.grow.dashboard.gaugeRead[i]]]); //FPSTR(Sensor_Read_unit[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
} else {
|
||||
html += FPSTR(Sensor_Read_descr[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
unit = FPSTR(Sensor_Read_unit[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
}
|
||||
html += F("</td><td>");
|
||||
html += Sensor_getCalibratedValue(config.grow.dashboard.gaugeSensor[i], config.grow.dashboard.gaugeRead[i]);
|
||||
html += " ";
|
||||
String unit = FPSTR(Sensor_Read_unit[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
|
||||
unit.replace(F("%"), F("%"));
|
||||
html += unit;
|
||||
html += F("</td><td>");
|
||||
|
@ -1026,12 +1031,16 @@ String html;
|
|||
html += F("</td><td>");
|
||||
html += config.system.sensor.name[config.grow.dashboard.chartSensor[i]];
|
||||
html += F("</td><td>");
|
||||
|
||||
String unit;
|
||||
//html += FPSTR(Sensor_Read_descr[SensorIndex[config.system.sensor.type[config.grow.dashboard.gaugeSensor[i]]].read[config.grow.dashboard.gaugeRead[i]]]);
|
||||
/* when RAW convert is set, use this for description. Otherwise use RAW*/
|
||||
if((SensorIndex[config.system.sensor.type[config.grow.dashboard.chartSensor[i]]].read[config.grow.dashboard.chartRead[i]] == SENSOR_READ_TYPE_RAW) && (config.system.sensor.rawConvert[config.grow.dashboard.chartSensor[i]][config.grow.dashboard.chartRead[i]] > 0)) {
|
||||
html += FPSTR(Sensor_Convert_Raw_descr[config.system.sensor.rawConvert[config.grow.dashboard.chartSensor[i]][config.grow.dashboard.chartRead[i]]]);
|
||||
unit = FPSTR(Sensor_Convert_Raw_unit[config.system.sensor.rawConvert[config.grow.dashboard.chartSensor[i]][config.grow.dashboard.chartRead[i]]]);
|
||||
} else {
|
||||
html += FPSTR(Sensor_Read_descr[SensorIndex[config.system.sensor.type[config.grow.dashboard.chartSensor[i]]].read[config.grow.dashboard.chartRead[i]]]);
|
||||
unit = FPSTR(Sensor_Read_unit[SensorIndex[config.system.sensor.type[config.grow.dashboard.chartSensor[i]]].read[config.grow.dashboard.chartRead[i]]]);
|
||||
}
|
||||
html += F("</td><td style='background-color: ");
|
||||
html += config.grow.dashboard.chartColor[i];
|
||||
|
@ -1039,7 +1048,7 @@ String html;
|
|||
//html += config.grow.dashboard.chartColor[i];
|
||||
html += Sensor_getCalibratedValue(config.grow.dashboard.chartSensor[i], config.grow.dashboard.chartRead[i]);
|
||||
html += " ";
|
||||
String unit = FPSTR(Sensor_Read_unit[SensorIndex[config.system.sensor.type[config.grow.dashboard.chartSensor[i]]].read[config.grow.dashboard.chartRead[i]]]);
|
||||
|
||||
unit.replace(F("%"), F("%"));
|
||||
html += unit;
|
||||
html += F("</td><td>");
|
||||
|
@ -1129,6 +1138,21 @@ void WebPage_grow_dashboard(AsyncWebServerRequest *request) {
|
|||
config.grow.dashboard.chartConfigured[chartId] = false;
|
||||
config.grow.dashboard.chartSensor[chartId] = 0;
|
||||
config.grow.dashboard.chartRead[chartId] = 0;
|
||||
memset(config.grow.dashboard.chartColor[chartId], '\0', sizeof config.grow.dashboard.chartColor[chartId]);
|
||||
|
||||
SaveConfig();
|
||||
Log.notice(F("%s config saved" CR), LogLoc);
|
||||
} else if(request->hasParam("delete_data", true)) {
|
||||
byte dataId;
|
||||
|
||||
const AsyncWebParameter* param = request->getParam("delete_data", true);
|
||||
dataId = param->value().toInt();
|
||||
|
||||
// we ensure that every field is empty
|
||||
config.grow.dashboard.dataConfigured[dataId] = false;
|
||||
config.grow.dashboard.dataSensor[dataId] = 0;
|
||||
config.grow.dashboard.dataRead[dataId] = 0;
|
||||
//memset(config.grow.dashboard.chartColor[dataId], '\0', sizeof config.grow.dashboard.chartColor[dataId]);
|
||||
|
||||
SaveConfig();
|
||||
Log.notice(F("%s config saved" CR), LogLoc);
|
||||
|
@ -1305,7 +1329,7 @@ String Proc_WebPage_grow_dashboard_chartAdd(const String& 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") {
|
||||
} else if(var == "CHART_ID") {
|
||||
return String(Give_Free_Dashboard_ChartId());
|
||||
} else if(var == "SELECT_SENSOR_READ") {
|
||||
String html;
|
||||
|
@ -1326,7 +1350,7 @@ String Proc_WebPage_grow_dashboard_chartAddEdit(const String& 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") {
|
||||
} else if(var == "CHART_ID") {
|
||||
return String(tmpParam_editChartId);
|
||||
} else if(var == "SELECT_SENSOR_READ") {
|
||||
String html;
|
||||
|
@ -1412,3 +1436,126 @@ void WebPage_grow_dashboard_chartAdd(AsyncWebServerRequest *request) {
|
|||
//request->send_P(200, TEXT_HTML, Page_grow_dashboard_chartAdd_HTML, Proc_WebPage_grow_dashboard_chartAdd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* grow dashboards dataAdd page
|
||||
*/
|
||||
String Proc_WebPage_grow_dashboard_dataAdd(const String& var) {
|
||||
const static char LogLoc[] PROGMEM = "[Webserver:grow:dashboard:dataAdd(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 == "CHART_ID") {
|
||||
return String(Give_Free_Dashboard_DataId());
|
||||
} else if(var == "SELECT_SENSOR_READ") {
|
||||
String html;
|
||||
html += Html_SelectOpt_Sensor_Read();
|
||||
return html;
|
||||
} else {
|
||||
return String();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String Proc_WebPage_grow_dashboard_dataAddEdit(const String& var) {
|
||||
const static char LogLoc[] PROGMEM = "[Webserver:grow:dashboard:dataAdd(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 == "CHART_ID") {
|
||||
return String(tmpParam_editDataId);
|
||||
} else if(var == "SELECT_SENSOR_READ") {
|
||||
String html;
|
||||
html += Html_SelectOpt_Sensor_Read(config.grow.dashboard.dataSensor[tmpParam_editDataId], config.grow.dashboard.dataRead[tmpParam_editDataId]);
|
||||
return html;
|
||||
} else if(var == "SENSOR_ID") {
|
||||
return String(config.grow.dashboard.dataSensor[tmpParam_editDataId]);
|
||||
} else if(var == "READ_ID") {
|
||||
return String(config.grow.dashboard.dataRead[tmpParam_editDataId]);
|
||||
} else {
|
||||
return String();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
String Proc_WebPage_grow_dashboard_dataAdd_POST(const String& var) {
|
||||
/* This is the processor for POST
|
||||
* Its exactly the same, just looking for SAVE_MSG string.
|
||||
* If nothing matches, it calles the main Proc_WebPage_grow()
|
||||
* processor function, so all the other stuff like header and so
|
||||
* on get replaced
|
||||
*/
|
||||
if(var == "SAVE_MSG") {
|
||||
return String(Common_HTML_SAVE_MSG);
|
||||
} else {
|
||||
return Proc_WebPage_grow_dashboard(var);
|
||||
}
|
||||
}
|
||||
|
||||
/* WebPage function */
|
||||
void WebPage_grow_dashboard_dataAdd(AsyncWebServerRequest *request) {
|
||||
const static char LogLoc[] PROGMEM = "[Webserver:grow:dashboard:dataAdd]";
|
||||
|
||||
|
||||
/* Which kind of Request */
|
||||
if(request->method() == HTTP_POST) {
|
||||
byte dataId;
|
||||
|
||||
if(request->hasParam("dataId", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("dataId", true);
|
||||
dataId = param->value().toInt();
|
||||
/* set dataId to configured = true */
|
||||
config.grow.dashboard.dataConfigured[dataId] = true;
|
||||
}
|
||||
|
||||
if(request->hasParam("dataSensor", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("dataSensor", true);
|
||||
config.grow.dashboard.dataSensor[dataId] = param->value().toInt();
|
||||
}
|
||||
|
||||
if(request->hasParam("dataRead", true)) {
|
||||
const AsyncWebParameter* param = request->getParam("dataRead", true);
|
||||
config.grow.dashboard.dataRead[dataId] = param->value().toInt();
|
||||
}
|
||||
|
||||
//if(request->hasParam("dataColor", true)) {
|
||||
//const AsyncWebParameter* param = request->getParam("dataColor", true);
|
||||
//strlcpy(config.grow.dashboard.dataColor[dataId], param->value().c_str(), sizeof(config.grow.dashboard.dataColor[dataId]));
|
||||
//}
|
||||
|
||||
|
||||
SaveConfig();
|
||||
request->redirect("/grow/dashboard/?success");
|
||||
//request->send_P(200, TEXT_HTML, Page_grow_dashboard_dataAdd_HTML, Proc_WebPage_grow_dashboard_dataAdd_POST);
|
||||
|
||||
} else {
|
||||
/* GET REQUEST */
|
||||
/* when in edit mode */
|
||||
if(request->hasParam("edit")) {
|
||||
const AsyncWebParameter* param = request->getParam("edit");
|
||||
tmpParam_editDataId = param->value().toInt();
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_dataAdd_HTML, Proc_WebPage_grow_dashboard_dataAddEdit);
|
||||
/* 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_dataAdd_HTML_NO_ID_AVAILABLE, Proc_WebPage_grow_dashboard_dataAdd);
|
||||
/* Otherwise let the user create new sensor */
|
||||
} else {
|
||||
request->send_P(200, TEXT_HTML, Page_grow_dashboard_dataAdd_HTML, Proc_WebPage_grow_dashboard_dataAdd);
|
||||
}
|
||||
|
||||
//request->send_P(200, TEXT_HTML, Page_grow_dashboard_dataAdd_HTML, Proc_WebPage_grow_dashboard_dataAdd);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -184,11 +184,11 @@ const char Page_grow_dashboard_chartAdd_HTML[] PROGMEM = R"(%HEADER%
|
|||
%SUBNAV%
|
||||
%SAVE_MSG%
|
||||
|
||||
<h3>%ACTION% Chart ID %GAUGE_ID%</h3>
|
||||
<h3>%ACTION% Chart ID %CHART_ID%</h3>
|
||||
<p>Select which Sensor Reading to use for the chart<br></p>
|
||||
|
||||
<form method='post' action='/grow/dashboard/chartAdd'>
|
||||
<input type='hidden' name='chartId' value='%GAUGE_ID%' />
|
||||
<input type='hidden' name='chartId' value='%CHART_ID%' />
|
||||
|
||||
<div>
|
||||
<u>Sensor Reading</u>:<br>
|
||||
|
@ -217,3 +217,46 @@ const char Page_grow_dashboard_chartAdd_HTML_NO_ID_AVAILABLE[] PROGMEM = R"(%HEA
|
|||
<h3>You cannot create more charts, limit reached.</h3>
|
||||
|
||||
%FOOTER% )";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* /grow/dashboard/dataAdd page */
|
||||
const char Page_grow_dashboard_dataAdd_HTML[] PROGMEM = R"(%HEADER%
|
||||
%SUBNAV%
|
||||
%SAVE_MSG%
|
||||
|
||||
<h3>%ACTION% Data ID %DATA_ID%</h3>
|
||||
<p>Select which Sensor Reading to use for the data<br></p>
|
||||
|
||||
<form method='post' action='/grow/dashboard/dataAdd'>
|
||||
<input type='hidden' name='dataId' value='%DATA_ID%' />
|
||||
|
||||
<div>
|
||||
<u>Sensor Reading</u>:<br>
|
||||
<input type='hidden' name='dataSensor' value='%SENSOR_ID%' id='dataSensor' />
|
||||
<input type='hidden' name='dataRead' value='%READ_ID%' id='dataRead' />
|
||||
|
||||
<select name='controlBy' id='selSensor' onChange="GrowSelectControlSensorRead('selSensor', 'dataSensor', 'dataRead');" required>
|
||||
<option value='' selected hidden >---</option>
|
||||
%SELECT_SENSOR_READ%
|
||||
</select><br>
|
||||
|
||||
<u>Color</u>:<br>
|
||||
<input type='color' id='dataColor' name='dataColor' value='%COLOR%' required>
|
||||
|
||||
</div>
|
||||
<br>
|
||||
<input type='submit' value='💾 Save settings'>
|
||||
|
||||
%FOOTER% )";
|
||||
|
||||
|
||||
const char Page_grow_dashboard_dataAdd_HTML_NO_ID_AVAILABLE[] PROGMEM = R"(%HEADER%
|
||||
%SUBNAV%
|
||||
%SAVE_MSG%
|
||||
|
||||
<h3>You cannot create more datas, limit reached.</h3>
|
||||
|
||||
%FOOTER% )";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue