#401 supervisor and coordinator computer display

This commit is contained in:
Mikayla
2025-08-05 13:35:29 +00:00
parent 1ce0bbfc65
commit f4d4de659c
3 changed files with 98 additions and 13 deletions

View File

@@ -19,7 +19,7 @@ local TextBox = require("graphics.elements.TextBox")
local WaitingAnim = require("graphics.elements.animations.Waiting")
local RadIndicator = require("graphics.elements.indicators.RadIndicator")
local DataIndicator = require("graphics.elements.indicators.DataIndicator")
local ALIGN = core.ALIGN
local cpair = core.cpair
@@ -30,6 +30,11 @@ local APP_ID = pocket.APP_ID
local label_fg_bg = style.label
local lu_col = style.label_unit_pair
-- nominal RTT is ping (0ms to 10ms usually) + 150ms for SV main loop tick
-- ensure in sync with supervisor databus file
local WARN_RTT = 300 -- 2x as long as expected w/ 0 ping
local HIGH_RTT = 500 -- 3.33x as long as expected w/ 0 ping
-- new computer list page view
---@param root Container parent
local function new_view(root)
@@ -107,7 +112,7 @@ local function new_view(root)
end)
end
--#region overview page
--#region main computer page
local m_pane = panes[1]
local m_div = Div{parent=m_pane,x=2,width=main.get_width()-2}
@@ -117,9 +122,62 @@ local function new_view(root)
TextBox{parent=m_div,y=1,text="Connected Computers",alignment=ALIGN.CENTER}
TextBox{parent=m_div,y=3,text="Networked Computers",fg_bg=label_fg_bg}
local s_f_rad = RadIndicator{parent=m_div,label="",format="%17.3f",lu_colors=lu_col,width=21}
s_f_rad.register(f_ps, "radiation", s_f_rad.update)
local conns = DataIndicator{parent=m_div,x=10,y=3,lu_colors=lu_col,label="Online",unit="",format="%3d",value=0,commas=true,width=21}
conns.register(f_ps, "comp_online", conns.update)
local svr_div = Div{parent=m_div,y=5,height=5}
local svr_rect = Rectangle{parent=svr_div,height=5,x=2,width=21,border=border(1,colors.gray,true),thin=true,fg_bg=cpair(colors.black,colors.lightGray)}
TextBox{parent=svr_rect,text="Supervisor"}
TextBox{parent=svr_rect,x=12,y=1,width=6,text="Online",fg_bg=cpair(colors.green,colors._INHERIT)}
TextBox{parent=svr_rect,text="Computer ID",fg_bg=label_fg_bg}
TextBox{parent=svr_rect,text="Firmware",fg_bg=label_fg_bg}
local svr_addr = TextBox{parent=svr_rect,x=13,y=2,text="---"}
local svr_fw = TextBox{parent=svr_rect,x=13,y=3,text="---"}
svr_addr.register(f_ps, "comp_svr_addr", svr_addr.set_value)
svr_fw.register(f_ps, "comp_svr_fw", svr_fw.set_value)
local crd_div = Div{parent=m_div,y=5,height=5}
local crd_rect = Rectangle{parent=crd_div,height=6,x=2,width=21,border=border(1,colors.gray,true),thin=true,fg_bg=cpair(colors.black,colors.lightGray)}
TextBox{parent=crd_rect,text="Coordinator"}
local crd_online = TextBox{parent=svr_rect,x=12,y=1,width=7,text="Online",fg_bg=cpair(colors.green,colors._INHERIT)}
TextBox{parent=crd_rect,text="Computer ID",fg_bg=label_fg_bg}
TextBox{parent=crd_rect,text="Firmware",fg_bg=label_fg_bg}
TextBox{parent=crd_rect,text="Round-Trip Time",fg_bg=label_fg_bg}
local crd_addr = TextBox{parent=svr_rect,x=13,y=2,text="---"}
local crd_fw = TextBox{parent=svr_rect,x=13,y=3,text="---"}
local crd_rtt = TextBox{parent=svr_rect,x=13,y=3,text="---"}
crd_addr.register(f_ps, "comp_crd_addr", crd_addr.set_value)
crd_fw.register(f_ps, "comp_crd_fw", crd_fw.set_value)
crd_online.register(f_ps, "comp_crd_online", function (online)
if online then
crd_online.set_value("Online")
crd_online.recolor(colors.green)
else
crd_online.set_value("Off-line")
crd_online.recolor(colors.red)
end
end)
crd_rtt.register(f_ps, "comp_crd_rtt", function (rtt)
crd_rtt.set_value(rtt)
if type(rtt) ~= "number" then
crd_rtt.recolor(label_fg_bg.fgd)
else
if rtt > HIGH_RTT then
crd_rtt.recolor(colors.red)
elseif rtt > WARN_RTT then
crd_rtt.recolor(colors.yellow)
else
crd_rtt.recolor(colors.green)
end
end
end)
--#endregion