Update web UI styles and HTML syntax (#23847)

* Update web UI styles and HTML syntax

Merged HTTP_HEAD_STYLE2 into HTTP_HEAD_STYLE1 and removed redundant style files. Updated button and form HTML across web UI to use consistent markup. Adjusted various style and separator elements for improved HTML5 compliance and consistency.

* Fix WiFi config page

* Fix typo

* Revert merging HTTP_HEAD_STYLE

Revert merging `HTTP_HEAD_STYLE1.h` and `HTTP_HEAD_STYLE2.h`
This commit is contained in:
SteWers 2025-09-07 21:58:43 +02:00 committed by GitHub
parent 23c214bcdc
commit eb8d51f47c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 58 additions and 61 deletions

View File

@ -1,26 +1,26 @@
/////////////////////////////////////////////////////////////////////
// compressed by tools/unishox/compress-html-uncompressed.py
// input sha256: a92df5da4ce64371d708d5b7f3d01034e2593d4b183bdbc689b47a77764de0c1
// input sha256: f34fe5fc63b5aed264b8d6174930571a0834c9d9dcfd3edaf4d704e0260e24d4
/////////////////////////////////////////////////////////////////////
const size_t HTTP_HEAD_STYLE1_SIZE = 646; // compressed size 348 bytes
const char HTTP_HEAD_STYLE1_COMPRESSED[] PROGMEM = "\x3D\x3D\x46\x41\x33\xF0\x4D\x33\x3A\x8C\x6B\x08\x4F\x3A\x3A\xB7\x86\x0B\xA3\xAB"
"\xCC\x26\x1D\x1E\xD1\x96\x20\x9B\xC3\xC7\x99\xCD\x21\x86\xC3\xC1\x8C\xEA\x3A\xFD"
"\xA6\xD6\x79\x9C\x84\xC6\x9E\x0F\x70\x21\xE1\xA7\xB4\x75\x86\x68\x3D\xFC\x17\xC2"
"\x1E\x66\x77\xF3\xBA\x75\x9D\x61\x9F\xB3\x1F\x1A\x77\x8F\x07\xB8\x61\xED\x1B\x7F"
"\x1E\xDE\x3C\xCE\x33\xA6\x93\x1A\x8E\x33\xC1\xEE\x2D\xE1\x82\xE8\xF6\x8F\xE8\x94"
"\x28\xF3\x39\x1B\x3E\x8F\x04\x3B\x0D\x87\x5F\xB4\xDB\xBC\x3C\x79\x8E\xCF\x88\xFE"
"\x75\x8E\xC3\x61\xE0\xEB\x1F\x63\x8D\x36\x8E\xB0\x52\xB4\x37\x0D\xA0\xA5\x5C\x13"
"\xB6\x7D\xE3\xBC\x78\x0F\x02\xCF\x82\x34\xEA\x36\x51\xDE\x04\x2D\xA4\xF7\xA8\xC8"
"\x63\x3E\x06\x29\x86\x68\x3B\x0D\x87\xBE\x08\x3C\x2D\x02\x0D\x1F\xD8\x9B\x87\xBE"
"\x08\x7C\x05\x31\xA7\x80\x41\xE0\xA8\xEB\xFE\x8F\x0A\xA3\xCC\xE7\x10\xC3\x61\xE0"
"\xCD\xFE\xB4\x3B\x08\xEB\xB0\xB4\x7B\x8F\x33\xAC\xE4\x21\x86\xC0\x48\xCC\xFF\x7C"
"\x3C\xC1\x0F\x1E\x38\x91\xF4\x78\x3D\xC4\x08\x5C\x59\x82\x3F\x0B\xC0\xC1\xF8\x0F"
"\xA6\x6C\xAB\xFB\xB3\xDB\xF7\xED\x36\xB3\xCC\x10\xF5\xD3\xC0\x21\x67\xE7\x3E\x7D"
"\x1E\x08\x53\xD1\xE1\x54\x79\x9C\xB9\xF2\x18\x6C\x3C\x02\x3F\x23\x78\x66\xFE\x60"
"\x2C\x1F\x3C\xEC\x5D\x60\x27\xEA\x63\x87\x81\x2F\x53\x0F\xC1\x02\x0E\xA8\x3B\x04"
"\x32\x3D\xB4\xCD\x94\x08\x5C\x23\x06\xFA\x9F\xC1\x07\x96\xE3\x16\x37\x42\x32\x3C"
"\xCC\xDF\xC4\xBE\xB3\xAB\xD7\xDE\x3A\xFC\xFF\xA6\x01\x4F\x40\x3D\xD4\x20\x22\x73"
"\x68\x71\x90\xC3\x61\xE0\xF7\x1B";
const size_t HTTP_HEAD_STYLE1_SIZE = 639; // compressed size 345 bytes
const char HTTP_HEAD_STYLE1_COMPRESSED[] PROGMEM = "\x13\x4C\xCE\xA3\x1A\xC2\x13\xCE\x8E\xAD\xE1\x82\xE8\xEA\xF3\x09\x87\x47\xB4\x65"
"\x88\x26\xF0\xF1\xE6\x73\x48\x61\xB0\xF0\x63\x3A\x8E\xBF\x69\xB5\x9E\x67\x21\x31"
"\xA7\x83\xDC\x08\x78\x69\xED\x1D\x61\x9A\x0F\x7F\x05\xF0\x87\x99\x9D\xFC\xEE\x9D"
"\x67\x58\x67\xEC\xC7\xC6\x9D\xE3\xC1\xEE\x18\x7B\x46\xDF\xC7\xB7\x8F\x33\x8C\xE9"
"\xA4\xC6\xA3\x8C\xF0\x7B\x8B\x78\x60\xBA\x3D\xA3\xFA\x25\x0A\x3C\xCE\x46\xCF\xA3"
"\xC1\x0E\xC3\x61\xD7\xED\x36\xEF\x0F\x1E\x63\xB3\xE2\x3F\x9D\x63\xB0\xD8\x78\x3A"
"\xC7\xD8\xE3\x4D\xA3\xAC\x14\xAD\x0D\xC3\x68\x29\x57\x04\xED\x9F\x78\xEF\x1E\x03"
"\xC0\xB3\xE0\x8D\x3A\x8D\x94\x77\x81\x0B\x69\x3D\xEA\x32\x18\xCF\x81\x8A\x61\x9A"
"\x0E\xC3\x61\xEF\x82\x0F\x0B\x40\x83\x47\xF6\x26\xE1\xEF\x82\x1F\x01\x4C\x69\xE0"
"\x10\x78\x2A\x2B\x3A\xFF\xA3\xC2\xA8\xF3\x39\xC4\x30\xD8\x78\x33\x7F\xAD\x0E\xC2"
"\x3A\xEC\x2D\x1E\xE3\xCC\xEB\x39\x08\x61\xB0\x12\x33\x3F\xDF\x0F\x30\x43\xC7\x8E"
"\x24\x7D\x1E\x0F\x71\x02\x17\x16\x60\x8F\xC2\xF0\x30\x7E\x03\xE9\x9B\x2A\x2B\xFE"
"\xEC\xF6\xFD\xFB\x4D\xAC\xF3\x04\x3D\x74\xF0\x08\x59\xF9\xCF\x9F\x47\x82\x14\xF4"
"\x78\x55\x1E\x67\x2E\x7C\x86\x1B\x0F\x2A\x01\x8F\xC8\xDE\x19\xBF\x98\x0B\x07\xCF"
"\x3B\x17\x58\x09\xFA\x98\xE1\xE0\x4B\xD4\xC3\xF0\x40\x83\xAA\x0E\xC1\x0C\x8F\x6D"
"\x33\x65\x02\x17\x08\xC1\xBE\xA7\xF0\x41\xE5\xB8\xC5\x8D\xD0\x8C\x8F\x33\x37\xF1"
"\x2F\xAC\xEA\xF5\xF7\x8E\xBF\x3F\xE9\x80\x53\xD0\x0F\x75\x08\x08\x9C\xDA\x1C\x64"
"\x30\xD8\x78\x3D\xC6";
#define HTTP_HEAD_STYLE1 Decompress(HTTP_HEAD_STYLE1_COMPRESSED,HTTP_HEAD_STYLE1_SIZE).c_str()

View File

@ -1,14 +1,14 @@
/////////////////////////////////////////////////////////////////////
// compressed by tools/unishox/compress-html-uncompressed.py
// input sha256: 1f042dbb6cfa6491dcc939f00b6fe46ec08b5186baacb85be6a2f2e24aa0e7b5
// input sha256: a112dc52f358757d9993d14d9006ad457e4540f3967ee02664912a3785547cf4
/////////////////////////////////////////////////////////////////////
const size_t HTTP_HEAD_STYLE_ROOT_COLOR_SIZE = 339; // compressed size 116 bytes
const size_t HTTP_HEAD_STYLE_ROOT_COLOR_SIZE = 331; // compressed size 110 bytes
const char HTTP_HEAD_STYLE_ROOT_COLOR_COMPRESSED[] PROGMEM = "\x3D\x3D\x46\x41\x33\xF0\xF3\xFE\x65\x1E\xD3\xAC\xEB\x0C\xFD\x8E\x1E\x3C\xCF\x23"
"\xE8\xE3\xE2\x36\x1E\x0E\xB3\xAC\x33\xF6\x63\xE3\x41\x1A\x55\x50\x40\x8F\x28\xD9"
"\x40\x93\x28\x7F\xFC\x09\x33\x7C\x18\x60\x8D\x34\x75\x02\x3D\xB1\xD5\xD8\x60\xC0"
"\x24\xCD\x04\x9C\xB8\x75\x70\xA3\x3F\x82\x4C\xDF\xF8\x12\xAF\x7F\xD4\x09\x98\x0F"
"\x8C\xC1\x2E\x60\x24\xDF\xD0\x47\xD9\x34\x12\xB5\x20\xFC\x08\xFC\x20\x07\xE0\x81"
"\x2B\x84\x3B\x1C\x09\x32\x81\x16\xD9\xEE\x3D\x0E\xC0\x41\xE2\xA0";
"\x2B\x84\x3B\x1C\x09\x32\x81\x16\xD9\xEE";
#define HTTP_HEAD_STYLE_ROOT_COLOR Decompress(HTTP_HEAD_STYLE_ROOT_COLOR_COMPRESSED,HTTP_HEAD_STYLE_ROOT_COLOR_SIZE).c_str()

View File

@ -1,5 +1,4 @@
const char HTTP_HEAD_STYLE1[] PROGMEM =
"<style>"
"div,fieldset,input,select{padding:5px;font-size:1em;}"
"fieldset{background:var(--c_frm);}" // COLOR_FORM, Also update HTTP_TIMER_STYLE
"p{margin:0.5em 0;}"

View File

@ -21,5 +21,4 @@ const char HTTP_HEAD_STYLE_ROOT_COLOR[] PROGMEM =
"--c_csltxt:#%06x;"
"--c_tab:#%06x;"
"--c_tabtxt:#%06x;"
"}"
"</style>";
"}";

View File

@ -978,8 +978,8 @@ const float kSpeedConversionFactor[] = {1, // none
// xdrv_02_webserver.ino
#ifdef USE_WEBSERVER
// {s} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
const char HTTP_SNS_HR[] PROGMEM = "<tr><td colspan=2 style='font-size:2px'><hr/></td></tr>";
const char HTTP_SNS_HR_THIN[] PROGMEM = "<tr><td colspan=2 style='font-size:2px'><hr size=1/></td></tr>";
const char HTTP_SNS_HR[] PROGMEM = "<tr><td colspan=2 style='font-size:2px'><hr></td></tr>";
const char HTTP_SNS_HR_THIN[] PROGMEM = "<tr><td colspan=2 style='font-size:2px'><hr size=1></td></tr>";
const char HTTP_SNS_F_TEMP[] PROGMEM = "{s}%s " D_TEMPERATURE "{m}%*_f " D_UNIT_DEGREE "%c{e}";
const char HTTP_SNS_F_VOLTAGE[] PROGMEM = "{s}%s " D_VOLTAGE "{m}%*_f " D_UNIT_VOLT "{e}";

View File

@ -484,7 +484,7 @@ enum MI32_BLEInfoMsg {
#ifdef USE_WEBSERVER
#ifdef USE_MI_EXT_GUI
const char HTTP_BTN_MENU_MI32[] PROGMEM = "<p><form action='m32' method='get'><button>Mi Dashboard</button></form></p>";
const char HTTP_BTN_MENU_MI32[] PROGMEM = "<p></p><form action='m32' method='get'><button>Mi Dashboard</button></form>";
const char HTTP_MI32_SCRIPT_1[] PROGMEM =
"function setUp(){setInterval(countUp,1000); setInterval(update,200);}"

View File

@ -271,7 +271,7 @@ const char HTTP_HEAD_STYLE3_MINIMAL[] PROGMEM =
#endif // FIRMWARE_MINIMAL
const char HTTP_MENU_HEAD[] PROGMEM =
"<div style='padding:0px 5px;text-align:center;'><h3><hr/>%s<hr/></h3></div>";
"<div style='padding:0px 5px;text-align:center;'><h3><hr>%s<hr></h3></div>";
const char HTTP_MSG_SLIDER_SHUTTER[] PROGMEM =
"<td style='width:70%%'>"
@ -437,7 +437,7 @@ const char HTTP_COUNTER[] PROGMEM =
"<br><div id='t' style='text-align:center;'></div>";
const char HTTP_END[] PROGMEM =
"<div style='text-align:right;font-size:11px;'><hr/><a href='https://github.com/arendst/Tasmota' target='_blank' style='color:#aaa;'>Tasmota %s %s " D_BY " Theo Arends</a></div>"
"<div style='text-align:right;font-size:11px;'><hr><a href='https://github.com/arendst/Tasmota' target='_blank' style='color:#aaa;'>Tasmota %s %s " D_BY " Theo Arends</a></div>"
"</div>"
"</body>"
"</html>";
@ -1102,18 +1102,18 @@ void WSContentButton(uint32_t title_index, bool show=true) {
char action[4];
char title[100]; // Large to accomodate UTF-16 as used by Russian
WSContentSend_P(PSTR("<p><form id=but%d style=\"display: %s;\" action='%s' method='get'"),
WSContentSend_P(PSTR("<p></p><form id=but%d style=\"display:%s;\" action='%s' method='get'"),
title_index,
show ? "block":"none",
GetTextIndexed(action, sizeof(action), title_index, kButtonAction));
if (title_index <= BUTTON_RESET_CONFIGURATION) {
char confirm[100];
WSContentSend_P(PSTR(" onsubmit='return confirm(\"%s\");'><button name='%s' class='button bred'>%s</button></form></p>"),
WSContentSend_P(PSTR(" onsubmit='return confirm(\"%s\");'><button name='%s' class='button bred'>%s</button></form>"),
GetTextIndexed(confirm, sizeof(confirm), title_index, kButtonConfirm),
(!title_index) ? PSTR("rst") : PSTR("non"),
GetTextIndexed(title, sizeof(title), title_index, kButtonTitle));
} else {
WSContentSend_P(PSTR("><button>%s</button></form></p>"),
WSContentSend_P(PSTR("><button>%s</button></form>"),
GetTextIndexed(title, sizeof(title), title_index, kButtonTitle));
}
}
@ -1135,7 +1135,7 @@ void WSContentSeparator(uint32_t state) {
request = true;
case 1: // Print separator if needed
if (request) {
WSContentSend_P(HTTP_SNS_HR); // <tr><td colspan=2><hr/>{e}
WSContentSend_P(HTTP_SNS_HR); // <tr><td colspan=2><hr>{e}
request = false;
}
break;
@ -2225,7 +2225,7 @@ void HandleTemplateConfiguration(void) {
WSContentSend_P(PSTR("<tr><td><b>" D_TEMPLATE_NAME "</b></td><td style='width:200px'><input id='s1' placeholder='" D_TEMPLATE_NAME "'></td></tr>"
"<tr><td><b>" D_BASE_TYPE "</b></td><td><select id='g99' onchange='st(this.value)'></select></td></tr>"
"</table>"
"<hr/>"));
"<hr>"));
WSContentSend_P(HTTP_TABLE100); // "<table style='width:100%%'>"
for (uint32_t i = 0; i < MAX_GPIO_PIN; i++) {
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6
@ -2594,7 +2594,7 @@ void HandleWifiConfiguration(void) {
for (uint32_t k = 0; k < 4; ++k) {
WSContentSend_P(PSTR("<i class='b%d%s'></i>"), k, (num_bars < k) ? PSTR(" o30") : PSTR(""));
}
WSContentSend_P(PSTR("</span></div></div>"));
WSContentSend_P(PSTR("</div></span></div>"));
} else {
if (ssid_showed <= networksToShow ) { networksToShow++; }
}
@ -2671,7 +2671,7 @@ void HandleWifiConfiguration(void) {
WSContentSend_P(PSTR(D_CONNECT_FAILED_TO " %s<br>" D_CHECK_CREDENTIALS "</h3></div>"), SettingsTextEscaped(SET_STASSID1).c_str());
}
// More Options Button
WSContentSend_P(PSTR("<div id=butmod style=\"display:%s;\"></div><p><form id=butmo style=\"display:%s;\"><button type='button' onclick='hidBtns()'>" D_SHOW_MORE_OPTIONS "</button></form></p>"),
WSContentSend_P(PSTR("<div id=butmod style=\"display:%s;\"></div><p></p><form id=butmo style=\"display:%s;\"><button type='button' onclick='hidBtns()'>" D_SHOW_MORE_OPTIONS "</button></form>"),
(WIFI_TEST_FINISHED_BAD == Wifi.wifiTest) ? "none" : Web.initial_config ? "block" : "none", Web.initial_config ? "block" : "none"
);
WSContentSpaceButton(BUTTON_RESTORE, !Web.initial_config);
@ -2926,7 +2926,7 @@ void HandleRestoreConfiguration(void) {
\*********************************************************************************************/
void WSContentSeparatorI(uint32_t size) {
WSContentSend_P(PSTR("</td></tr><tr><td colspan=2><hr style='font-size:2px'%s/>"), (1 == size)?" size=1":"");
WSContentSend_P(PSTR("</td></tr><tr><td colspan=2><hr style='font-size:2px'%s>"), (1 == size)?" size=1":"");
// WSContentSend_P(PSTR("</td></tr><tr><td colspan=2><hr style='font-size:%dpx'/>"), size);
// WSContentSend_P(PSTR("</td></tr><tr><td colspan=2><hr style='border_top:%dpx solid'/>"), size);
// WSContentSend_P(PSTR("</td></tr><tr><td colspan=2 style='border-bottom:%dpx solid #ccc;'>"), size);
@ -2942,7 +2942,6 @@ void WSContentSeparatorIFat(void) {
/*-------------------------------------------------------------------------------------------*/
void WSContentSeparatorIThin(void) {
// WSContentSend_P(PSTR("}1<hr/>}2<hr/>")); // </td></tr><tr><th><hr/></th><td><hr/>
WSContentSeparatorI(1);
}

View File

@ -2028,7 +2028,7 @@ void CmndTlsDump(void) {
const char S_CONFIGURE_MQTT[] PROGMEM = D_CONFIGURE_MQTT;
const char HTTP_BTN_MENU_MQTT[] PROGMEM =
"<p><form action='" WEB_HANDLE_MQTT "' method='get'><button>" D_CONFIGURE_MQTT "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_MQTT "' method='get'><button>" D_CONFIGURE_MQTT "</button></form>";
const char HTTP_FORM_MQTT1[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_MQTT_PARAMETERS "&nbsp;</b></legend>"

View File

@ -637,7 +637,7 @@ void CmndDomoticzSend(void) {
#define WEB_HANDLE_DOMOTICZ "dm"
const char HTTP_BTN_MENU_DOMOTICZ[] PROGMEM =
"<p><form action='" WEB_HANDLE_DOMOTICZ "' method='get'><button>" D_CONFIGURE_DOMOTICZ "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_DOMOTICZ "' method='get'><button>" D_CONFIGURE_DOMOTICZ "</button></form>";
const char HTTP_FORM_DOMOTICZ[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_DOMOTICZ_PARAMETERS "&nbsp;</b></legend>"

View File

@ -873,7 +873,7 @@ void CmndDomoticzSend(void) {
#define WEB_HANDLE_DOMOTICZ "dm"
const char HTTP_BTN_MENU_DOMOTICZ[] PROGMEM =
"<p><form action='" WEB_HANDLE_DOMOTICZ "' method='get'><button>" D_CONFIGURE_DOMOTICZ "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_DOMOTICZ "' method='get'><button>" D_CONFIGURE_DOMOTICZ "</button></form>";
const char HTTP_FORM_DOMOTICZ[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_DOMOTICZ_PARAMETERS "&nbsp;</b></legend>"

View File

@ -531,7 +531,7 @@ void CmndSunrise(void) {
#define WEB_HANDLE_TIMER "tm"
const char HTTP_BTN_MENU_TIMER[] PROGMEM =
"<p><form action='" WEB_HANDLE_TIMER "' method='get'><button>" D_CONFIGURE_TIMER "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_TIMER "' method='get'><button>" D_CONFIGURE_TIMER "</button></form>";
#ifdef USE_UNISHOX_COMPRESSION
const size_t HTTP_TIMER_SCRIPT1_SIZE = 106;

View File

@ -9800,7 +9800,7 @@ void Scripter_save_pvars(void) {
#define WEB_HANDLE_SCRIPT "s10"
const char HTTP_BTN_MENU_RULES[] PROGMEM =
"<p><form action='" WEB_HANDLE_SCRIPT "' method='get'><button>" D_CONFIGURE_SCRIPT "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_SCRIPT "' method='get'><button>" D_CONFIGURE_SCRIPT "</button></form>";
const char HTTP_FORM_SCRIPT[] PROGMEM =
@ -11790,7 +11790,7 @@ uint32_t fsize;
#ifdef SCRIPT_FULL_WEBPAGE
const char HTTP_WEB_FULL_DISPLAY[] PROGMEM =
"<p><form action='sfd%1d' method='get'><button>%s</button></form></p>";
"<p></p><form action='sfd%1d' method='get'><button>%s</button></form>";
const char HTTP_SCRIPT_FULLPAGE1[] PROGMEM =
"var rfsh=1;"
@ -12018,7 +12018,7 @@ const char SCRIPT_MSG_GTABLE[] PROGMEM =
"<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>"
"<script type='text/javascript'>google.charts.load('current',{packages:['corechart']});</script>"
"<style>.hRow{font-weight:bold;color:black;background-color:lightblue;}.hCol{font-weight:bold;color:black;background-color:lightblue;}.tCell{color:black}</style>"
"<style>#chart1{display: inline-block;margin: 0 auto;#timeline text{fill:magenta;}}</style>";
"<style>#chart1{display:inline-block;margin: 0 auto;#timeline text{fill:magenta;}}</style>";
const char SCRIPT_MSG_TABLE[] PROGMEM =
"<script type='text/javascript'>google.charts.load('current',{packages:['table']});</script>";

View File

@ -1051,7 +1051,7 @@ void KnxSensor(uint8_t sensor_type, float value)
#ifdef USE_WEBSERVER
#ifdef USE_KNX_WEB_MENU
const char HTTP_BTN_MENU_KNX[] PROGMEM =
"<p><form action='kn' method='get'><button>" D_CONFIGURE_KNX "</button></form></p>";
"<p></p><form action='kn' method='get'><button>" D_CONFIGURE_KNX "</button></form>";
const char HTTP_FORM_KNX[] PROGMEM =
"<fieldset style='min-width:530px;'>"

View File

@ -736,7 +736,7 @@ void CmndGvUrl(void) {
#define WEB_HANDLE_GV "gv"
const char HTTP_BTN_MENU_GV[] PROGMEM =
"<p><form action='" WEB_HANDLE_GV "' method='get' target='_blank'><button>" D_GPIO_VIEWER "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_GV "' method='get' target='_blank'><button>" D_GPIO_VIEWER "</button></form>";
void GVSetupAndStart(void) {
if (!HttpCheckPriviledgedAccess()) { return; }

View File

@ -516,7 +516,7 @@ void Pcf8574ModuleInitMode1(void) {
#define WEB_HANDLE_PCF8574 "pcf"
const char HTTP_BTN_MENU_PCF8574[] PROGMEM =
"<p><form action='" WEB_HANDLE_PCF8574 "' method='get'><button>" D_CONFIGURE_PCF8574 "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_PCF8574 "' method='get'><button>" D_CONFIGURE_PCF8574 "</button></form>";
const char HTTP_FORM_I2C_PCF8574_1[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_PCF8574_PARAMETERS "&nbsp;</b></legend>"

View File

@ -41,7 +41,7 @@ const char MLX90640type[] PROGMEM = "MLX90640";
#ifdef USE_WEBSERVER
#define WEB_HANDLE_MLX90640 "mlx"
const char HTTP_BTN_MENU_MLX90640[] PROGMEM = "<p><form action='" WEB_HANDLE_MLX90640 "' method='get'><button>MLX90640</button></form></p>";
const char HTTP_BTN_MENU_MLX90640[] PROGMEM = "<p></p><form action='" WEB_HANDLE_MLX90640 "' method='get'><button>MLX90640</button></form>";
#endif // USE_WEBSERVER
struct {

View File

@ -1262,7 +1262,7 @@ void UFSRun(void) {
#ifdef USE_WEBSERVER
const char UFS_WEB_DIR[] PROGMEM =
"<p><form action='ufsd' method='get'><input type='hidden' name='download' value='%s' /> <button>%s</button></form></p>";
"<p></p><form action='ufsd' method='get'><input type='hidden' name='download' value='%s' /> <button>%s</button></form>";
const char UFS_CURRDIR[] PROGMEM =
"<p>%s: %s</p>";

View File

@ -734,14 +734,14 @@ const char HTTP_BERRY_FORM_CMND[] PROGMEM =
"<button type='submit'>Run code (or press 'Enter' twice)</button>"
"</form>"
#ifdef USE_BERRY_DEBUG
"<p><form method='post' >"
"<p></p><form method='post' >"
"<button type='submit' name='rst' class='bred' onclick=\"if(confirm('Confirm removing endpoint')){clearTimeout(lt);return true;}else{return false;}\">Restart Berry VM (for devs only)</button>"
"</form></p>"
"</form>"
#endif // USE_BERRY_DEBUG
;
const char HTTP_BTN_BERRY_CONSOLE[] PROGMEM =
"<p><form action='bc' method='get'><button>Berry Scripting console</button></form></p>";
"<p></p><form action='bc' method='get'><button>Berry Scripting console</button></form>";
void HandleBerryConsoleRefresh(void)
@ -821,7 +821,7 @@ void HandleBerryBECLoaderButton(void) {
const BeBECCode_t &bec = BECCode[i];
if (!(*bec.loaded)) {
if (be_global_find(vm, be_newstr(vm, bec.id)) < 0) { // the global name doesn't exist
WSContentSend_P("<form id=but_part_mgr style='display: block;' action='tapp' method='get'><input type='hidden' name='n' value='%s'/><button>[Load %s]</button></form><p></p>", bec.id, bec.display_name);
WSContentSend_P("<form id=but_part_mgr style='display:block;' action='tapp' method='get'><input type='hidden' name='n' value='%s'/><button>[Load %s]</button></form><p></p>", bec.id, bec.display_name);
} else {
*bec.loaded = true;
}

View File

@ -3572,7 +3572,7 @@ std::string BLETriggerResponse(generic_sensor_t *toSend){
#define WEB_HANDLE_BLE "ble"
const char HTTP_BTN_MENU_BLE[] PROGMEM =
"<p><form action='" WEB_HANDLE_BLE "' method='get'><button>" D_CONFIGURE_BLE "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_BLE "' method='get'><button>" D_CONFIGURE_BLE "</button></form>";
const char HTTP_FORM_BLE[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_BLE_PARAMETERS "&nbsp;</b></legend>"

View File

@ -237,7 +237,7 @@ void CounterShow(bool json)
}
#ifdef USE_WEBSERVER
} else {
WSContentSend_PD(PSTR("{s}" D_COUNTER "%d{m}%s%s{e}"),
WSContentSend_PD(PSTR("{s}" D_COUNTER " %d{m}%s%s{e}"),
i +1, counter, (bitRead(Settings->pulse_counter_type, i)) ? " " D_UNIT_SECOND : "");
#endif // USE_WEBSERVER
}

View File

@ -616,10 +616,10 @@ void HxShow(bool json) {
#define WEB_HANDLE_HX711 "s34"
const char HTTP_BTN_MENU_MAIN_HX711[] PROGMEM =
"<p><form action='" WEB_HANDLE_HX711 "' method='get'><button name='reset'>" D_RESET_HX711 "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_HX711 "' method='get'><button name='reset'>" D_RESET_HX711 "</button></form>";
const char HTTP_BTN_MENU_HX711[] PROGMEM =
"<p><form action='" WEB_HANDLE_HX711 "' method='get'><button>" D_CONFIGURE_HX711 "</button></form></p>";
"<p></p><form action='" WEB_HANDLE_HX711 "' method='get'><button>" D_CONFIGURE_HX711 "</button></form>";
const char HTTP_FORM_HX711[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_CALIBRATION "&nbsp;</b></legend>"

View File

@ -1011,7 +1011,7 @@ const char HTTP_SNS_NEOPOOL_CELL_RUNTIME[] PROGMEM = "{s}%s " D_NEOPOOL_CELL
const char HTTP_SNS_NEOPOOL_STATUS[] PROGMEM = "<span style=\"background-color:%s;font-size:small;text-align:center;%s;\">&nbsp;%s&nbsp;</span>";
const char HTTP_SNS_NEOPOOL_STATUS_NORMAL[] PROGMEM = "filter:invert(0.1)";
const char HTTP_SNS_NEOPOOL_STATUS_DISABLED[] PROGMEM = "display: none";
const char HTTP_SNS_NEOPOOL_STATUS_DISABLED[] PROGMEM = "display:none";
const char HTTP_SNS_NEOPOOL_STATUS_INACTIVE[] PROGMEM = "filter:opacity(0.15)";
const char HTTP_SNS_NEOPOOL_STATUS_ACTIVE[] PROGMEM = "filter:invert(1)";