delete output implemented
This commit is contained in:
parent
1419d625a4
commit
9af343bd3e
7 changed files with 66 additions and 6 deletions
|
@ -207,8 +207,8 @@ struct Config_System_Output {
|
|||
char name[Max_Outputs][32];
|
||||
bool enabled[Max_Outputs];
|
||||
byte gpio[Max_Outputs];
|
||||
bool gpio_invert[Max_Outputs];
|
||||
bool gpio_pwm[Max_Outputs];
|
||||
bool gpio_invert[Max_Outputs];
|
||||
char i2c[Max_Outputs][8];
|
||||
char webcall_host[Max_Outputs][32];
|
||||
char webcall_path_on[Max_Outputs][32];
|
||||
|
|
|
@ -353,7 +353,7 @@ bool SaveConfig(bool writeToSerial = false) {
|
|||
file.close();
|
||||
} else {
|
||||
Serial.printf(":: [LittleFS:SaveConfig] --- %s ---\n", CANGROW_CFG);
|
||||
serializeJson(doc, Serial);
|
||||
serializeJsonPretty(doc, Serial);
|
||||
Serial.println("");
|
||||
Serial.printf(":: [LittleFS:SaveConfig] ----------------------\n", CANGROW_CFG);
|
||||
}
|
||||
|
|
|
@ -209,6 +209,16 @@ input[type=text], input[type=date], input[type=number], input[type=password], se
|
|||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.linkForm {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.linkForm input[type=submit] {
|
||||
background: #262B27;
|
||||
padding: 5px;
|
||||
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -58,6 +58,10 @@ function showSelect(selectId, prefix, hideClass = '') {
|
|||
if(document.getElementById(toggleId) !== null ) {
|
||||
toggleDisplay(toggleId);
|
||||
}
|
||||
}
|
||||
|
||||
function confirmDelete(name) {
|
||||
return confirm('Delete ' + name + '?');
|
||||
})";
|
||||
|
||||
void WebFile_cangrow_JS(AsyncWebServerRequest *request) {
|
||||
|
|
|
@ -306,7 +306,9 @@ String Proc_WebPage_system_output(const String& var) {
|
|||
String output_tr_td;
|
||||
for(byte i=0; i < Max_Outputs; i++) {
|
||||
if(config.system.output.type[i] > 0) {
|
||||
#ifndef DEBUG
|
||||
Serial.printf("DB [Webserver:system:output(Proc)] OutputID %d Type %d\n", i, config.system.output.type[i]);
|
||||
#endif
|
||||
output_tr_td += "<tr><td>";
|
||||
output_tr_td += i;
|
||||
output_tr_td += "</td><td>";
|
||||
|
@ -317,11 +319,26 @@ String Proc_WebPage_system_output(const String& var) {
|
|||
output_tr_td += Output_Device_descr[config.system.output.device[i]];
|
||||
output_tr_td += "</td><td>";
|
||||
output_tr_td += config.system.output.enabled[i];
|
||||
output_tr_td += "</td><td><a href='#";
|
||||
output_tr_td += "</td><td>";
|
||||
|
||||
// edit button
|
||||
output_tr_td += "<form class='linkForm' action='/system/output/add' method='get'>";
|
||||
output_tr_td += "<input type='hidden' name='edit' value='";
|
||||
output_tr_td += i;
|
||||
output_tr_td += "'>✏️</a> <a href='#";
|
||||
output_tr_td += "'>";
|
||||
output_tr_td += "<input type='submit' value='✏️'></form> ";
|
||||
|
||||
|
||||
// delete button
|
||||
output_tr_td += "<form class='linkForm' action='/system/output/' method='post'>";
|
||||
output_tr_td += "<input type='hidden' name='delete_output' value='";
|
||||
output_tr_td += i;
|
||||
output_tr_td += "'>❌</a></td></tr>";
|
||||
output_tr_td += "'>";
|
||||
output_tr_td += "<input type='submit' value='❌' onclick=\"return confirmDelete('";
|
||||
output_tr_td += config.system.output.name[i];;
|
||||
output_tr_td += "')\"></form>";
|
||||
|
||||
output_tr_td += "</td></tr>";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -341,6 +358,34 @@ String Proc_WebPage_system_output_POST(const String& var) {
|
|||
|
||||
void WebPage_system_output(AsyncWebServerRequest *request) {
|
||||
if(request->method() == HTTP_POST) {
|
||||
if(request->hasParam("delete_output", true)) {
|
||||
byte outputId;
|
||||
|
||||
const AsyncWebParameter* p_delete_output = request->getParam("delete_output", true);
|
||||
Serial.printf(":: [Webserver:system:output] POST[%s]: %s\n", p_delete_output->name().c_str(), p_delete_output->value().c_str());
|
||||
|
||||
outputId = p_delete_output->value().toInt();
|
||||
|
||||
Serial.printf(":: [Webserver:system:output] Deleting output: %d\n", outputId);
|
||||
|
||||
// we ensure that every field is empty
|
||||
config.system.output.type[outputId] = 0;
|
||||
config.system.output.device[outputId] = 0;
|
||||
// set every field of char array to 0x00 with memset
|
||||
memset(config.system.output.name[outputId], '\0', sizeof config.system.output.name[outputId]);
|
||||
config.system.output.enabled[outputId] = 0;
|
||||
config.system.output.gpio[outputId] = 0;
|
||||
config.system.output.gpio_pwm[outputId] = 0;
|
||||
config.system.output.gpio_invert[outputId] = 0;
|
||||
memset(config.system.output.i2c[outputId], '\0', sizeof config.system.output.i2c[outputId]);
|
||||
memset(config.system.output.webcall_host[outputId], '\0', sizeof config.system.output.webcall_host[outputId]);
|
||||
memset(config.system.output.webcall_path_on[outputId], '\0', sizeof config.system.output.webcall_path_on[outputId]);
|
||||
memset(config.system.output.webcall_path_off[outputId], '\0', sizeof config.system.output.webcall_path_off[outputId]);
|
||||
|
||||
SaveConfig();
|
||||
}
|
||||
|
||||
|
||||
request->send_P(200, "text/html", Page_system_output_HTML, Proc_WebPage_system_output_POST);
|
||||
Serial.println(":: [Webserver:system:output] [POST] hello");
|
||||
|
||||
|
|
|
@ -137,6 +137,7 @@ const char* Page_system_wipe_HTML_WIPE_MSG_POST PROGMEM = R"(Restarting...)";
|
|||
*/
|
||||
const char* Page_system_output_HTML PROGMEM = R"(%HEADER%
|
||||
%SUBNAV%
|
||||
%SAVE_MSG%
|
||||
<a class='button' href='/system/output/add'>➕ Add output</a>
|
||||
<table class='centered'>
|
||||
<tr>
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
</form>
|
||||
<form class='linkForm' method='post' action='index.html'>
|
||||
<input type='hidden' name='del' value='0'>
|
||||
<input class='linkForm' type='submit' value='❌' onclick="return confirmDelete('Tasmota LED1')">
|
||||
<input type='submit' value='❌' onclick="return confirmDelete('Tasmota LED1')">
|
||||
</form>
|
||||
</td></tr><tr><td>6</td>
|
||||
<td>Test</td>
|
||||
|
|
Loading…
Reference in a new issue