mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Change limit number of relay/button columns in GUI to 8
Change limit number of relay/button columns in GUI to 8 (#11546)
This commit is contained in:
parent
b0689af803
commit
a756c7437e
@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12
|
- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12
|
||||||
- IRremoteESP8266 library from v2.7.15 to v2.7.16
|
- IRremoteESP8266 library from v2.7.15 to v2.7.16
|
||||||
- ESP32 core library from v1.0.5 to v1.0.6
|
- ESP32 core library from v1.0.5 to v1.0.6
|
||||||
|
- Limit number of relay/button columns in GUI to 8 (#11546)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- HC-SR04 on ESP32 release serial interface if not used (#11507)
|
- HC-SR04 on ESP32 release serial interface if not used (#11507)
|
||||||
|
@ -111,6 +111,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
|
|||||||
- TuyaMcu dimmer timeout [#11121](https://github.com/arendst/Tasmota/issues/11121)
|
- TuyaMcu dimmer timeout [#11121](https://github.com/arendst/Tasmota/issues/11121)
|
||||||
- Rename epaper 42 commands [#11222](https://github.com/arendst/Tasmota/issues/11222)
|
- Rename epaper 42 commands [#11222](https://github.com/arendst/Tasmota/issues/11222)
|
||||||
- DeepSleep announcement topic [#11223](https://github.com/arendst/Tasmota/issues/11223)
|
- DeepSleep announcement topic [#11223](https://github.com/arendst/Tasmota/issues/11223)
|
||||||
|
- Limit number of relay/button columns in GUI to 8 [#11546](https://github.com/arendst/Tasmota/issues/11546)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- PN532 on ESP32 Serial flush both Tx and Rx buffers [#10910](https://github.com/arendst/Tasmota/issues/10910)
|
- PN532 on ESP32 Serial flush both Tx and Rx buffers [#10910](https://github.com/arendst/Tasmota/issues/10910)
|
||||||
|
@ -878,6 +878,16 @@ void HandleWifiLogin(void)
|
|||||||
WSContentStop();
|
WSContentStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t WebDeviceColumns(void) {
|
||||||
|
const uint32_t max_columns = 8;
|
||||||
|
|
||||||
|
uint32_t rows = TasmotaGlobal.devices_present / max_columns;
|
||||||
|
if (TasmotaGlobal.devices_present % max_columns) { rows++; }
|
||||||
|
uint32_t cols = TasmotaGlobal.devices_present / rows;
|
||||||
|
if (TasmotaGlobal.devices_present % rows) { cols++; }
|
||||||
|
return cols;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_LIGHT
|
#ifdef USE_LIGHT
|
||||||
void WebSliderColdWarm(void)
|
void WebSliderColdWarm(void)
|
||||||
{
|
{
|
||||||
@ -1034,21 +1044,25 @@ void HandleRoot(void)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
#endif // USE_SONOFF_IFAN
|
#endif // USE_SONOFF_IFAN
|
||||||
|
uint32_t cols = WebDeviceColumns();
|
||||||
for (uint32_t idx = 1; idx <= TasmotaGlobal.devices_present; idx++) {
|
for (uint32_t idx = 1; idx <= TasmotaGlobal.devices_present; idx++) {
|
||||||
bool set_button = ((idx <= MAX_BUTTON_TEXT) && strlen(SettingsText(SET_BUTTON1 + idx -1)));
|
bool set_button = ((idx <= MAX_BUTTON_TEXT) && strlen(SettingsText(SET_BUTTON1 + idx -1)));
|
||||||
#ifdef USE_SHUTTER
|
#ifdef USE_SHUTTER
|
||||||
int32_t ShutterWebButton;
|
int32_t ShutterWebButton;
|
||||||
if (ShutterWebButton = IsShutterWebButton(idx)) {
|
if (ShutterWebButton = IsShutterWebButton(idx)) {
|
||||||
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / TasmotaGlobal.devices_present, idx,
|
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / cols, idx,
|
||||||
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 2) /* is locked */ ? "-" : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 8) /* invert web buttons */ ? ((ShutterWebButton>0) ? "▼" : "▲") : ((ShutterWebButton>0) ? "▲" : "▼"))),
|
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 2) /* is locked */ ? "-" : ((Settings.shutter_options[abs(ShutterWebButton)-1] & 8) /* invert web buttons */ ? ((ShutterWebButton>0) ? "▼" : "▲") : ((ShutterWebButton>0) ? "▲" : "▼"))),
|
||||||
"");
|
"");
|
||||||
continue;
|
} else {
|
||||||
|
#endif // USE_SHUTTER
|
||||||
|
snprintf_P(stemp, sizeof(stemp), PSTR(" %d"), idx);
|
||||||
|
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / cols, idx,
|
||||||
|
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : (cols < 5) ? PSTR(D_BUTTON_TOGGLE) : "",
|
||||||
|
(set_button) ? "" : (TasmotaGlobal.devices_present > 1) ? stemp : "");
|
||||||
|
#ifdef USE_SHUTTER
|
||||||
}
|
}
|
||||||
#endif // USE_SHUTTER
|
#endif // USE_SHUTTER
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR(" %d"), idx);
|
if (0 == idx % cols) { WSContentSend_P(PSTR("</tr><tr>")); }
|
||||||
WSContentSend_P(HTTP_DEVICE_CONTROL, 100 / TasmotaGlobal.devices_present, idx,
|
|
||||||
(set_button) ? SettingsText(SET_BUTTON1 + idx -1) : (TasmotaGlobal.devices_present < 5) ? PSTR(D_BUTTON_TOGGLE) : "",
|
|
||||||
(set_button) ? "" : (TasmotaGlobal.devices_present > 1) ? stemp : "");
|
|
||||||
}
|
}
|
||||||
#ifdef USE_SONOFF_IFAN
|
#ifdef USE_SONOFF_IFAN
|
||||||
}
|
}
|
||||||
@ -1249,7 +1263,6 @@ bool HandleRootStatusRefresh(void)
|
|||||||
|
|
||||||
if (TasmotaGlobal.devices_present) {
|
if (TasmotaGlobal.devices_present) {
|
||||||
WSContentSend_P(PSTR("{t}<tr>"));
|
WSContentSend_P(PSTR("{t}<tr>"));
|
||||||
uint32_t fsize = (TasmotaGlobal.devices_present < 5) ? 70 - (TasmotaGlobal.devices_present * 8) : 32;
|
|
||||||
#ifdef USE_SONOFF_IFAN
|
#ifdef USE_SONOFF_IFAN
|
||||||
if (IsModuleIfan()) {
|
if (IsModuleIfan()) {
|
||||||
WSContentSend_P(HTTP_DEVICE_STATE, 36, (bitRead(TasmotaGlobal.power, 0)) ? PSTR("bold") : PSTR("normal"), 54, GetStateText(bitRead(TasmotaGlobal.power, 0)));
|
WSContentSend_P(HTTP_DEVICE_STATE, 36, (bitRead(TasmotaGlobal.power, 0)) ? PSTR("bold") : PSTR("normal"), 54, GetStateText(bitRead(TasmotaGlobal.power, 0)));
|
||||||
@ -1258,9 +1271,13 @@ bool HandleRootStatusRefresh(void)
|
|||||||
WSContentSend_P(HTTP_DEVICE_STATE, 64, (fanspeed) ? PSTR("bold") : PSTR("normal"), 54, (fanspeed) ? svalue : GetStateText(0));
|
WSContentSend_P(HTTP_DEVICE_STATE, 64, (fanspeed) ? PSTR("bold") : PSTR("normal"), 54, (fanspeed) ? svalue : GetStateText(0));
|
||||||
} else {
|
} else {
|
||||||
#endif // USE_SONOFF_IFAN
|
#endif // USE_SONOFF_IFAN
|
||||||
|
uint32_t cols = WebDeviceColumns();
|
||||||
|
uint32_t fontsize = (cols < 5) ? 70 - (cols * 8) : 32;
|
||||||
for (uint32_t idx = 1; idx <= TasmotaGlobal.devices_present; idx++) {
|
for (uint32_t idx = 1; idx <= TasmotaGlobal.devices_present; idx++) {
|
||||||
snprintf_P(svalue, sizeof(svalue), PSTR("%d"), bitRead(TasmotaGlobal.power, idx -1));
|
snprintf_P(svalue, sizeof(svalue), PSTR("%d"), bitRead(TasmotaGlobal.power, idx -1));
|
||||||
WSContentSend_P(HTTP_DEVICE_STATE, 100 / TasmotaGlobal.devices_present, (bitRead(TasmotaGlobal.power, idx -1)) ? PSTR("bold") : PSTR("normal"), fsize, (TasmotaGlobal.devices_present < 5) ? GetStateText(bitRead(TasmotaGlobal.power, idx -1)) : svalue);
|
WSContentSend_P(HTTP_DEVICE_STATE, 100 / cols, (bitRead(TasmotaGlobal.power, idx -1)) ? PSTR("bold") : PSTR("normal"), fontsize,
|
||||||
|
(cols < 5) ? GetStateText(bitRead(TasmotaGlobal.power, idx -1)) : svalue);
|
||||||
|
if (0 == idx % cols) { WSContentSend_P(PSTR("</tr><tr>")); }
|
||||||
}
|
}
|
||||||
#ifdef USE_SONOFF_IFAN
|
#ifdef USE_SONOFF_IFAN
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user