mirror of
https://github.com/MikaylaFischler/cc-mek-scada.git
synced 2024-08-30 18:22:34 +00:00
66 lines
2.7 KiB
Lua
66 lines
2.7 KiB
Lua
|
local util = require("scada-common.util")
|
||
|
|
||
|
local iocontrol = require("coordinator.iocontrol")
|
||
|
|
||
|
local style = require("coordinator.ui.style")
|
||
|
|
||
|
local core = require("graphics.core")
|
||
|
|
||
|
local Div = require("graphics.elements.div")
|
||
|
local Rectangle = require("graphics.elements.rectangle")
|
||
|
local TextBox = require("graphics.elements.textbox")
|
||
|
|
||
|
local AlarmLight = require("graphics.elements.indicators.alight")
|
||
|
local CoreMap = require("graphics.elements.indicators.coremap")
|
||
|
local DataIndicator = require("graphics.elements.indicators.data")
|
||
|
local IndicatorLight = require("graphics.elements.indicators.light")
|
||
|
local TriIndicatorLight = require("graphics.elements.indicators.trilight")
|
||
|
local VerticalBar = require("graphics.elements.indicators.vbar")
|
||
|
|
||
|
local HazardButton = require("graphics.elements.controls.hazard_button")
|
||
|
local MultiButton = require("graphics.elements.controls.multi_button")
|
||
|
local PushButton = require("graphics.elements.controls.push_button")
|
||
|
local RadioButton = require("graphics.elements.controls.radio_button")
|
||
|
local SpinboxNumeric = require("graphics.elements.controls.spinbox_numeric")
|
||
|
|
||
|
local TEXT_ALIGN = core.graphics.TEXT_ALIGN
|
||
|
|
||
|
local cpair = core.graphics.cpair
|
||
|
local border = core.graphics.border
|
||
|
|
||
|
-- new process control view
|
||
|
---@param root graphics_element parent
|
||
|
---@param x integer top left x
|
||
|
---@param y integer top left y
|
||
|
local function new_view(root, x, y)
|
||
|
local facility = iocontrol.get_db().facility
|
||
|
local units = iocontrol.get_db().units
|
||
|
|
||
|
local bw_fg_bg = cpair(colors.black, colors.white)
|
||
|
|
||
|
local proc = Div{parent=root,width=60,height=24,x=x,y=y}
|
||
|
|
||
|
local limits = Div{parent=proc,width=40,height=24,x=30,y=1}
|
||
|
|
||
|
for i = 1, facility.num_units do
|
||
|
local unit = units[i] ---@type ioctl_entry
|
||
|
|
||
|
local _y = ((i - 1) * 4) + 1
|
||
|
|
||
|
TextBox{parent=limits,x=1,y=_y+1,text="Unit "..i}
|
||
|
|
||
|
local lim_ctl = Div{parent=limits,x=8,y=_y,width=20,height=3,fg_bg=cpair(colors.gray,colors.white)}
|
||
|
local burn_rate = SpinboxNumeric{parent=lim_ctl,x=2,y=1,whole_num_precision=4,fractional_precision=1,min=0.1,max=0.1,arrow_fg_bg=cpair(colors.gray,colors.white),fg_bg=bw_fg_bg}
|
||
|
|
||
|
unit.reactor_ps.subscribe("max_burn", burn_rate.set_max)
|
||
|
unit.reactor_ps.subscribe("burn_limit", burn_rate.set_value)
|
||
|
|
||
|
TextBox{parent=lim_ctl,x=9,y=2,text="mB/t"}
|
||
|
|
||
|
local set_burn = function () unit.set_limit(burn_rate.get_value()) end
|
||
|
PushButton{parent=lim_ctl,x=14,y=2,text="SAVE",min_width=6,fg_bg=cpair(colors.black,colors.yellow),active_fg_bg=cpair(colors.white,colors.gray),callback=set_burn}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return new_view
|