diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2020-12-23 20:56:19 +0100 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2020-12-26 13:32:29 +0100 |
commit | 2c06566405e8708c6c4813e79c74bb64ea61661c (patch) | |
tree | f25713f5ab32b5562a756476c2dd3bb1e9d9510e /LoadAverageMeter.c | |
parent | d609c04fe4fa38c35465a152d7dccdf8f64e7a0d (diff) |
LoadMeter: dynamically adjust color and total of bar
Change the color and total based on the actual 1min load value:
< 1 : green and total of 1.0
< cpu-count : yellow and total of cpu-count
else : red and total of 2*cpu-count
Closes: #32
Diffstat (limited to 'LoadAverageMeter.c')
-rw-r--r-- | LoadAverageMeter.c | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/LoadAverageMeter.c b/LoadAverageMeter.c index 248d65cd..0c7b8339 100644 --- a/LoadAverageMeter.c +++ b/LoadAverageMeter.c @@ -24,8 +24,36 @@ static const int LoadMeter_attributes[] = { LOAD }; +static const int OK_attributes[] = { + METER_VALUE_OK +}; + +static const int Medium_attributes[] = { + METER_VALUE_WARN +}; + +static const int High_attributes[] = { + METER_VALUE_ERROR +}; + static void LoadAverageMeter_updateValues(Meter* this, char* buffer, size_t size) { Platform_getLoadAverage(&this->values[0], &this->values[1], &this->values[2]); + + // only show bar for 1min value + this->curItems = 1; + + // change bar color and total based on value + if (this->values[0] < 1.0) { + this->curAttributes = OK_attributes; + this->total = 1.0; + } else if (this->values[0] < this->pl->cpuCount) { + this->curAttributes = Medium_attributes; + this->total = this->pl->cpuCount; + } else { + this->curAttributes = High_attributes; + this->total = 2 * this->pl->cpuCount; + } + xSnprintf(buffer, size, "%.2f/%.2f/%.2f", this->values[0], this->values[1], this->values[2]); } @@ -43,9 +71,19 @@ static void LoadAverageMeter_display(const Object* cast, RichString* out) { static void LoadMeter_updateValues(Meter* this, char* buffer, size_t size) { double five, fifteen; Platform_getLoadAverage(&this->values[0], &five, &fifteen); - if (this->values[0] > this->total) { - this->total = this->values[0]; + + // change bar color and total based on value + if (this->values[0] < 1.0) { + this->curAttributes = OK_attributes; + this->total = 1.0; + } else if (this->values[0] < this->pl->cpuCount) { + this->curAttributes = Medium_attributes; + this->total = this->pl->cpuCount; + } else { + this->curAttributes = High_attributes; + this->total = 2 * this->pl->cpuCount; } + xSnprintf(buffer, size, "%.2f", this->values[0]); } |