From a3dad5997eda4d2206d014e465c76fa35eb7e35c Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sun, 11 Jul 2021 20:26:02 -0400 Subject: [PATCH] ENH use function to format annotated plots --- core | 2 +- drawing/Common.lua | 21 +++++++++++++-------- drawing/Network.lua | 15 +++++++++++---- drawing/Power.lua | 30 ++++++++++++++++++++++++------ drawing/ReadWrite.lua | 16 ++++++++++++---- 5 files changed, 61 insertions(+), 23 deletions(-) diff --git a/core b/core index ad5b95a..6ed1255 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit ad5b95a0bd222ac4ec8078693637f312bc76a80c +Subproject commit 6ed12553c7f6d5c11bb3072af3f68fa1ab2aa44a diff --git a/drawing/Common.lua b/drawing/Common.lua index b663c57..985b52d 100644 --- a/drawing/Common.lua +++ b/drawing/Common.lua @@ -184,17 +184,19 @@ end -------------------------------------------------------------------------------- -- scaled plot (with textual data above it) -M.initLabeledScalePlot = function(x, y, w, h, f, spacing, label) +M.initLabeledScalePlot = function(x, y, w, h, format_fun, label_fun, spacing, label) return { label = _left_text( _G_Widget_.make_point(x, y), label ), - value = _right_text( + value = _G_Widget_.formatted_text( _G_Widget_.make_point(x + w, y), - label + 0, + M.right_text_style, + format_fun ), - plot = M.initThemedScalePlot(x, y + spacing, w, h, f), + plot = M.initThemedScalePlot(x, y + spacing, w, h, label_fun), } end @@ -207,10 +209,13 @@ M.annotated_scale_plot_draw_dynamic = function(asp, cr) ScalePlot.draw_dynamic(asp.plot, cr) end -M.annotated_scale_plot_set = function(asp, cr, text_value, plot_value) - -- TODO this could be made more intelligent - Text.set(asp.value, cr, text_value) - ScalePlot.update(asp.plot, cr, plot_value) +-- M.annotated_scale_plot_set = function(asp, cr, text_value, plot_value) +-- Text.set(asp.value, cr, text_value) +-- ScalePlot.update(asp.plot, cr, plot_value) +-- end +M.annotated_scale_plot_set = function(asp, cr, value) + Text.set(asp.value, cr, value) + ScalePlot.update(asp.plot, cr, value) end -------------------------------------------------------------------------------- diff --git a/drawing/Network.lua b/drawing/Network.lua index b7bb87b..1f642a2 100644 --- a/drawing/Network.lua +++ b/drawing/Network.lua @@ -14,6 +14,11 @@ local network_label_function = function(bits) return Util.round_to_string(new_value, precision)..' '..new_unit..'b/s' end +local value_format_function = function(bits) + local unit, value = Util.convert_data_val(bits) + return Util.precision_round_to_string(value, 3)..' '..unit..'b/s' +end + local header = Common.Header( _G_INIT_DATA_.CENTER_RIGHT_X, _G_INIT_DATA_.TOP_Y, @@ -26,6 +31,7 @@ local dnload = Common.initLabeledScalePlot( header.bottom_y, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + value_format_function, network_label_function, _PLOT_SEC_BREAK_, 'Download' @@ -36,6 +42,7 @@ local upload = Common.initLabeledScalePlot( header.bottom_y + _PLOT_HEIGHT_ + _PLOT_SEC_BREAK_ * 2, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + value_format_function, network_label_function, _PLOT_SEC_BREAK_, 'Upload' @@ -86,19 +93,19 @@ local update = function(cr, update_frequency) if tx_delta > 0 then uspeed = uspeed + tx_delta * update_frequency end end - local dspeed_unit, dspeed_value = Util.convert_data_val(dspeed) - local uspeed_unit, uspeed_value = Util.convert_data_val(uspeed) + -- local dspeed_unit, dspeed_value = Util.convert_data_val(dspeed) + -- local uspeed_unit, uspeed_value = Util.convert_data_val(uspeed) Common.annotated_scale_plot_set( dnload, cr, - Util.precision_round_to_string(dspeed_value, 3)..' '..dspeed_unit..'b/s', + -- Util.precision_round_to_string(dspeed_value, 3)..' '..dspeed_unit..'b/s', dspeed ) Common.annotated_scale_plot_set( upload, cr, - Util.precision_round_to_string(uspeed_value, 3)..' '..uspeed_unit..'b/s', + -- Util.precision_round_to_string(uspeed_value, 3)..' '..uspeed_unit..'b/s', uspeed ) end diff --git a/drawing/Power.lua b/drawing/Power.lua index 3819ddf..6613baf 100644 --- a/drawing/Power.lua +++ b/drawing/Power.lua @@ -18,6 +18,18 @@ local calculate_power = function(prev_cnt, cnt, update_frequency) end end +local power_format_function = function(watts) + return Util.precision_round_to_string(watts, 3).." W" +end + +local ac_format_function = function(watts) + if watts == 0 then + return "A/C" + else + return power_format_function(watts) + end +end + local header = Common.Header( _G_INIT_DATA_.RIGHT_X, _MODULE_Y_, @@ -30,11 +42,11 @@ local pkg0 = Common.initLabeledScalePlot( header.bottom_y, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + power_format_function, power_label_function, _PLOT_SEC_BREAK_, 'PKG0' ) -pkg0.value.append_end = ' W' local _CORE_Y_ = header.bottom_y + _TEXT_SPACING_ + _PLOT_SEC_BREAK_ + _PLOT_HEIGHT_ @@ -43,6 +55,7 @@ local dram = Common.initLabeledScalePlot( _CORE_Y_, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + power_format_function, power_label_function, _PLOT_SEC_BREAK_, 'DRAM' @@ -54,6 +67,7 @@ local battery_draw = Common.initLabeledScalePlot( _CORE_Y_ + _PLOT_SEC_BREAK_ * 2 + _PLOT_HEIGHT_, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + ac_format_function, power_label_function, _PLOT_SEC_BREAK_, 'Battery Draw' @@ -71,23 +85,27 @@ local update = function(cr, update_frequency, is_using_ac) local pkg0_power = calculate_power(prev_pkg0_uj_cnt, pkg0_uj_cnt, update_frequency) - Common.annotated_scale_plot_set(pkg0, cr, Util.precision_round_to_string(pkg0_power, 3), pkg0_power) + -- Common.annotated_scale_plot_set(pkg0, cr, Util.precision_round_to_string(pkg0_power, 3), pkg0_power) + Common.annotated_scale_plot_set(pkg0, cr, pkg0_power) local dram_power = calculate_power(prev_dram_uj_cnt, dram_uj_cnt, update_frequency) - Common.annotated_scale_plot_set(dram, cr, Util.precision_round_to_string(dram_power, 3), dram_power) + -- Common.annotated_scale_plot_set(dram, cr, Util.precision_round_to_string(dram_power, 3), dram_power) + Common.annotated_scale_plot_set(dram, cr, dram_power) prev_pkg0_uj_cnt = pkg0_uj_cnt prev_dram_uj_cnt = dram_uj_cnt if is_using_ac then - Common.annotated_scale_plot_set(battery_draw, cr, 'A/C', 0) + -- Common.annotated_scale_plot_set(battery_draw, cr, 'A/C', 0) + Common.annotated_scale_plot_set(battery_draw, cr, 0) else local current = Util.read_file('/sys/class/power_supply/BAT0/current_now', nil, '*n') local voltage = Util.read_file('/sys/class/power_supply/BAT0/voltage_now', nil, '*n') local power = current * voltage * 0.000000000001 - local t = Util.precision_round_to_string(power, 3)..' W' - Common.annotated_scale_plot_set(battery_draw, cr, t, power) + -- local t = Util.precision_round_to_string(power, 3)..' W' + -- Common.annotated_scale_plot_set(battery_draw, cr, t, power) + Common.annotated_scale_plot_set(battery_draw, cr, power) end end diff --git a/drawing/ReadWrite.lua b/drawing/ReadWrite.lua index be85949..f24336a 100644 --- a/drawing/ReadWrite.lua +++ b/drawing/ReadWrite.lua @@ -24,15 +24,16 @@ local update_stat = function(cr, stat, byte_cnt, update_frequency) local delta_bytes = byte_cnt - stat.prev_byte_cnt stat.prev_byte_cnt = byte_cnt - local text_value = '0.00 B/s' + -- local text_value = '0.00 B/s' local plot_value = 0 if delta_bytes > 0 then local bps = delta_bytes * update_frequency - local unit, value = Util.convert_data_val(bps) - text_value = Util.precision_round_to_string(value, 3)..' '..unit..'B/s' + -- local unit, value = Util.convert_data_val(bps) + -- text_value = Util.precision_round_to_string(value, 3)..' '..unit..'B/s' plot_value = bps end - Common.annotated_scale_plot_set(stat, cr, text_value, plot_value) + -- Common.annotated_scale_plot_set(stat, cr, text_value, plot_value) + Common.annotated_scale_plot_set(stat, cr, plot_value) end local io_label_function = function(bytes) @@ -44,6 +45,11 @@ local io_label_function = function(bytes) return Util.round_to_string(new_value, precision)..' '..new_unit..'B/s' end +local format_value_function = function(bps) + local unit, value = Util.convert_data_val(bps) + return Util.precision_round_to_string(value, 3)..' '..unit..'B/s' +end + local header = Common.Header( _G_INIT_DATA_.CENTER_LEFT_X, _G_INIT_DATA_.TOP_Y, @@ -56,6 +62,7 @@ local reads = Common.initLabeledScalePlot( header.bottom_y, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + format_value_function, io_label_function, _PLOT_SEC_BREAK_, 'Reads' @@ -66,6 +73,7 @@ local writes = Common.initLabeledScalePlot( header.bottom_y + _PLOT_HEIGHT_ + _PLOT_SEC_BREAK_ * 2, _G_INIT_DATA_.SECTION_WIDTH, _PLOT_HEIGHT_, + format_value_function, io_label_function, _PLOT_SEC_BREAK_, 'Writes'