mirror of
https://github.com/esphome/esphome.git
synced 2025-10-07 12:23:47 +01:00
Fix log level selector when selecting levels above INFO (#10368)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
@@ -3,11 +3,10 @@
|
||||
namespace esphome::logger {
|
||||
|
||||
void LoggerLevelSelect::publish_state(int level) {
|
||||
auto value = this->at(level);
|
||||
if (!value) {
|
||||
const auto &option = this->at(level_to_index(level));
|
||||
if (!option)
|
||||
return;
|
||||
}
|
||||
Select::publish_state(value.value());
|
||||
Select::publish_state(option.value());
|
||||
}
|
||||
|
||||
void LoggerLevelSelect::setup() {
|
||||
@@ -16,10 +15,10 @@ void LoggerLevelSelect::setup() {
|
||||
}
|
||||
|
||||
void LoggerLevelSelect::control(const std::string &value) {
|
||||
auto level = this->index_of(value);
|
||||
if (!level)
|
||||
const auto index = this->index_of(value);
|
||||
if (!index)
|
||||
return;
|
||||
this->parent_->set_log_level(level.value());
|
||||
this->parent_->set_log_level(index_to_level(index.value()));
|
||||
}
|
||||
|
||||
} // namespace esphome::logger
|
||||
|
@@ -3,11 +3,18 @@
|
||||
#include "esphome/components/select/select.h"
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/components/logger/logger.h"
|
||||
|
||||
namespace esphome::logger {
|
||||
class LoggerLevelSelect : public Component, public select::Select, public Parented<Logger> {
|
||||
public:
|
||||
void publish_state(int level);
|
||||
void setup() override;
|
||||
void control(const std::string &value) override;
|
||||
|
||||
protected:
|
||||
// Convert log level to option index (skip CONFIG at level 4)
|
||||
static uint8_t level_to_index(uint8_t level) { return (level > ESPHOME_LOG_LEVEL_CONFIG) ? level - 1 : level; }
|
||||
// Convert option index to log level (skip CONFIG at level 4)
|
||||
static uint8_t index_to_level(uint8_t index) { return (index >= ESPHOME_LOG_LEVEL_CONFIG) ? index + 1 : index; }
|
||||
};
|
||||
} // namespace esphome::logger
|
||||
|
Reference in New Issue
Block a user