diff --git a/coordinator/ui/components/boiler.lua b/coordinator/ui/components/boiler.lua index 114a0bb..0d651d9 100644 --- a/coordinator/ui/components/boiler.lua +++ b/coordinator/ui/components/boiler.lua @@ -12,20 +12,19 @@ local VerticalBar = require("graphics.elements.indicators.vbar") local cpair = core.cpair local border = core.border +local text_fg_bg = style.text_colors + -- new boiler view ---@param root graphics_element parent ---@param x integer top left x ---@param y integer top left y ---@param ps psil ps interface local function new_view(root, x, y, ps) - local boiler = Rectangle{parent=root,border=border(1, colors.gray, true),width=31,height=7,x=x,y=y} - - local text_fg_bg = cpair(colors.black, colors.lightGray) - local lu_col = cpair(colors.gray, colors.gray) + local boiler = Rectangle{parent=root,border=border(1,colors.gray,true),width=31,height=7,x=x,y=y} local status = StateIndicator{parent=boiler,x=9,y=1,states=style.boiler.states,value=1,min_width=12} - local temp = DataIndicator{parent=boiler,x=5,y=3,lu_colors=lu_col,label="Temp:",unit="K",format="%10.2f",value=0,width=22,fg_bg=text_fg_bg} - local boil_r = DataIndicator{parent=boiler,x=5,y=4,lu_colors=lu_col,label="Boil:",unit="mB/t",format="%10.0f",value=0,commas=true,width=22,fg_bg=text_fg_bg} + local temp = DataIndicator{parent=boiler,x=5,y=3,lu_colors=style.lu_col,label="Temp:",unit="K",format="%10.2f",value=0,width=22,fg_bg=text_fg_bg} + local boil_r = DataIndicator{parent=boiler,x=5,y=4,lu_colors=style.lu_col,label="Boil:",unit="mB/t",format="%10.0f",value=0,commas=true,width=22,fg_bg=text_fg_bg} status.register(ps, "computed_status", status.update) temp.register(ps, "temperature", temp.update) diff --git a/coordinator/ui/components/imatrix.lua b/coordinator/ui/components/imatrix.lua index 2d553a5..d15362c 100644 --- a/coordinator/ui/components/imatrix.lua +++ b/coordinator/ui/components/imatrix.lua @@ -18,6 +18,9 @@ local border = core.border local TEXT_ALIGN = core.TEXT_ALIGN +local text_fg_bg = style.text_colors +local lu_col = style.lu_colors + -- new induction matrix view ---@param root graphics_element parent ---@param x integer top left x @@ -31,14 +34,12 @@ local function new_view(root, x, y, data, ps, id) local matrix = Div{parent=root,fg_bg=style.root,width=33,height=24,x=x,y=y} - TextBox{parent=matrix,text=" ",width=33,height=1,x=1,y=1,fg_bg=cpair(colors.lightGray,colors.gray)} - TextBox{parent=matrix,text=title,alignment=TEXT_ALIGN.CENTER,width=33,height=1,x=1,y=2,fg_bg=cpair(colors.lightGray,colors.gray)} + TextBox{parent=matrix,text=" ",width=33,height=1,x=1,y=1,fg_bg=style.lg_gray} + TextBox{parent=matrix,text=title,alignment=TEXT_ALIGN.CENTER,width=33,height=1,x=1,y=2,fg_bg=style.lg_gray} local rect = Rectangle{parent=matrix,border=border(1,colors.gray,true),width=33,height=22,x=1,y=3} - local text_fg_bg = cpair(colors.black, colors.lightGray) local label_fg_bg = cpair(colors.gray, colors.lightGray) - local lu_col = cpair(colors.gray, colors.gray) local status = StateIndicator{parent=rect,x=10,y=1,states=style.imatrix.states,value=1,min_width=14} local energy = PowerIndicator{parent=rect,x=7,y=3,lu_colors=lu_col,label="Energy: ",format="%8.2f",value=0,width=26,fg_bg=text_fg_bg} diff --git a/coordinator/ui/components/pkt_entry.lua b/coordinator/ui/components/pkt_entry.lua index 8ba805c..ac38a9c 100644 --- a/coordinator/ui/components/pkt_entry.lua +++ b/coordinator/ui/components/pkt_entry.lua @@ -4,6 +4,8 @@ local iocontrol = require("coordinator.iocontrol") +local style = require("coordinator.ui.style") + local core = require("graphics.core") local Div = require("graphics.elements.div") @@ -15,6 +17,9 @@ local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair +local text_fg_bg = style.text_colors +local lg_wh = style.lg_white + -- create a pocket list entry ---@param parent graphics_element parent ---@param id integer PKT session ID @@ -23,22 +28,22 @@ local function init(parent, id) -- root div local root = Div{parent=parent,x=2,y=2,height=4,width=parent.get_width()-2,hidden=true} - local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=cpair(colors.black,colors.white)} + local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=style.bw_fg_bg} local ps_prefix = "pkt_" .. id .. "_" - TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} - local pkt_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray),nav_active=cpair(colors.gray,colors.black)} - TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} + TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=text_fg_bg} + local pkt_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=text_fg_bg,nav_active=cpair(colors.gray,colors.black)} + TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=text_fg_bg} pkt_addr.register(ps, ps_prefix .. "addr", pkt_addr.set_value) TextBox{parent=entry,x=10,y=2,text="FW:",width=3,height=1} - local pkt_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local pkt_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=lg_wh} pkt_fw_v.register(ps, ps_prefix .. "fw", pkt_fw_v.set_value) TextBox{parent=entry,x=35,y=2,text="RTT:",width=4,height=1} - local pkt_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=cpair(colors.lightGray,colors.white)} - TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local pkt_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_wh} + TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=lg_wh} pkt_rtt.register(ps, ps_prefix .. "rtt", pkt_rtt.update) pkt_rtt.register(ps, ps_prefix .. "rtt_color", pkt_rtt.recolor) diff --git a/coordinator/ui/components/process_ctl.lua b/coordinator/ui/components/process_ctl.lua index a8a46e7..4c69b87 100644 --- a/coordinator/ui/components/process_ctl.lua +++ b/coordinator/ui/components/process_ctl.lua @@ -33,6 +33,8 @@ local lu_cpair = style.lu_colors local hzd_fg_bg = style.hzd_fg_bg local dis_colors = style.dis_colors +local gry_wht = style.gray_white + local ind_grn = style.ind_grn local ind_yel = style.ind_yel local ind_red = style.ind_red @@ -47,6 +49,10 @@ local period = core.flasher.PERIOD local function new_view(root, x, y) assert(root.get_height() >= (y + 24), "main display not of sufficient vertical resolution (add an additional row of monitors)") + local black = cpair(colors.black, colors.black) + local blk_brn = cpair(colors.black, colors.brown) + local blk_pur = cpair(colors.black, colors.purple) + local facility = iocontrol.get_db().facility local units = iocontrol.get_db().units @@ -116,35 +122,35 @@ local function new_view(root, x, y) local targets = Div{parent=proc,width=31,height=24,x=1,y=1} - local burn_tag = Div{parent=targets,x=1,y=1,width=8,height=4,fg_bg=cpair(colors.black,colors.purple)} + local burn_tag = Div{parent=targets,x=1,y=1,width=8,height=4,fg_bg=blk_pur} TextBox{parent=burn_tag,x=2,y=2,text="Burn Target",width=7,height=2} - local burn_target = Div{parent=targets,x=9,y=1,width=23,height=3,fg_bg=cpair(colors.gray,colors.white)} - local b_target = SpinboxNumeric{parent=burn_target,x=11,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,arrow_fg_bg=cpair(colors.gray,colors.white),fg_bg=bw_fg_bg} + local burn_target = Div{parent=targets,x=9,y=1,width=23,height=3,fg_bg=gry_wht} + local b_target = SpinboxNumeric{parent=burn_target,x=11,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,arrow_fg_bg=gry_wht,fg_bg=bw_fg_bg} TextBox{parent=burn_target,x=18,y=2,text="mB/t"} - local burn_sum = DataIndicator{parent=targets,x=9,y=4,label="",format="%18.1f",value=0,unit="mB/t",commas=true,lu_colors=cpair(colors.black,colors.black),width=23,fg_bg=cpair(colors.black,colors.brown)} + local burn_sum = DataIndicator{parent=targets,x=9,y=4,label="",format="%18.1f",value=0,unit="mB/t",commas=true,lu_colors=black,width=23,fg_bg=blk_brn} b_target.register(facility.ps, "process_burn_target", b_target.set_value) burn_sum.register(facility.ps, "burn_sum", burn_sum.update) - local chg_tag = Div{parent=targets,x=1,y=6,width=8,height=4,fg_bg=cpair(colors.black,colors.purple)} + local chg_tag = Div{parent=targets,x=1,y=6,width=8,height=4,fg_bg=blk_pur} TextBox{parent=chg_tag,x=2,y=2,text="Charge Target",width=7,height=2} - local chg_target = Div{parent=targets,x=9,y=6,width=23,height=3,fg_bg=cpair(colors.gray,colors.white)} - local c_target = SpinboxNumeric{parent=chg_target,x=2,y=1,whole_num_precision=15,fractional_precision=0,min=0,arrow_fg_bg=cpair(colors.gray,colors.white),fg_bg=bw_fg_bg} + local chg_target = Div{parent=targets,x=9,y=6,width=23,height=3,fg_bg=gry_wht} + local c_target = SpinboxNumeric{parent=chg_target,x=2,y=1,whole_num_precision=15,fractional_precision=0,min=0,arrow_fg_bg=gry_wht,fg_bg=bw_fg_bg} TextBox{parent=chg_target,x=18,y=2,text="MFE"} - local cur_charge = DataIndicator{parent=targets,x=9,y=9,label="",format="%19d",value=0,unit="MFE",commas=true,lu_colors=cpair(colors.black,colors.black),width=23,fg_bg=cpair(colors.black,colors.brown)} + local cur_charge = DataIndicator{parent=targets,x=9,y=9,label="",format="%19d",value=0,unit="MFE",commas=true,lu_colors=black,width=23,fg_bg=blk_brn} c_target.register(facility.ps, "process_charge_target", c_target.set_value) cur_charge.register(facility.induction_ps_tbl[1], "energy", function (j) cur_charge.update(util.joules_to_fe(j) / 1000000) end) - local gen_tag = Div{parent=targets,x=1,y=11,width=8,height=4,fg_bg=cpair(colors.black,colors.purple)} + local gen_tag = Div{parent=targets,x=1,y=11,width=8,height=4,fg_bg=blk_pur} TextBox{parent=gen_tag,x=2,y=2,text="Gen. Target",width=7,height=2} - local gen_target = Div{parent=targets,x=9,y=11,width=23,height=3,fg_bg=cpair(colors.gray,colors.white)} - local g_target = SpinboxNumeric{parent=gen_target,x=8,y=1,whole_num_precision=9,fractional_precision=0,min=0,arrow_fg_bg=cpair(colors.gray,colors.white),fg_bg=bw_fg_bg} + local gen_target = Div{parent=targets,x=9,y=11,width=23,height=3,fg_bg=gry_wht} + local g_target = SpinboxNumeric{parent=gen_target,x=8,y=1,whole_num_precision=9,fractional_precision=0,min=0,arrow_fg_bg=gry_wht,fg_bg=bw_fg_bg} TextBox{parent=gen_target,x=18,y=2,text="kFE/t"} - local cur_gen = DataIndicator{parent=targets,x=9,y=14,label="",format="%17d",value=0,unit="kFE/t",commas=true,lu_colors=cpair(colors.black,colors.black),width=23,fg_bg=cpair(colors.black,colors.brown)} + local cur_gen = DataIndicator{parent=targets,x=9,y=14,label="",format="%17d",value=0,unit="kFE/t",commas=true,lu_colors=black,width=23,fg_bg=blk_brn} g_target.register(facility.ps, "process_gen_target", g_target.set_value) cur_gen.register(facility.induction_ps_tbl[1], "last_input", function (j) cur_gen.update(util.round(util.joules_to_fe(j) / 1000)) end) @@ -159,10 +165,10 @@ local function new_view(root, x, y) for i = 1, 4 do local unit - local tag_fg_bg = cpair(colors.gray,colors.white) - local lim_fg_bg = cpair(colors.lightGray,colors.white) + local tag_fg_bg = gry_wht + local lim_fg_bg = style.lg_white local ctl_fg = colors.lightGray - local cur_fg_bg = cpair(colors.lightGray,colors.white) + local cur_fg_bg = style.lg_white local cur_lu = colors.lightGray if i <= facility.num_units then @@ -170,7 +176,7 @@ local function new_view(root, x, y) tag_fg_bg = cpair(colors.black,colors.lightBlue) lim_fg_bg = bw_fg_bg ctl_fg = colors.gray - cur_fg_bg = cpair(colors.black,colors.brown) + cur_fg_bg = blk_brn cur_lu = colors.black end @@ -180,7 +186,7 @@ local function new_view(root, x, y) TextBox{parent=unit_tag,x=2,y=2,text="Unit "..i.." Limit",width=7,height=2} local lim_ctl = Div{parent=limit_div,x=9,y=_y,width=14,height=3,fg_bg=cpair(ctl_fg,colors.white)} - local lim = SpinboxNumeric{parent=lim_ctl,x=2,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,arrow_fg_bg=cpair(colors.gray,colors.white),fg_bg=lim_fg_bg} + local lim = SpinboxNumeric{parent=lim_ctl,x=2,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,arrow_fg_bg=gry_wht,fg_bg=lim_fg_bg} TextBox{parent=lim_ctl,x=9,y=2,text="mB/t",width=4,height=1} local cur_burn = DataIndicator{parent=limit_div,x=9,y=_y+3,label="",format="%7.1f",value=0,unit="mB/t",commas=false,lu_colors=cpair(cur_lu,cur_lu),width=14,fg_bg=cur_fg_bg} @@ -203,8 +209,8 @@ local function new_view(root, x, y) local stat_div = Div{parent=proc,width=22,height=24,x=57,y=6} for i = 1, 4 do - local tag_fg_bg = cpair(colors.gray, colors.white) - local ind_fg_bg = cpair(colors.lightGray, colors.white) + local tag_fg_bg = gry_wht + local ind_fg_bg = style.lg_white local ind_off = colors.lightGray if i <= facility.num_units then @@ -241,12 +247,12 @@ local function new_view(root, x, y) local u_stat = Rectangle{parent=proc,border=border(1,colors.gray,true),thin=true,width=31,height=4,x=1,y=16,fg_bg=bw_fg_bg} local stat_line_1 = TextBox{parent=u_stat,x=1,y=1,text="UNKNOWN",width=31,height=1,alignment=TEXT_ALIGN.CENTER,fg_bg=bw_fg_bg} - local stat_line_2 = TextBox{parent=u_stat,x=1,y=2,text="awaiting data...",width=31,height=1,alignment=TEXT_ALIGN.CENTER,fg_bg=cpair(colors.gray, colors.white)} + local stat_line_2 = TextBox{parent=u_stat,x=1,y=2,text="awaiting data...",width=31,height=1,alignment=TEXT_ALIGN.CENTER,fg_bg=gry_wht} stat_line_1.register(facility.ps, "status_line_1", stat_line_1.set_value) stat_line_2.register(facility.ps, "status_line_2", stat_line_2.set_value) - local auto_controls = Div{parent=proc,x=1,y=20,width=31,height=5,fg_bg=cpair(colors.gray,colors.white)} + local auto_controls = Div{parent=proc,x=1,y=20,width=31,height=5,fg_bg=gry_wht} -- save the automatic process control configuration without starting local function _save_cfg() @@ -321,7 +327,7 @@ local function new_view(root, x, y) local waste_sel = Div{parent=proc,width=21,height=24,x=81,y=1} - TextBox{parent=waste_sel,text=" ",width=21,height=1,x=1,y=1,fg_bg=cpair(colors.black,colors.brown)} + TextBox{parent=waste_sel,text=" ",width=21,height=1,x=1,y=1,fg_bg=blk_brn} TextBox{parent=waste_sel,text="WASTE PRODUCTION",alignment=TEXT_ALIGN.CENTER,width=21,height=1,x=1,y=2,fg_bg=cpair(colors.lightGray,colors.brown)} local rect = Rectangle{parent=waste_sel,border=border(1,colors.brown,true),width=21,height=22,x=1,y=3} diff --git a/coordinator/ui/components/reactor.lua b/coordinator/ui/components/reactor.lua index b4a2c1b..c74ab0a 100644 --- a/coordinator/ui/components/reactor.lua +++ b/coordinator/ui/components/reactor.lua @@ -14,6 +14,9 @@ local StateIndicator = require("graphics.elements.indicators.state") local cpair = core.cpair local border = core.border +local text_fg_bg = style.text_colors +local lu_col = style.lu_colors + -- create new reactor view ---@param root graphics_element parent ---@param x integer top left x @@ -22,9 +25,6 @@ local border = core.border local function new_view(root, x, y, ps) local reactor = Rectangle{parent=root,border=border(1, colors.gray, true),width=30,height=7,x=x,y=y} - local text_fg_bg = cpair(colors.black, colors.lightGray) - local lu_col = cpair(colors.gray, colors.gray) - local status = StateIndicator{parent=reactor,x=6,y=1,states=style.reactor.states,value=1,min_width=16} local core_temp = DataIndicator{parent=reactor,x=2,y=3,lu_colors=lu_col,label="Core Temp:",unit="K",format="%10.2f",value=0,width=26,fg_bg=text_fg_bg} local burn_r = DataIndicator{parent=reactor,x=2,y=4,lu_colors=lu_col,label="Burn Rate:",unit="mB/t",format="%10.2f",value=0,width=26,fg_bg=text_fg_bg} diff --git a/coordinator/ui/components/turbine.lua b/coordinator/ui/components/turbine.lua index 7bd4405..d8b2e17 100644 --- a/coordinator/ui/components/turbine.lua +++ b/coordinator/ui/components/turbine.lua @@ -15,16 +15,16 @@ local VerticalBar = require("graphics.elements.indicators.vbar") local cpair = core.cpair local border = core.border +local text_fg_bg = style.text_colors +local lu_col = style.lu_colors + -- new turbine view ---@param root graphics_element parent ---@param x integer top left x ---@param y integer top left y ---@param ps psil ps interface local function new_view(root, x, y, ps) - local turbine = Rectangle{parent=root,border=border(1, colors.gray, true),width=23,height=7,x=x,y=y} - - local text_fg_bg = cpair(colors.black, colors.lightGray) - local lu_col = cpair(colors.gray, colors.gray) + local turbine = Rectangle{parent=root,border=border(1,colors.gray,true),width=23,height=7,x=x,y=y} local status = StateIndicator{parent=turbine,x=7,y=1,states=style.turbine.states,value=1,min_width=12} local prod_rate = PowerIndicator{parent=turbine,x=5,y=3,lu_colors=lu_col,label="",format="%10.2f",value=0,rate=true,width=16,fg_bg=text_fg_bg} diff --git a/coordinator/ui/components/unit_detail.lua b/coordinator/ui/components/unit_detail.lua index 985e577..fe98727 100644 --- a/coordinator/ui/components/unit_detail.lua +++ b/coordinator/ui/components/unit_detail.lua @@ -2,6 +2,8 @@ -- Reactor Unit SCADA Coordinator GUI -- +local types = require("scada-common.types") + local iocontrol = require("coordinator.iocontrol") local style = require("coordinator.ui.style") @@ -34,6 +36,9 @@ local border = core.border local bw_fg_bg = style.bw_fg_bg local lu_cpair = style.lu_colors local hzd_fg_bg = style.hzd_fg_bg +local dis_colors = style.dis_colors + +local gry_wht = style.gray_white local ind_grn = style.ind_grn local ind_yel = style.ind_yel @@ -93,7 +98,7 @@ local function init(parent, id) waste.register(u_ps, "waste_fill", waste.update) ccool.register(u_ps, "ccool_type", function (type) - if type == "mekanism:sodium" then + if type == types.FLUID.SODIUM then ccool.recolor(cpair(colors.lightBlue, colors.gray)) else ccool.recolor(cpair(colors.blue, colors.gray)) @@ -101,7 +106,7 @@ local function init(parent, id) end) hcool.register(u_ps, "hcool_type", function (type) - if type == "mekanism:superheated_sodium" then + if type == types.FLUID.SUPERHEATED_SODIUM then hcool.recolor(cpair(colors.orange, colors.gray)) else hcool.recolor(cpair(colors.white, colors.gray)) @@ -130,7 +135,7 @@ local function init(parent, id) local u_stat = Rectangle{parent=main,border=border(1,colors.gray,true),thin=true,width=33,height=4,x=46,y=3,fg_bg=bw_fg_bg} local stat_line_1 = TextBox{parent=u_stat,x=1,y=1,text="UNKNOWN",width=33,height=1,alignment=TEXT_ALIGN.CENTER,fg_bg=bw_fg_bg} - local stat_line_2 = TextBox{parent=u_stat,x=1,y=2,text="awaiting data...",width=33,height=1,alignment=TEXT_ALIGN.CENTER,fg_bg=cpair(colors.gray, colors.white)} + local stat_line_2 = TextBox{parent=u_stat,x=1,y=2,text="awaiting data...",width=33,height=1,alignment=TEXT_ALIGN.CENTER,fg_bg=gry_wht} stat_line_1.register(u_ps, "U_StatusLine1", stat_line_1.set_value) stat_line_2.register(u_ps, "U_StatusLine2", stat_line_2.set_value) @@ -341,10 +346,8 @@ local function init(parent, id) -- reactor controls -- ---------------------- - local dis_colors = cpair(colors.white, colors.lightGray) - - local burn_control = Div{parent=main,x=12,y=28,width=19,height=3,fg_bg=cpair(colors.gray,colors.white)} - local burn_rate = SpinboxNumeric{parent=burn_control,x=2,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,arrow_fg_bg=cpair(colors.gray,colors.white),fg_bg=bw_fg_bg} + local burn_control = Div{parent=main,x=12,y=28,width=19,height=3,fg_bg=gry_wht} + local burn_rate = SpinboxNumeric{parent=burn_control,x=2,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,arrow_fg_bg=gry_wht,fg_bg=bw_fg_bg} TextBox{parent=burn_control,x=9,y=2,text="mB/t"} local set_burn = function () unit.set_burn(burn_rate.get_value()) end @@ -480,7 +483,7 @@ local function init(parent, id) auto_div.line_break() local function set_group() unit.set_group(group.get_value() - 1) end - local set_grp_btn = PushButton{parent=auto_div,text="SET",x=4,min_width=5,fg_bg=cpair(colors.black,colors.yellow),active_fg_bg=style.wh_gray,dis_fg_bg=cpair(colors.gray,colors.white),callback=set_group} + local set_grp_btn = PushButton{parent=auto_div,text="SET",x=4,min_width=5,fg_bg=cpair(colors.black,colors.yellow),active_fg_bg=style.wh_gray,dis_fg_bg=gry_wht,callback=set_group} auto_div.line_break() diff --git a/coordinator/ui/components/unit_flow.lua b/coordinator/ui/components/unit_flow.lua index 2f371f5..681761b 100644 --- a/coordinator/ui/components/unit_flow.lua +++ b/coordinator/ui/components/unit_flow.lua @@ -31,6 +31,7 @@ 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 +local lg_gray = style.lg_gray local ind_grn = style.ind_grn local ind_wht = style.ind_wht @@ -64,8 +65,6 @@ local function make(parent, x, y, wide, unit) -- bounding box div local root = Div{parent=parent,x=x,y=y,width=_wide(136, 114),height=height} - local lg_gray = cpair(colors.lightGray, colors.gray) - ------------------ -- COOLING LOOP -- ------------------ diff --git a/coordinator/ui/layout/flow_view.lua b/coordinator/ui/layout/flow_view.lua index 99611a1..69f4c8a 100644 --- a/coordinator/ui/layout/flow_view.lua +++ b/coordinator/ui/layout/flow_view.lua @@ -261,7 +261,7 @@ local function init(main) if tank_defs[i] > 0 then local vy = 3 + y_ofs(i) - TextBox{parent=main,x=12,y=vy,text="\x10\x11",fg_bg=cpair(colors.black,colors.lightGray),width=2,height=1} + TextBox{parent=main,x=12,y=vy,text="\x10\x11",fg_bg=text_col,width=2,height=1} 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} @@ -288,7 +288,7 @@ local function init(main) local tank = Div{parent=main,x=3,y=7+y_offset,width=20,height=14} - TextBox{parent=tank,text=" ",height=1,x=1,y=1,fg_bg=cpair(colors.lightGray,colors.gray)} + TextBox{parent=tank,text=" ",height=1,x=1,y=1,fg_bg=style.lg_gray} TextBox{parent=tank,text="DYNAMIC TANK "..id,alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=style.wh_gray} local tank_box = Rectangle{parent=tank,border=border(1,colors.gray,true),width=20,height=12} @@ -338,7 +338,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=" ",width=24,height=1,x=1,y=1,fg_bg=style.lg_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} diff --git a/coordinator/ui/layout/front_panel.lua b/coordinator/ui/layout/front_panel.lua index 11fe172..1bfa046 100644 --- a/coordinator/ui/layout/front_panel.lua +++ b/coordinator/ui/layout/front_panel.lua @@ -2,32 +2,34 @@ -- Coordinator Front Panel GUI -- -local types = require("scada-common.types") -local util = require("scada-common.util") +local types = require("scada-common.types") +local util = require("scada-common.util") -local iocontrol = require("coordinator.iocontrol") +local iocontrol = require("coordinator.iocontrol") -local pgi = require("coordinator.ui.pgi") -local style = require("coordinator.ui.style") +local pgi = require("coordinator.ui.pgi") +local style = require("coordinator.ui.style") -local pkt_entry = require("coordinator.ui.components.pkt_entry") +local pkt_entry = require("coordinator.ui.components.pkt_entry") -local core = require("graphics.core") +local core = require("graphics.core") -local Div = require("graphics.elements.div") -local ListBox = require("graphics.elements.listbox") -local MultiPane = require("graphics.elements.multipane") -local TextBox = require("graphics.elements.textbox") +local Div = require("graphics.elements.div") +local ListBox = require("graphics.elements.listbox") +local MultiPane = require("graphics.elements.multipane") +local TextBox = require("graphics.elements.textbox") -local TabBar = require("graphics.elements.controls.tabbar") +local TabBar = require("graphics.elements.controls.tabbar") -local LED = require("graphics.elements.indicators.led") -local RGBLED = require("graphics.elements.indicators.ledrgb") +local LED = require("graphics.elements.indicators.led") +local RGBLED = require("graphics.elements.indicators.ledrgb") local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair +local led_grn = style.led_grn + -- create new front panel view ---@param panel graphics_element main displaybox ---@param num_units integer number of units (number of unit monitors) @@ -47,13 +49,13 @@ local function init(panel, num_units) local system = Div{parent=main_page,width=14,height=17,x=2,y=2} local status = LED{parent=system,label="STATUS",colors=cpair(colors.green,colors.red)} - local heartbeat = LED{parent=system,label="HEARTBEAT",colors=cpair(colors.green,colors.green_off)} + local heartbeat = LED{parent=system,label="HEARTBEAT",colors=led_grn} status.update(true) system.line_break() heartbeat.register(ps, "heartbeat", heartbeat.update) - local modem = LED{parent=system,label="MODEM",colors=cpair(colors.green,colors.green_off)} + local modem = LED{parent=system,label="MODEM",colors=led_grn} local network = RGBLED{parent=system,label="NETWORK",colors={colors.green,colors.red,colors.orange,colors.yellow,colors.gray}} network.update(types.PANEL_LINK_STATE.DISCONNECTED) system.line_break() @@ -61,25 +63,25 @@ local function init(panel, num_units) modem.register(ps, "has_modem", modem.update) network.register(ps, "link_state", network.update) - local speaker = LED{parent=system,label="SPEAKER",colors=cpair(colors.green,colors.green_off)} + local speaker = LED{parent=system,label="SPEAKER",colors=led_grn} speaker.register(ps, "has_speaker", speaker.update) ---@diagnostic disable-next-line: undefined-field local comp_id = util.sprintf("(%d)", os.getComputerID()) - TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=cpair(colors.lightGray,colors.ivory)} + TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=style.fp_label} local monitors = Div{parent=main_page,width=16,height=17,x=18,y=2} - local main_monitor = LED{parent=monitors,label="MAIN MONITOR",colors=cpair(colors.green,colors.green_off)} + local main_monitor = LED{parent=monitors,label="MAIN MONITOR",colors=led_grn} main_monitor.register(ps, "main_monitor", main_monitor.update) - local flow_monitor = LED{parent=monitors,label="FLOW MONITOR",colors=cpair(colors.green,colors.green_off)} + local flow_monitor = LED{parent=monitors,label="FLOW MONITOR",colors=led_grn} flow_monitor.register(ps, "flow_monitor", flow_monitor.update) monitors.line_break() for i = 1, num_units do - local unit_monitor = LED{parent=monitors,label="UNIT "..i.." MONITOR",colors=cpair(colors.green,colors.green_off)} + local unit_monitor = LED{parent=monitors,label="UNIT "..i.." MONITOR",colors=led_grn} unit_monitor.register(ps, "unit_monitor_" .. i, unit_monitor.update) end @@ -87,7 +89,7 @@ local function init(panel, num_units) -- about footer -- - local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=cpair(colors.lightGray,colors.ivory)} + local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=style.fp_label} local fw_v = TextBox{parent=about,x=1,y=1,text="FW: v00.00.00",alignment=TEXT_ALIGN.LEFT,height=1} local comms_v = TextBox{parent=about,x=1,y=2,text="NT: v00.00.00",alignment=TEXT_ALIGN.LEFT,height=1} @@ -101,7 +103,7 @@ local function init(panel, num_units) -- API page local api_page = Div{parent=page_div,x=1,y=1,hidden=true} - local api_list = ListBox{parent=api_page,x=1,y=1,height=17,width=51,scroll_height=1000,fg_bg=cpair(colors.black,colors.ivory),nav_fg_bg=cpair(colors.gray,colors.lightGray),nav_active=cpair(colors.black,colors.gray)} + local api_list = ListBox{parent=api_page,x=1,y=1,height=17,width=51,scroll_height=1000,fg_bg=style.fp_text,nav_fg_bg=cpair(colors.gray,colors.lightGray),nav_active=cpair(colors.black,colors.gray)} local _ = Div{parent=api_list,height=1,hidden=true} -- padding -- assemble page panes @@ -111,11 +113,11 @@ local function init(panel, num_units) local page_pane = MultiPane{parent=page_div,x=1,y=1,panes=panes} local tabs = { - { name = "CRD", color = cpair(colors.black, colors.ivory) }, - { name = "API", color = cpair(colors.black, colors.ivory) }, + { name = "CRD", color = style.fp_text }, + { name = "API", color = style.fp_text }, } - TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=cpair(colors.black,colors.white)} + TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=style.bw_fg_bg} -- link pocket API list management to PGI pgi.link_elements(api_list, pkt_entry) diff --git a/coordinator/ui/layout/main_view.lua b/coordinator/ui/layout/main_view.lua index c0e2769..34cbc59 100644 --- a/coordinator/ui/layout/main_view.lua +++ b/coordinator/ui/layout/main_view.lua @@ -28,7 +28,7 @@ local function init(main) -- window header message local header = TextBox{parent=main,y=1,text="Nuclear Generation Facility SCADA Coordinator",alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=style.header} - local ping = DataIndicator{parent=main,x=1,y=1,label="SVTT",format="%d",value=0,unit="ms",lu_colors=cpair(colors.lightGray, colors.white),width=12,fg_bg=style.header} + local ping = DataIndicator{parent=main,x=1,y=1,label="SVTT",format="%d",value=0,unit="ms",lu_colors=style.lg_white,width=12,fg_bg=style.header} -- max length example: "01:23:45 AM - Wednesday, September 28 2022" local datetime = TextBox{parent=main,x=(header.get_width()-42),y=1,text="",alignment=TEXT_ALIGN.RIGHT,width=42,height=1,fg_bg=style.header} @@ -75,7 +75,7 @@ local function init(main) assert(cnc_bottom_align_start >= cnc_y_start, "main display not of sufficient vertical resolution (add an additional row of monitors)") - TextBox{parent=main,y=cnc_bottom_align_start,text=string.rep("\x8c", header.get_width()),alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=cpair(colors.lightGray,colors.gray)} + TextBox{parent=main,y=cnc_bottom_align_start,text=string.rep("\x8c", header.get_width()),alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=style.lg_gray} cnc_bottom_align_start = cnc_bottom_align_start + 2 diff --git a/coordinator/ui/style.lua b/coordinator/ui/style.lua index ad23989..d9549a5 100644 --- a/coordinator/ui/style.lua +++ b/coordinator/ui/style.lua @@ -78,11 +78,19 @@ style.lu_colors = cpair(colors.gray, colors.gray) style.hzd_fg_bg = style.wh_gray style.dis_colors = cpair(colors.white, colors.lightGray) +style.lg_gray = cpair(colors.lightGray, colors.gray) +style.lg_white = cpair(colors.lightGray, colors.white) +style.gray_white = cpair(colors.gray, colors.white) + 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 = style.wh_gray +style.fp_text = cpair(colors.black, colors.ivory) +style.fp_label = cpair(colors.lightGray, colors.ivory) +style.led_grn = cpair(colors.green, colors.green_off) + -- UI COMPONENTS -- style.reactor = { diff --git a/reactor-plc/panel/front_panel.lua b/reactor-plc/panel/front_panel.lua index 91f8651..a59a016 100644 --- a/reactor-plc/panel/front_panel.lua +++ b/reactor-plc/panel/front_panel.lua @@ -28,6 +28,9 @@ local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair local border = core.border +local ind_grn = style.ind_grn +local ind_red = style.ind_red + -- create new front panel view ---@param panel graphics_element main displaybox local function init(panel) @@ -41,14 +44,14 @@ local function init(panel) local system = Div{parent=panel,width=14,height=18,x=2,y=3} local init_ok = LED{parent=system,label="STATUS",colors=cpair(colors.green,colors.red)} - local heartbeat = LED{parent=system,label="HEARTBEAT",colors=cpair(colors.green,colors.green_off)} + local heartbeat = LED{parent=system,label="HEARTBEAT",colors=ind_grn} system.line_break() init_ok.register(databus.ps, "init_ok", init_ok.update) heartbeat.register(databus.ps, "heartbeat", heartbeat.update) local reactor = LEDPair{parent=system,label="REACTOR",off=colors.red,c1=colors.yellow,c2=colors.green} - local modem = LED{parent=system,label="MODEM",colors=cpair(colors.green,colors.green_off)} + local modem = LED{parent=system,label="MODEM",colors=ind_grn} local network = RGBLED{parent=system,label="NETWORK",colors={colors.green,colors.red,colors.orange,colors.yellow,colors.gray}} network.update(types.PANEL_LINK_STATE.DISCONNECTED) system.line_break() @@ -57,11 +60,11 @@ local function init(panel) modem.register(databus.ps, "has_modem", modem.update) network.register(databus.ps, "link_state", network.update) - local rt_main = LED{parent=system,label="RT MAIN",colors=cpair(colors.green,colors.green_off)} - local rt_rps = LED{parent=system,label="RT RPS",colors=cpair(colors.green,colors.green_off)} - local rt_cmtx = LED{parent=system,label="RT COMMS TX",colors=cpair(colors.green,colors.green_off)} - local rt_cmrx = LED{parent=system,label="RT COMMS RX",colors=cpair(colors.green,colors.green_off)} - local rt_sctl = LED{parent=system,label="RT SPCTL",colors=cpair(colors.green,colors.green_off)} + local rt_main = LED{parent=system,label="RT MAIN",colors=ind_grn} + local rt_rps = LED{parent=system,label="RT RPS",colors=ind_grn} + local rt_cmtx = LED{parent=system,label="RT COMMS TX",colors=ind_grn} + local rt_cmrx = LED{parent=system,label="RT COMMS RX",colors=ind_grn} + local rt_sctl = LED{parent=system,label="RT SPCTL",colors=ind_grn} system.line_break() rt_main.register(databus.ps, "routine__main", rt_main.update) @@ -80,7 +83,7 @@ local function init(panel) local status = Div{parent=panel,width=19,height=18,x=17,y=3} - local active = LED{parent=status,x=2,width=12,label="RCT ACTIVE",colors=cpair(colors.green,colors.green_off)} + local active = LED{parent=status,x=2,width=12,label="RCT ACTIVE",colors=ind_grn} -- only show emergency coolant LED if emergency coolant is configured for this device if type(config.EMERGENCY_COOL) == "table" then @@ -90,7 +93,7 @@ local function init(panel) local status_trip_rct = Rectangle{parent=status,width=20,height=3,x=1,border=border(1,colors.lightGray,true),even_inner=true,fg_bg=cpair(colors.black,colors.ivory)} local status_trip = Div{parent=status_trip_rct,width=18,height=1,fg_bg=cpair(colors.black,colors.lightGray)} - local scram = LED{parent=status_trip,width=10,label="RPS TRIP",colors=cpair(colors.red,colors.red_off),flash=true,period=flasher.PERIOD.BLINK_250_MS} + local scram = LED{parent=status_trip,width=10,label="RPS TRIP",colors=ind_red,flash=true,period=flasher.PERIOD.BLINK_250_MS} local controls_rct = Rectangle{parent=status,width=17,height=3,x=1,border=border(1,colors.white,true),even_inner=true,fg_bg=cpair(colors.black,colors.ivory)} local controls = Div{parent=controls_rct,width=15,height=1,fg_bg=cpair(colors.black,colors.white)} @@ -116,20 +119,20 @@ local function init(panel) -- local rps = Rectangle{parent=panel,width=16,height=16,x=36,y=3,border=border(1,colors.lightGray),thin=true,fg_bg=cpair(colors.black,colors.lightGray)} - local rps_man = LED{parent=rps,label="MANUAL",colors=cpair(colors.red,colors.red_off)} - local rps_auto = LED{parent=rps,label="AUTOMATIC",colors=cpair(colors.red,colors.red_off)} - local rps_tmo = LED{parent=rps,label="TIMEOUT",colors=cpair(colors.red,colors.red_off)} - local rps_flt = LED{parent=rps,label="PLC FAULT",colors=cpair(colors.red,colors.red_off)} - local rps_fail = LED{parent=rps,label="RCT FAULT",colors=cpair(colors.red,colors.red_off)} + local rps_man = LED{parent=rps,label="MANUAL",colors=ind_red} + local rps_auto = LED{parent=rps,label="AUTOMATIC",colors=ind_red} + local rps_tmo = LED{parent=rps,label="TIMEOUT",colors=ind_red} + local rps_flt = LED{parent=rps,label="PLC FAULT",colors=ind_red} + local rps_fail = LED{parent=rps,label="RCT FAULT",colors=ind_red} rps.line_break() - local rps_dmg = LED{parent=rps,label="HI DAMAGE",colors=cpair(colors.red,colors.red_off)} - local rps_tmp = LED{parent=rps,label="HI TEMP",colors=cpair(colors.red,colors.red_off)} + local rps_dmg = LED{parent=rps,label="HI DAMAGE",colors=ind_red} + local rps_tmp = LED{parent=rps,label="HI TEMP",colors=ind_red} rps.line_break() - local rps_nof = LED{parent=rps,label="LO FUEL",colors=cpair(colors.red,colors.red_off)} - local rps_wst = LED{parent=rps,label="HI WASTE",colors=cpair(colors.red,colors.red_off)} + local rps_nof = LED{parent=rps,label="LO FUEL",colors=ind_red} + local rps_wst = LED{parent=rps,label="HI WASTE",colors=ind_red} rps.line_break() - local rps_ccl = LED{parent=rps,label="LO CCOOLANT",colors=cpair(colors.red,colors.red_off)} - local rps_hcl = LED{parent=rps,label="HI HCOOLANT",colors=cpair(colors.red,colors.red_off)} + local rps_ccl = LED{parent=rps,label="LO CCOOLANT",colors=ind_red} + local rps_hcl = LED{parent=rps,label="HI HCOOLANT",colors=ind_red} rps_man.register(databus.ps, "rps_manual", rps_man.update) rps_auto.register(databus.ps, "rps_automatic", rps_auto.update) diff --git a/reactor-plc/panel/style.lua b/reactor-plc/panel/style.lua index edf3f64..1cf783c 100644 --- a/reactor-plc/panel/style.lua +++ b/reactor-plc/panel/style.lua @@ -39,4 +39,9 @@ style.colors = { { c = colors.brown, hex = 0x672223 } -- RED OFF } +-- COMMON COLOR PAIRS -- + +style.ind_grn = cpair(colors.green, colors.green_off) +style.ind_red = cpair(colors.red, colors.red_off) + return style diff --git a/rtu/panel/front_panel.lua b/rtu/panel/front_panel.lua index ad6f7a0..1bf2f51 100644 --- a/rtu/panel/front_panel.lua +++ b/rtu/panel/front_panel.lua @@ -22,8 +22,11 @@ local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair -local UNIT_TYPE_LABELS = { "UNKNOWN", "REDSTONE", "BOILER", "TURBINE", "DYNAMIC TANK", "IND MATRIX", "SPS", "SNA", "ENV DETECTOR" } +local fp_label = style.fp_label +local ind_grn = style.ind_grn + +local UNIT_TYPE_LABELS = { "UNKNOWN", "REDSTONE", "BOILER", "TURBINE", "DYNAMIC TANK", "IND MATRIX", "SPS", "SNA", "ENV DETECTOR" } -- create new front panel view ---@param panel graphics_element main displaybox @@ -38,13 +41,13 @@ local function init(panel, units) local system = Div{parent=panel,width=14,height=18,x=2,y=3} local on = LED{parent=system,label="STATUS",colors=cpair(colors.green,colors.red)} - local heartbeat = LED{parent=system,label="HEARTBEAT",colors=cpair(colors.green,colors.green_off)} + local heartbeat = LED{parent=system,label="HEARTBEAT",colors=ind_grn} on.update(true) system.line_break() heartbeat.register(databus.ps, "heartbeat", heartbeat.update) - local modem = LED{parent=system,label="MODEM",colors=cpair(colors.green,colors.green_off)} + local modem = LED{parent=system,label="MODEM",colors=ind_grn} local network = RGBLED{parent=system,label="NETWORK",colors={colors.green,colors.red,colors.orange,colors.yellow,colors.gray}} network.update(types.PANEL_LINK_STATE.DISCONNECTED) system.line_break() @@ -52,8 +55,8 @@ local function init(panel, units) modem.register(databus.ps, "has_modem", modem.update) network.register(databus.ps, "link_state", network.update) - local rt_main = LED{parent=system,label="RT MAIN",colors=cpair(colors.green,colors.green_off)} - local rt_comm = LED{parent=system,label="RT COMMS",colors=cpair(colors.green,colors.green_off)} + local rt_main = LED{parent=system,label="RT MAIN",colors=ind_grn} + local rt_comm = LED{parent=system,label="RT COMMS",colors=ind_grn} system.line_break() rt_main.register(databus.ps, "routine__main", rt_main.update) @@ -61,7 +64,7 @@ local function init(panel, units) ---@diagnostic disable-next-line: undefined-field local comp_id = util.sprintf("(%d)", os.getComputerID()) - TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=cpair(colors.lightGray,colors.ivory)} + TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=fp_label} TextBox{parent=system,x=1,y=14,text="SPEAKERS",height=1,width=8,fg_bg=style.label} local speaker_count = DataIndicator{parent=system,x=10,y=14,label="",format="%3d",value=0,width=3,fg_bg=cpair(colors.gray,colors.white)} @@ -71,7 +74,7 @@ local function init(panel, units) -- about label -- - local about = Div{parent=panel,width=15,height=3,x=1,y=18,fg_bg=cpair(colors.lightGray,colors.ivory)} + local about = Div{parent=panel,width=15,height=3,x=1,y=18,fg_bg=fp_label} local fw_v = TextBox{parent=about,x=1,y=1,text="FW: v00.00.00",alignment=TEXT_ALIGN.LEFT,height=1} local comms_v = TextBox{parent=about,x=1,y=2,text="NT: v00.00.00",alignment=TEXT_ALIGN.LEFT,height=1} @@ -90,7 +93,7 @@ local function init(panel, units) -- show routine statuses for i = 1, list_length do TextBox{parent=threads,x=1,y=i,text=util.sprintf("%02d",i),height=1} - local rt_unit = LED{parent=threads,x=4,y=i,label="RT",colors=cpair(colors.green,colors.green_off)} + local rt_unit = LED{parent=threads,x=4,y=i,label="RT",colors=ind_grn} rt_unit.register(databus.ps, "routine__unit_" .. i, rt_unit.update) end @@ -115,7 +118,7 @@ local function init(panel, units) -- assignment (unit # or facility) local for_unit = util.trinary(unit.reactor == 0, "\x1a FACIL ", "\x1a UNIT " .. unit.reactor) - TextBox{parent=unit_hw_statuses,y=i,x=19,text=for_unit,height=1,fg_bg=cpair(colors.lightGray,colors.ivory)} + TextBox{parent=unit_hw_statuses,y=i,x=19,text=for_unit,height=1,fg_bg=fp_label} end end diff --git a/rtu/panel/style.lua b/rtu/panel/style.lua index edf3f64..bfc52cf 100644 --- a/rtu/panel/style.lua +++ b/rtu/panel/style.lua @@ -39,4 +39,10 @@ style.colors = { { c = colors.brown, hex = 0x672223 } -- RED OFF } +-- COMMON COLOR PAIRS -- + +style.fp_label = cpair(colors.lightGray, colors.ivory) + +style.ind_grn = cpair(colors.green, colors.green_off) + return style diff --git a/supervisor/panel/components/pdg_entry.lua b/supervisor/panel/components/pdg_entry.lua index 1e49fca..3c6ec43 100644 --- a/supervisor/panel/components/pdg_entry.lua +++ b/supervisor/panel/components/pdg_entry.lua @@ -4,6 +4,8 @@ local databus = require("supervisor.databus") +local style = require("supervisor.panel.style") + local core = require("graphics.core") local Div = require("graphics.elements.div") @@ -15,28 +17,31 @@ local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair +local black_lg = style.black_lg +local lg_white = style.lg_white + -- create a pocket diagnostics list entry ---@param parent graphics_element parent ---@param id integer PDG session ID local function init(parent, id) -- root div local root = Div{parent=parent,x=2,y=2,height=4,width=parent.get_width()-2,hidden=true} - local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=cpair(colors.black,colors.white)} + local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=style.bw_fg_bg} local ps_prefix = "pdg_" .. id .. "_" - TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} - local pdg_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray),nav_active=cpair(colors.gray,colors.black)} - TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} + TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=black_lg} + local pdg_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=black_lg,nav_active=cpair(colors.gray,colors.black)} + TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=black_lg} pdg_addr.register(databus.ps, ps_prefix .. "addr", pdg_addr.set_value) TextBox{parent=entry,x=10,y=2,text="FW:",width=3,height=1} - local pdg_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local pdg_fw_v = TextBox{parent=entry,x=14,y=2,text=" ------- ",width=20,height=1,fg_bg=lg_white} pdg_fw_v.register(databus.ps, ps_prefix .. "fw", pdg_fw_v.set_value) TextBox{parent=entry,x=35,y=2,text="RTT:",width=4,height=1} - local pdg_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=cpair(colors.lightGray,colors.white)} - TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local pdg_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_white} + TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=lg_white} pdg_rtt.register(databus.ps, ps_prefix .. "rtt", pdg_rtt.update) pdg_rtt.register(databus.ps, ps_prefix .. "rtt_color", pdg_rtt.recolor) diff --git a/supervisor/panel/components/rtu_entry.lua b/supervisor/panel/components/rtu_entry.lua index d9634e9..b6c1324 100644 --- a/supervisor/panel/components/rtu_entry.lua +++ b/supervisor/panel/components/rtu_entry.lua @@ -4,6 +4,8 @@ local databus = require("supervisor.databus") +local style = require("supervisor.panel.style") + local core = require("graphics.core") local Div = require("graphics.elements.div") @@ -15,32 +17,35 @@ local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair +local black_lg = style.black_lg +local lg_white = style.lg_white + -- create an RTU list entry ---@param parent graphics_element parent ---@param id integer RTU session ID local function init(parent, id) -- root div local root = Div{parent=parent,x=2,y=2,height=4,width=parent.get_width()-2,hidden=true} - local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=cpair(colors.black,colors.white)} + local entry = Div{parent=root,x=2,y=1,height=3,fg_bg=style.bw_fg_bg} local ps_prefix = "rtu_" .. id .. "_" - TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} - local rtu_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray),nav_active=cpair(colors.gray,colors.black)} - TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} + TextBox{parent=entry,x=1,y=1,text="",width=8,height=1,fg_bg=black_lg} + local rtu_addr = TextBox{parent=entry,x=1,y=2,text="@ C ??",alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=black_lg,nav_active=cpair(colors.gray,colors.black)} + TextBox{parent=entry,x=1,y=3,text="",width=8,height=1,fg_bg=black_lg} rtu_addr.register(databus.ps, ps_prefix .. "addr", rtu_addr.set_value) TextBox{parent=entry,x=10,y=2,text="UNITS:",width=7,height=1} - local unit_count = DataIndicator{parent=entry,x=17,y=2,label="",unit="",format="%2d",value=0,width=2,fg_bg=cpair(colors.gray,colors.white)} + local unit_count = DataIndicator{parent=entry,x=17,y=2,label="",unit="",format="%2d",value=0,width=2,fg_bg=style.gray_white} unit_count.register(databus.ps, ps_prefix .. "units", unit_count.set_value) TextBox{parent=entry,x=21,y=2,text="FW:",width=3,height=1} - local rtu_fw_v = TextBox{parent=entry,x=25,y=2,text=" ------- ",width=9,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local rtu_fw_v = TextBox{parent=entry,x=25,y=2,text=" ------- ",width=9,height=1,fg_bg=lg_white} rtu_fw_v.register(databus.ps, ps_prefix .. "fw", rtu_fw_v.set_value) TextBox{parent=entry,x=36,y=2,text="RTT:",width=4,height=1} - local rtu_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=cpair(colors.lightGray,colors.white)} - TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local rtu_rtt = DataIndicator{parent=entry,x=40,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_white} + TextBox{parent=entry,x=46,y=2,text="ms",width=4,height=1,fg_bg=lg_white} rtu_rtt.register(databus.ps, ps_prefix .. "rtt", rtu_rtt.update) rtu_rtt.register(databus.ps, ps_prefix .. "rtt_color", rtu_rtt.recolor) diff --git a/supervisor/panel/front_panel.lua b/supervisor/panel/front_panel.lua index 4ae6ddd..3655dc4 100644 --- a/supervisor/panel/front_panel.lua +++ b/supervisor/panel/front_panel.lua @@ -29,6 +29,14 @@ local TEXT_ALIGN = core.TEXT_ALIGN local cpair = core.cpair +local bw_fg_bg = style.bw_fg_bg + +local black_lg = style.black_lg +local lg_white = style.lg_white +local gry_wht = style.gray_white + +local ind_grn = style.ind_grn + -- create new front panel view ---@param panel graphics_element main displaybox local function init(panel) @@ -45,26 +53,26 @@ local function init(panel) local system = Div{parent=main_page,width=14,height=17,x=2,y=2} local on = LED{parent=system,label="STATUS",colors=cpair(colors.green,colors.red)} - local heartbeat = LED{parent=system,label="HEARTBEAT",colors=cpair(colors.green,colors.green_off)} + local heartbeat = LED{parent=system,label="HEARTBEAT",colors=ind_grn} on.update(true) system.line_break() heartbeat.register(databus.ps, "heartbeat", heartbeat.update) - local modem = LED{parent=system,label="MODEM",colors=cpair(colors.green,colors.green_off)} + local modem = LED{parent=system,label="MODEM",colors=ind_grn} system.line_break() modem.register(databus.ps, "has_modem", modem.update) ---@diagnostic disable-next-line: undefined-field local comp_id = util.sprintf("(%d)", os.getComputerID()) - TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=cpair(colors.lightGray,colors.ivory)} + TextBox{parent=system,x=9,y=4,width=6,height=1,text=comp_id,fg_bg=style.fp_label} -- -- about footer -- - local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=cpair(colors.lightGray,colors.ivory)} + local about = Div{parent=main_page,width=15,height=3,x=1,y=16,fg_bg=style.fp_label} local fw_v = TextBox{parent=about,x=1,y=1,text="FW: v00.00.00",alignment=TEXT_ALIGN.LEFT,height=1} local comms_v = TextBox{parent=about,x=1,y=2,text="NT: v00.00.00",alignment=TEXT_ALIGN.LEFT,height=1} @@ -82,25 +90,25 @@ local function init(panel) for i = 1, config.NUM_REACTORS do local ps_prefix = "plc_" .. i .. "_" - local plc_entry = Div{parent=plc_list,height=3,fg_bg=cpair(colors.black,colors.white)} + local plc_entry = Div{parent=plc_list,height=3,fg_bg=bw_fg_bg} - TextBox{parent=plc_entry,x=1,y=1,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} - TextBox{parent=plc_entry,x=1,y=2,text="UNIT "..i,alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} - TextBox{parent=plc_entry,x=1,y=3,text="",width=8,height=1,fg_bg=cpair(colors.black,colors.lightGray)} + TextBox{parent=plc_entry,x=1,y=1,text="",width=8,height=1,fg_bg=black_lg} + TextBox{parent=plc_entry,x=1,y=2,text="UNIT "..i,alignment=TEXT_ALIGN.CENTER,width=8,height=1,fg_bg=black_lg} + TextBox{parent=plc_entry,x=1,y=3,text="",width=8,height=1,fg_bg=black_lg} - local conn = LED{parent=plc_entry,x=10,y=2,label="LINK",colors=cpair(colors.green,colors.green_off)} + local conn = LED{parent=plc_entry,x=10,y=2,label="LINK",colors=ind_grn} conn.register(databus.ps, ps_prefix .. "conn", conn.update) - local plc_addr = TextBox{parent=plc_entry,x=17,y=2,text=" --- ",width=5,height=1,fg_bg=cpair(colors.gray,colors.white)} + local plc_addr = TextBox{parent=plc_entry,x=17,y=2,text=" --- ",width=5,height=1,fg_bg=gry_wht} plc_addr.register(databus.ps, ps_prefix .. "addr", plc_addr.set_value) TextBox{parent=plc_entry,x=23,y=2,text="FW:",width=3,height=1} - local plc_fw_v = TextBox{parent=plc_entry,x=27,y=2,text=" ------- ",width=9,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local plc_fw_v = TextBox{parent=plc_entry,x=27,y=2,text=" ------- ",width=9,height=1,fg_bg=lg_white} plc_fw_v.register(databus.ps, ps_prefix .. "fw", plc_fw_v.set_value) TextBox{parent=plc_entry,x=37,y=2,text="RTT:",width=4,height=1} - local plc_rtt = DataIndicator{parent=plc_entry,x=42,y=2,label="",unit="",format="%4d",value=0,width=4,fg_bg=cpair(colors.lightGray,colors.white)} - TextBox{parent=plc_entry,x=47,y=2,text="ms",width=4,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local plc_rtt = DataIndicator{parent=plc_entry,x=42,y=2,label="",unit="",format="%4d",value=0,width=4,fg_bg=lg_white} + TextBox{parent=plc_entry,x=47,y=2,text="ms",width=4,height=1,fg_bg=lg_white} plc_rtt.register(databus.ps, ps_prefix .. "rtt", plc_rtt.update) plc_rtt.register(databus.ps, ps_prefix .. "rtt_color", plc_rtt.recolor) @@ -116,22 +124,22 @@ local function init(panel) -- coordinator page local crd_page = Div{parent=page_div,x=1,y=1,hidden=true} - local crd_box = Div{parent=crd_page,x=2,y=2,width=49,height=4,fg_bg=cpair(colors.black,colors.white)} + local crd_box = Div{parent=crd_page,x=2,y=2,width=49,height=4,fg_bg=bw_fg_bg} - local crd_conn = LED{parent=crd_box,x=2,y=2,label="CONNECTION",colors=cpair(colors.green,colors.green_off)} + local crd_conn = LED{parent=crd_box,x=2,y=2,label="CONNECTION",colors=ind_grn} crd_conn.register(databus.ps, "crd_conn", crd_conn.update) - TextBox{parent=crd_box,x=4,y=3,text="COMPUTER",width=8,height=1,fg_bg=cpair(colors.gray,colors.white)} - local crd_addr = TextBox{parent=crd_box,x=13,y=3,text="---",width=5,height=1,fg_bg=cpair(colors.gray,colors.white)} + TextBox{parent=crd_box,x=4,y=3,text="COMPUTER",width=8,height=1,fg_bg=gry_wht} + local crd_addr = TextBox{parent=crd_box,x=13,y=3,text="---",width=5,height=1,fg_bg=gry_wht} crd_addr.register(databus.ps, "crd_addr", crd_addr.set_value) TextBox{parent=crd_box,x=22,y=2,text="FW:",width=3,height=1} - local crd_fw_v = TextBox{parent=crd_box,x=26,y=2,text=" ------- ",width=9,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local crd_fw_v = TextBox{parent=crd_box,x=26,y=2,text=" ------- ",width=9,height=1,fg_bg=lg_white} crd_fw_v.register(databus.ps, "crd_fw", crd_fw_v.set_value) TextBox{parent=crd_box,x=36,y=2,text="RTT:",width=4,height=1} - local crd_rtt = DataIndicator{parent=crd_box,x=41,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=cpair(colors.lightGray,colors.white)} - TextBox{parent=crd_box,x=47,y=2,text="ms",width=4,height=1,fg_bg=cpair(colors.lightGray,colors.white)} + local crd_rtt = DataIndicator{parent=crd_box,x=41,y=2,label="",unit="",format="%5d",value=0,width=5,fg_bg=lg_white} + TextBox{parent=crd_box,x=47,y=2,text="ms",width=4,height=1,fg_bg=lg_white} crd_rtt.register(databus.ps, "crd_rtt", crd_rtt.update) crd_rtt.register(databus.ps, "crd_rtt_color", crd_rtt.recolor) @@ -155,7 +163,7 @@ local function init(panel) { name = "PKT", color = cpair(colors.black, colors.ivory) }, } - TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=cpair(colors.black,colors.white)} + TabBar{parent=panel,y=2,tabs=tabs,min_width=9,callback=page_pane.set_value,fg_bg=bw_fg_bg} -- link RTU/PDG list management to PGI pgi.link_elements(rtu_list, rtu_entry, pdg_list, pdg_entry) diff --git a/supervisor/panel/style.lua b/supervisor/panel/style.lua index 0668ccc..49bfb4f 100644 --- a/supervisor/panel/style.lua +++ b/supervisor/panel/style.lua @@ -39,4 +39,16 @@ style.colors = { { c = colors.brown, hex = 0x672223 } -- RED OFF } +-- COMMON COLOR PAIRS -- + +style.text_fg_bg = cpair(colors.black, colors.ivory) +style.bw_fg_bg = cpair(colors.black, colors.white) +style.fp_label = cpair(colors.lightGray, colors.ivory) + +style.black_lg = cpair(colors.black, colors.lightGray) +style.lg_white = cpair(colors.lightGray, colors.white) +style.gray_white = cpair(colors.gray, colors.white) + +style.ind_grn = cpair(colors.green, colors.green_off) + return style