ENH use more precise format function
This commit is contained in:
parent
3953b97964
commit
3ae2c7cb1c
2
core
2
core
|
@ -1 +1 @@
|
||||||
Subproject commit 760beffe2710d863e2e18063fff50556fa1c054c
|
Subproject commit 1f4d9a574c8887e084bb1acbde3dc99392da084c
|
|
@ -134,7 +134,7 @@ M.default_plot_style = Startup.plot_style(
|
||||||
M.percent_label_style = Startup.label_style(
|
M.percent_label_style = Startup.label_style(
|
||||||
Theme.INACTIVE_TEXT_FG,
|
Theme.INACTIVE_TEXT_FG,
|
||||||
M.label_font_spec,
|
M.label_font_spec,
|
||||||
function(z) return Util.round_to_string(z * 100)..'%' end
|
function(_) return function(z) return Util.round_to_string(z * 100)..'%' end end
|
||||||
)
|
)
|
||||||
|
|
||||||
M.initThemedLabelPlot = function(x, y, w, h, label_style, update_freq)
|
M.initThemedLabelPlot = function(x, y, w, h, label_style, update_freq)
|
||||||
|
@ -200,6 +200,34 @@ end
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- scaled plot
|
-- scaled plot
|
||||||
|
|
||||||
|
-- Generate a format string for labels on y axis of plots. If the max of the
|
||||||
|
-- plot if numerically less than the number of grid lines, this means that
|
||||||
|
-- some number of decimal places are necessary to accurately display the number.
|
||||||
|
-- Note that this for now only works when the number of y grid lines if 4, as
|
||||||
|
-- it gives enough resolution for 1, 0.75, 0.5, and 0.25 but no more
|
||||||
|
M.y_label_format_string = function(plot_max, unit)
|
||||||
|
local num_fmt
|
||||||
|
if plot_max < 2 then
|
||||||
|
num_fmt = '%.2f'
|
||||||
|
elseif plot_max < 4 then
|
||||||
|
num_fmt = '%.1f'
|
||||||
|
else
|
||||||
|
num_fmt = '%.0f'
|
||||||
|
end
|
||||||
|
return string.format('%s %s', num_fmt, unit)
|
||||||
|
end
|
||||||
|
|
||||||
|
M.converted_y_label_format_generator = function(unit)
|
||||||
|
return function(plot_max)
|
||||||
|
local new_prefix, new_max = Util.convert_data_val(plot_max)
|
||||||
|
local conversion_factor = plot_max / new_max
|
||||||
|
local fmt = M.y_label_format_string(new_max, new_prefix..unit..'/s')
|
||||||
|
return function(bytes)
|
||||||
|
return string.format(fmt, bytes / conversion_factor)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
M.base_2_scale_data = function(m)
|
M.base_2_scale_data = function(m)
|
||||||
return Startup.scale_data(2, m, 0.9)
|
return Startup.scale_data(2, m, 0.9)
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,10 +5,9 @@ local Geometry = require 'Geometry'
|
||||||
return function(update_freq)
|
return function(update_freq)
|
||||||
local PLOT_SEC_BREAK = 20
|
local PLOT_SEC_BREAK = 20
|
||||||
local PLOT_HEIGHT = 56
|
local PLOT_HEIGHT = 56
|
||||||
|
-- TODO ensure these interfaces actually exist
|
||||||
local INTERFACES = {'enp7s0f1', 'wlp0s20f3'}
|
local INTERFACES = {'enp7s0f1', 'wlp0s20f3'}
|
||||||
|
|
||||||
local __math_floor = math.floor
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- header
|
-- header
|
||||||
|
|
||||||
|
@ -22,11 +21,6 @@ return function(update_freq)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- download plot
|
-- download plot
|
||||||
|
|
||||||
local network_label_function = function(bits)
|
|
||||||
local new_unit, new_value = Util.convert_data_val(bits)
|
|
||||||
return __math_floor(new_value)..' '..new_unit..'b/s'
|
|
||||||
end
|
|
||||||
|
|
||||||
local value_format_function = function(bits)
|
local value_format_function = function(bits)
|
||||||
local unit, value = Util.convert_data_val(bits)
|
local unit, value = Util.convert_data_val(bits)
|
||||||
return Util.precision_round_to_string(value, 3)..' '..unit..'b/s'
|
return Util.precision_round_to_string(value, 3)..' '..unit..'b/s'
|
||||||
|
@ -39,7 +33,7 @@ return function(update_freq)
|
||||||
Geometry.SECTION_WIDTH,
|
Geometry.SECTION_WIDTH,
|
||||||
PLOT_HEIGHT,
|
PLOT_HEIGHT,
|
||||||
value_format_function,
|
value_format_function,
|
||||||
network_label_function,
|
Common.converted_y_label_format_generator('b'),
|
||||||
PLOT_SEC_BREAK,
|
PLOT_SEC_BREAK,
|
||||||
label,
|
label,
|
||||||
2,
|
2,
|
||||||
|
|
|
@ -23,10 +23,13 @@ return function(update_freq)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- package 0 power plot
|
-- package 0 power plot
|
||||||
|
|
||||||
local power_label_function = function(watts) return watts..' W' end
|
local power_label_function = function(plot_max)
|
||||||
|
local fmt = Common.y_label_format_string(plot_max, 'W')
|
||||||
|
return function(watts) return string.format(fmt, watts) end
|
||||||
|
end
|
||||||
|
|
||||||
local power_format_function = function(watts)
|
local power_format_function = function(watts)
|
||||||
return Util.precision_round_to_string(watts, 3).." W"
|
return Util.precision_round_to_string(watts, 3)..' W'
|
||||||
end
|
end
|
||||||
|
|
||||||
local build_plot = function(y, label, format_fun)
|
local build_plot = function(y, label, format_fun)
|
||||||
|
|
|
@ -31,10 +31,14 @@ return function(update_freq)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- reads
|
-- reads
|
||||||
|
|
||||||
local io_label_function = function(bytes)
|
-- local io_label_format_fun_generator = function(plot_max)
|
||||||
local new_unit, new_value = Util.convert_data_val(bytes)
|
-- local new_unit, new_max = Util.convert_data_val(plot_max)
|
||||||
return __math_floor(new_value)..' '..new_unit..'B/s'
|
-- local conversion_factor = plot_max / new_max
|
||||||
end
|
-- local fmt = Common.y_label_format_string(new_max, new_unit..'B/s')
|
||||||
|
-- return function(bytes)
|
||||||
|
-- return string.format(fmt, bytes / conversion_factor)
|
||||||
|
-- end
|
||||||
|
-- end
|
||||||
|
|
||||||
local format_value_function = function(bps)
|
local format_value_function = function(bps)
|
||||||
local unit, value = Util.convert_data_val(bps)
|
local unit, value = Util.convert_data_val(bps)
|
||||||
|
@ -48,7 +52,7 @@ return function(update_freq)
|
||||||
Geometry.SECTION_WIDTH,
|
Geometry.SECTION_WIDTH,
|
||||||
PLOT_HEIGHT,
|
PLOT_HEIGHT,
|
||||||
format_value_function,
|
format_value_function,
|
||||||
io_label_function,
|
Common.converted_y_label_format_generator('B'),
|
||||||
PLOT_SEC_BREAK,
|
PLOT_SEC_BREAK,
|
||||||
label,
|
label,
|
||||||
2,
|
2,
|
||||||
|
|
Loading…
Reference in New Issue