From 7656936982046b2d7b3a69f60bc67278d69767c5 Mon Sep 17 00:00:00 2001 From: Mikayla Fischler Date: Sun, 20 Aug 2023 16:52:12 -0400 Subject: [PATCH] #232 cleanup, added general stats --- coordinator/iocontrol.lua | 11 ++++++-- coordinator/ui/components/unit_flow.lua | 2 +- coordinator/ui/layout/flow_view.lua | 35 +++++++++++++++++++------ coordinator/ui/style.lua | 6 +++-- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/coordinator/iocontrol.lua b/coordinator/iocontrol.lua index b41f185..e4ff9b5 100644 --- a/coordinator/iocontrol.lua +++ b/coordinator/iocontrol.lua @@ -790,7 +790,7 @@ function iocontrol.update_unit_statuses(statuses) else local burn_rate_sum = 0.0 local sna_count_sum = 0 - local pu_rate, po_rate, po_am_rate = 0.0, 0.0, 0.0 + local pu_rate, po_rate, po_pl_rate, po_am_rate, spent_rate = 0.0, 0.0, 0.0, 0.0, 0.0 -- get all unit statuses for i = 1, #statuses do @@ -1151,10 +1151,10 @@ function iocontrol.update_unit_statuses(statuses) local is_pu = unit.waste_product == types.WASTE_PRODUCT.PLUTONIUM local waste_rate = burn_rate / 10.0 + local u_spent_rate = waste_rate local u_pu_rate = util.trinary(is_pu, waste_rate, 0.0) local u_po_rate = util.trinary(not is_pu, math.min(waste_rate, unit.sna_prod_rate), 0.0) - unit.unit_ps.publish("ws_rate", waste_rate) unit.unit_ps.publish("pu_rate", u_pu_rate) unit.unit_ps.publish("po_rate", u_po_rate) @@ -1163,17 +1163,22 @@ function iocontrol.update_unit_statuses(statuses) if unit.waste_product == types.WASTE_PRODUCT.POLONIUM then unit.unit_ps.publish("po_pl_rate", u_po_rate) unit.unit_ps.publish("po_am_rate", 0) + po_pl_rate = po_pl_rate + u_po_rate elseif unit.waste_product == types.WASTE_PRODUCT.ANTI_MATTER then unit.unit_ps.publish("po_pl_rate", 0) unit.unit_ps.publish("po_am_rate", u_po_rate) po_am_rate = po_am_rate + u_po_rate + u_spent_rate = 0 else unit.unit_ps.publish("po_pl_rate", 0) unit.unit_ps.publish("po_am_rate", 0) end + unit.unit_ps.publish("ws_rate", u_spent_rate) + pu_rate = pu_rate + u_pu_rate po_rate = po_rate + u_po_rate + spent_rate = spent_rate + u_spent_rate end end @@ -1181,7 +1186,9 @@ function iocontrol.update_unit_statuses(statuses) io.facility.ps.publish("sna_count", sna_count_sum) io.facility.ps.publish("pu_rate", pu_rate) io.facility.ps.publish("po_rate", po_rate) + io.facility.ps.publish("po_pl_rate", po_pl_rate) io.facility.ps.publish("po_am_rate", po_am_rate) + io.facility.ps.publish("spent_waste_rate", spent_rate) -- update alarm sounder sounder.eval(io.units) diff --git a/coordinator/ui/components/unit_flow.lua b/coordinator/ui/components/unit_flow.lua index 5ba01b1..aa13e49 100644 --- a/coordinator/ui/components/unit_flow.lua +++ b/coordinator/ui/components/unit_flow.lua @@ -27,6 +27,7 @@ local cpair = core.cpair local border = core.border local pipe = core.pipe +local wh_gray = style.wh_gray local bw_fg_bg = style.bw_fg_bg local text_c = style.text_colors local lu_c = style.lu_colors @@ -64,7 +65,6 @@ local function make(parent, x, y, wide, unit) local root = Div{parent=parent,x=x,y=y,width=_wide(136, 114),height=height} local lg_gray = cpair(colors.lightGray, colors.gray) - local wh_gray = cpair(colors.white, colors.gray) ------------------ -- COOLING LOOP -- diff --git a/coordinator/ui/layout/flow_view.lua b/coordinator/ui/layout/flow_view.lua index be71d28..5fa1cbd 100644 --- a/coordinator/ui/layout/flow_view.lua +++ b/coordinator/ui/layout/flow_view.lua @@ -28,8 +28,9 @@ local cpair = core.cpair local border = core.border local pipe = core.pipe -local bw_fg_bg = style.bw_fg_bg -local text_col = style.text_colors +local wh_gray = style.wh_gray +local bw_fg_bg = style.bw_fg_bg +local text_col = style.text_colors local lu_col = style.lu_colors -- create new flow view @@ -238,12 +239,12 @@ local function init(main) for i = 1, facility.num_units do local y_offset = y_ofs(i) unit_flow(main, flow_x, 5 + y_offset, #water_pipes == 0, units[i]) - table.insert(po_pipes, pipe(0, 3 + y_offset, 8, 0, colors.cyan, true, true)) + table.insert(po_pipes, pipe(0, 3 + y_offset, 4, 0, colors.cyan, true, true)) end PipeNetwork{parent=main,x=139,y=15,pipes=po_pipes,bg=colors.lightGray} - -- TANK VALVES -- + -- tank valves -- local next_f_id = 1 @@ -253,15 +254,15 @@ local function init(main) TextBox{parent=main,x=12,y=vy,text="\x10\x11",fg_bg=cpair(colors.black,colors.lightGray),width=2,height=1} - local conn = IndicatorLight{parent=main,x=9,y=vy+1,label=util.sprintf("PV%02d-EMC", i * 5),colors=cpair(colors.green,colors.gray)} - local open = IndicatorLight{parent=main,x=9,y=vy+2,label="OPEN",colors=cpair(colors.white,colors.gray)} + local conn = IndicatorLight{parent=main,x=9,y=vy+1,label=util.sprintf("PV%02d-EMC", i * 5),colors=style.ind_grn} + local open = IndicatorLight{parent=main,x=9,y=vy+2,label="OPEN",colors=style.ind_wht} conn.register(units[i].unit_ps, "V_emc_conn", conn.update) open.register(units[i].unit_ps, "V_emc_state", open.update) end end - -- DYNAMIC TANKS -- + -- dynamic tanks -- for i = 1, #tank_list do if tank_list[i] > 0 then @@ -309,7 +310,7 @@ local function init(main) local sps = Div{parent=main,x=140,y=3,height=12} TextBox{parent=sps,text=" ",width=24,height=1,x=1,y=1,fg_bg=cpair(colors.lightGray,colors.gray)} - TextBox{parent=sps,text="SPS",alignment=TEXT_ALIGN.CENTER,width=24,height=1,fg_bg=cpair(colors.white,colors.gray)} + TextBox{parent=sps,text="SPS",alignment=TEXT_ALIGN.CENTER,width=24,height=1,fg_bg=wh_gray} local sps_box = Rectangle{parent=sps,border=border(1, colors.gray, true),width=24,height=10} @@ -326,6 +327,24 @@ local function init(main) local sps_rate = DataIndicator{parent=sps_box,x=2,label="",format="%15d",value=0,unit="\xb5B/t",lu_colors=lu_col,width=20,fg_bg=bw_fg_bg} sps_rate.register(facility.sps_ps_tbl[1], "process_rate", function (r) sps_rate.update(r * 1000) end) + + -- statistics -- + + TextBox{parent=main,x=145,y=16,text="PROC. WASTE",alignment=TEXT_ALIGN.CENTER,width=19,height=1,fg_bg=wh_gray} + local pr_waste = Rectangle{parent=main,x=145,y=17,border=border(1, colors.gray, true),width=19,height=5,thin=true,fg_bg=bw_fg_bg} + local pu = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="Pu",unit="mB/t",format="%9.3f",value=0,width=17} + local po = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="Po",unit="mB/t",format="%9.3f",value=0,width=17} + local popl = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="PoPl",unit="mB/t",format="%7.3f",value=0,width=17} + + pu.register(facility.ps, "pu_rate", pu.update) + po.register(facility.ps, "po_rate", po.update) + popl.register(facility.ps, "po_pl_rate", popl.update) + + TextBox{parent=main,x=145,y=23,text="SPENT WASTE",alignment=TEXT_ALIGN.CENTER,width=19,height=1,fg_bg=wh_gray} + local sp_waste = Rectangle{parent=main,x=145,y=24,border=border(1, colors.gray, true),width=19,height=3,thin=true,fg_bg=bw_fg_bg} + local sum_sp_waste = DataIndicator{parent=sp_waste,lu_colors=lu_col,label="SUM",unit="mB/t",format="%8.3f",value=0,width=17} + + sum_sp_waste.register(facility.ps, "spent_waste_rate", sum_sp_waste.update) end return init diff --git a/coordinator/ui/style.lua b/coordinator/ui/style.lua index c759643..ad23989 100644 --- a/coordinator/ui/style.lua +++ b/coordinator/ui/style.lua @@ -70,16 +70,18 @@ style.colors = { -- COMMON COLOR PAIRS -- +style.wh_gray = cpair(colors.white, colors.gray) + style.bw_fg_bg = cpair(colors.black, colors.white) style.text_colors = cpair(colors.black, colors.lightGray) style.lu_colors = cpair(colors.gray, colors.gray) -style.hzd_fg_bg = cpair(colors.white, colors.gray) +style.hzd_fg_bg = style.wh_gray style.dis_colors = cpair(colors.white, colors.lightGray) style.ind_grn = cpair(colors.green, colors.gray) style.ind_yel = cpair(colors.yellow, colors.gray) style.ind_red = cpair(colors.red, colors.gray) -style.ind_wht = cpair(colors.white, colors.gray) +style.ind_wht = style.wh_gray -- UI COMPONENTS --