diff --git a/coordinator/startup.lua b/coordinator/startup.lua
index 60a0c88..17fcc6f 100644
--- a/coordinator/startup.lua
+++ b/coordinator/startup.lua
@@ -20,7 +20,7 @@ local sounder = require("coordinator.sounder")
local apisessions = require("coordinator.session.apisessions")
-local COORDINATOR_VERSION = "v0.15.3"
+local COORDINATOR_VERSION = "v0.15.4"
local println = util.println
local println_ts = util.println_ts
diff --git a/coordinator/ui/components/processctl.lua b/coordinator/ui/components/processctl.lua
index a238a8c..7e0016a 100644
--- a/coordinator/ui/components/processctl.lua
+++ b/coordinator/ui/components/processctl.lua
@@ -33,7 +33,7 @@ local period = core.flasher.PERIOD
---@param x integer top left x
---@param y integer top left y
local function new_view(root, x, y)
- assert(root.height() >= (y + 24), "main display not of sufficient vertical resolution (add an additional row of monitors)")
+ assert(root.get_height() >= (y + 24), "main display not of sufficient vertical resolution (add an additional row of monitors)")
local facility = iocontrol.get_db().facility
local units = iocontrol.get_db().units
diff --git a/coordinator/ui/components/unit_overview.lua b/coordinator/ui/components/unit_overview.lua
index bd341bf..3af8c83 100644
--- a/coordinator/ui/components/unit_overview.lua
+++ b/coordinator/ui/components/unit_overview.lua
@@ -38,7 +38,7 @@ local function make(parent, x, y, unit)
height = 17
end
- assert(parent.height() >= (y + height), "main display not of sufficient vertical resolution (add an additional row of monitors)")
+ assert(parent.get_height() >= (y + height), "main display not of sufficient vertical resolution (add an additional row of monitors)")
-- bounding box div
local root = Div{parent=parent,x=x,y=y,width=80,height=height}
diff --git a/coordinator/ui/layout/main_view.lua b/coordinator/ui/layout/main_view.lua
index a758b24..a7b3c86 100644
--- a/coordinator/ui/layout/main_view.lua
+++ b/coordinator/ui/layout/main_view.lua
@@ -32,7 +32,7 @@ local function init(main)
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}
-- max length example: "01:23:45 AM - Wednesday, September 28 2022"
- local datetime = TextBox{parent=main,x=(header.width()-42),y=1,text="",alignment=TEXT_ALIGN.RIGHT,width=42,height=1,fg_bg=style.header}
+ 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}
ping.register(facility.ps, "sv_ping", ping.update)
datetime.register(facility.ps, "date_time", datetime.set_value)
@@ -45,12 +45,12 @@ local function init(main)
-- unit overviews
if facility.num_units >= 1 then
uo_1 = unit_overview(main, 2, 3, units[1])
- row_1_height = uo_1.height()
+ row_1_height = uo_1.get_height()
end
if facility.num_units >= 2 then
uo_2 = unit_overview(main, 84, 3, units[2])
- row_1_height = math.max(row_1_height, uo_2.height())
+ row_1_height = math.max(row_1_height, uo_2.get_height())
end
cnc_y_start = cnc_y_start + row_1_height + 1
@@ -60,11 +60,11 @@ local function init(main)
local row_2_offset = cnc_y_start
uo_3 = unit_overview(main, 2, row_2_offset, units[3])
- cnc_y_start = row_2_offset + uo_3.height() + 1
+ cnc_y_start = row_2_offset + uo_3.get_height() + 1
if facility.num_units == 4 then
uo_4 = unit_overview(main, 84, row_2_offset, units[4])
- cnc_y_start = math.max(cnc_y_start, row_2_offset + uo_4.height() + 1)
+ cnc_y_start = math.max(cnc_y_start, row_2_offset + uo_4.get_height() + 1)
end
end
@@ -73,11 +73,11 @@ local function init(main)
cnc_y_start = cnc_y_start
-- induction matrix and process control interfaces are 24 tall + space needed for divider
- local cnc_bottom_align_start = main.height() - 26
+ local cnc_bottom_align_start = main.get_height() - 26
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=util.strrep("\x8c", header.width()),alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=cpair(colors.lightGray,colors.gray)}
+ TextBox{parent=main,y=cnc_bottom_align_start,text=util.strrep("\x8c", header.get_width()),alignment=TEXT_ALIGN.CENTER,height=1,fg_bg=cpair(colors.lightGray,colors.gray)}
cnc_bottom_align_start = cnc_bottom_align_start + 2
diff --git a/graphics/element.lua b/graphics/element.lua
index c6dbaa7..d0e6a3b 100644
--- a/graphics/element.lua
+++ b/graphics/element.lua
@@ -68,21 +68,22 @@ function element.new(args)
define_completed = false,
p_window = nil, ---@type table
position = { x = 1, y = 1 }, ---@type coordinate_2d
- child_offset = { x = 0, y = 0 },
+ child_offset = { x = 0, y = 0 }, ---@type coordinate_2d
bounds = { x1 = 1, y1 = 1, x2 = 1, y2 = 1 }, ---@class element_bounds
next_y = 1,
- children = {},
subscriptions = {},
mt = {}
}
- ---@class graphics_template
+ ---@class graphics_base
local protected = {
enabled = true,
- value = nil, ---@type any
- window = nil, ---@type table
+ value = nil, ---@type any
+ window = nil, ---@type table
+ content_window = nil, ---@type table|nil
fg_bg = core.cpair(colors.white, colors.black),
- frame = core.gframe(1, 1, 1, 1)
+ frame = core.gframe(1, 1, 1, 1),
+ children = {}
}
local name_brief = "graphics.element{" .. self.elem_type .. "}: "
@@ -199,15 +200,15 @@ function element.new(args)
-- luacheck: push ignore
---@diagnostic disable: unused-local, unused-vararg
- -- dynamically insert a child element
+ -- handle a child element having been added
---@param id string|integer element identifier
- ---@param elem graphics_element element
- function protected.insert(id, elem)
+ ---@param child graphics_element child element
+ function protected.on_added(id, child)
end
- -- dynamically remove a child element
+ -- handle a child element having been removed
---@param id string|integer element identifier
- function protected.remove(id)
+ function protected.on_removed(id)
end
-- handle a mouse event
@@ -280,6 +281,14 @@ function element.new(args)
---@return graphics_element element, element_id id
function protected.get() return public, self.id end
+ -- report completion of element instantiation and get the public interface
+ ---@nodiscard
+ ---@return graphics_element element, element_id id
+ function protected.complete()
+ if args.parent ~= nil then args.parent.__child_ready(self.id, public) end
+ return public, self.id
+ end
+
-----------
-- SETUP --
-----------
@@ -306,11 +315,19 @@ function element.new(args)
-- get the window object
---@nodiscard
- function public.window() return protected.window end
+ function public.window() return protected.content_window or protected.window end
-- delete this element (hide and unsubscribe from PSIL)
function public.delete()
- -- hide + stop animations
+ -- grab parent fg/bg so we can clear cleanly
+ if args.parent ~= nil then
+ local fg_bg = args.parent.get_fg_bg()
+ protected.window.setBackgroundColor(fg_bg.bkg)
+ protected.window.setTextColor(fg_bg.fgd)
+ end
+
+ -- clear, hide, and stop animations
+ protected.window.clear()
public.hide()
-- unsubscribe from PSIL
@@ -320,9 +337,9 @@ function element.new(args)
end
-- delete all children
- for k, v in pairs(self.children) do
+ for k, v in pairs(protected.children) do
v.delete()
- self.children[k] = nil
+ protected.children[k] = nil
end
end
@@ -331,7 +348,7 @@ function element.new(args)
-- add a child element
---@nodiscard
---@param key string|nil id
- ---@param child graphics_template
+ ---@param child graphics_base
---@return integer|string key
function public.__add_child(key, child)
-- offset first automatic placement
@@ -346,26 +363,34 @@ function element.new(args)
local child_element = child.get()
if key == nil then
- table.insert(self.children, child_element)
- return #self.children
+ table.insert(protected.children, child_element)
+ return #protected.children
else
- self.children[key] = child_element
+ protected.children[key] = child_element
return key
end
end
+ -- actions to take upon a child element becoming ready (initial draw/construction completed)
+ ---@param key string|integer id
+ ---@param child graphics_element
+ function public.__child_ready(key, child)
+ protected.on_added(key, child)
+ end
+
-- get a child element
---@nodiscard
---@param id element_id
---@return graphics_element
- function public.get_child(id) return self.children[id] end
+ function public.get_child(id) return protected.children[id] end
-- remove a child element
---@param id element_id
function public.remove(id)
- if self.children[id] ~= nil then
- self.children[id].delete()
- self.children[id] = nil
+ if protected.children[id] ~= nil then
+ protected.children[id].delete()
+ protected.children[id] = nil
+ protected.on_removed(id)
end
end
@@ -374,13 +399,13 @@ function element.new(args)
---@param id element_id
---@return graphics_element|nil element
function public.get_element_by_id(id)
- if self.children[id] == nil then
- for _, child in pairs(self.children) do
+ if protected.children[id] == nil then
+ for _, child in pairs(protected.children) do
local elem = child.get_element_by_id(id)
if elem ~= nil then return elem end
end
else
- return self.children[id]
+ return protected.children[id]
end
return nil
@@ -419,14 +444,14 @@ function element.new(args)
-- get element width
---@nodiscard
---@return integer width
- function public.width()
+ function public.get_width()
return protected.frame.w
end
-- get element height
---@nodiscard
---@return integer height
- function public.height()
+ function public.get_height()
return protected.frame.h
end
@@ -501,7 +526,7 @@ function element.new(args)
-- handle the mouse event then pass to children
protected.handle_mouse(event_T)
- for _, child in pairs(self.children) do child.handle_mouse(event_T) end
+ for _, child in pairs(protected.children) do child.handle_mouse(event_T) end
end
end
@@ -536,7 +561,9 @@ function element.new(args)
if animate ~= false then public.animate_all() end
end
- -- hide the element and disables animations
+ -- hide the element and disables animations
+ -- this alone does not cause an element to be fully hidden, it only prevents updates from being shown
+ ---@see graphics_element.content_redraw
function public.hide()
public.freeze_all() -- stop animations for efficiency/performance
protected.window.setVisible(false)
@@ -552,7 +579,7 @@ function element.new(args)
function public.animate_all()
if protected.window.isVisible() then
public.animate()
- for _, child in pairs(self.children) do child.animate_all() end
+ for _, child in pairs(protected.children) do child.animate_all() end
end
end
@@ -564,7 +591,7 @@ function element.new(args)
-- freeze animation(s) for this element and all its children
function public.freeze_all()
public.freeze()
- for _, child in pairs(self.children) do child.freeze_all() end
+ for _, child in pairs(protected.children) do child.freeze_all() end
end
-- re-draw the element
@@ -572,6 +599,14 @@ function element.new(args)
protected.window.redraw()
end
+ -- if a content window is set, clears it then re-draws all children
+ function public.content_redraw()
+ if protected.content_window ~= nil then
+ protected.content_window.clear()
+ for _, child in pairs(protected.children) do child.redraw() end
+ end
+ end
+
return protected
end
diff --git a/graphics/elements/animations/waiting.lua b/graphics/elements/animations/waiting.lua
index 9d88c91..9dc089f 100644
--- a/graphics/elements/animations/waiting.lua
+++ b/graphics/elements/animations/waiting.lua
@@ -103,7 +103,7 @@ local function waiting(args)
e.start_anim()
- return e.get()
+ return e.complete()
end
return waiting
diff --git a/graphics/elements/colormap.lua b/graphics/elements/colormap.lua
index f494158..be92d83 100644
--- a/graphics/elements/colormap.lua
+++ b/graphics/elements/colormap.lua
@@ -28,7 +28,7 @@ local function colormap(args)
e.window.setCursorPos(1, 1)
e.window.blit(spaces, bkg, bkg)
- return e.get()
+ return e.complete()
end
return colormap
diff --git a/graphics/elements/controls/hazard_button.lua b/graphics/elements/controls/hazard_button.lua
index 844a6c8..6ffe74d 100644
--- a/graphics/elements/controls/hazard_button.lua
+++ b/graphics/elements/controls/hazard_button.lua
@@ -199,7 +199,7 @@ local function hazard_button(args)
-- initial draw of border
draw_border(args.accent)
- return e.get()
+ return e.complete()
end
return hazard_button
diff --git a/graphics/elements/controls/multi_button.lua b/graphics/elements/controls/multi_button.lua
index ca6600b..279c9a7 100644
--- a/graphics/elements/controls/multi_button.lua
+++ b/graphics/elements/controls/multi_button.lua
@@ -131,7 +131,7 @@ local function multi_button(args)
-- initial draw
draw()
- return e.get()
+ return e.complete()
end
return multi_button
diff --git a/graphics/elements/controls/push_button.lua b/graphics/elements/controls/push_button.lua
index cfcd772..564ad3c 100644
--- a/graphics/elements/controls/push_button.lua
+++ b/graphics/elements/controls/push_button.lua
@@ -121,7 +121,7 @@ local function push_button(args)
-- initial draw
draw()
- return e.get()
+ return e.complete()
end
return push_button
diff --git a/graphics/elements/controls/radio_button.lua b/graphics/elements/controls/radio_button.lua
index 6fc5d56..e3edf24 100644
--- a/graphics/elements/controls/radio_button.lua
+++ b/graphics/elements/controls/radio_button.lua
@@ -104,7 +104,7 @@ local function radio_button(args)
-- initial draw
draw()
- return e.get()
+ return e.complete()
end
return radio_button
diff --git a/graphics/elements/controls/sidebar.lua b/graphics/elements/controls/sidebar.lua
index 7dae6ed..b3221b3 100644
--- a/graphics/elements/controls/sidebar.lua
+++ b/graphics/elements/controls/sidebar.lua
@@ -116,7 +116,7 @@ local function sidebar(args)
-- initial draw
draw(false)
- return e.get()
+ return e.complete()
end
return sidebar
diff --git a/graphics/elements/controls/spinbox_numeric.lua b/graphics/elements/controls/spinbox_numeric.lua
index bcdc9e5..767d97b 100644
--- a/graphics/elements/controls/spinbox_numeric.lua
+++ b/graphics/elements/controls/spinbox_numeric.lua
@@ -189,7 +189,7 @@ local function spinbox(args)
e.value = 0
set_digits()
- return e.get()
+ return e.complete()
end
return spinbox
diff --git a/graphics/elements/controls/switch_button.lua b/graphics/elements/controls/switch_button.lua
index e02f506..6d2e09c 100644
--- a/graphics/elements/controls/switch_button.lua
+++ b/graphics/elements/controls/switch_button.lua
@@ -87,7 +87,7 @@ local function switch_button(args)
draw_state()
end
- return e.get()
+ return e.complete()
end
return switch_button
diff --git a/graphics/elements/controls/tabbar.lua b/graphics/elements/controls/tabbar.lua
index e188174..da4738b 100644
--- a/graphics/elements/controls/tabbar.lua
+++ b/graphics/elements/controls/tabbar.lua
@@ -125,7 +125,7 @@ local function tabbar(args)
-- initial draw
draw()
- return e.get()
+ return e.complete()
end
return tabbar
diff --git a/graphics/elements/displaybox.lua b/graphics/elements/displaybox.lua
index f6f520a..992f34b 100644
--- a/graphics/elements/displaybox.lua
+++ b/graphics/elements/displaybox.lua
@@ -17,7 +17,7 @@ local element = require("graphics.element")
---@param args displaybox_args
local function displaybox(args)
-- create new graphics element base object
- return element.new(args).get()
+ return element.new(args).complete()
end
return displaybox
diff --git a/graphics/elements/div.lua b/graphics/elements/div.lua
index 53e3e84..4b6bd6a 100644
--- a/graphics/elements/div.lua
+++ b/graphics/elements/div.lua
@@ -19,7 +19,7 @@ local element = require("graphics.element")
---@return graphics_element element, element_id id
local function div(args)
-- create new graphics element base object
- return element.new(args).get()
+ return element.new(args).complete()
end
return div
diff --git a/graphics/elements/indicators/alight.lua b/graphics/elements/indicators/alight.lua
index 2d933d6..ff9b1ad 100644
--- a/graphics/elements/indicators/alight.lua
+++ b/graphics/elements/indicators/alight.lua
@@ -109,7 +109,7 @@ local function alarm_indicator_light(args)
e.on_update(1)
e.window.write(args.label)
- return e.get()
+ return e.complete()
end
return alarm_indicator_light
diff --git a/graphics/elements/indicators/coremap.lua b/graphics/elements/indicators/coremap.lua
index 05434a3..127a8a3 100644
--- a/graphics/elements/indicators/coremap.lua
+++ b/graphics/elements/indicators/coremap.lua
@@ -163,7 +163,7 @@ local function core_map(args)
-- initial draw
e.on_update(0)
- return e.get()
+ return e.complete()
end
return core_map
diff --git a/graphics/elements/indicators/data.lua b/graphics/elements/indicators/data.lua
index a2b4ea9..6aa052a 100644
--- a/graphics/elements/indicators/data.lua
+++ b/graphics/elements/indicators/data.lua
@@ -97,7 +97,7 @@ local function data(args)
-- initial value draw
e.on_update(args.value)
- return e.get()
+ return e.complete()
end
return data
diff --git a/graphics/elements/indicators/hbar.lua b/graphics/elements/indicators/hbar.lua
index f69374e..9bee59f 100644
--- a/graphics/elements/indicators/hbar.lua
+++ b/graphics/elements/indicators/hbar.lua
@@ -120,7 +120,7 @@ local function hbar(args)
-- initialize to 0
e.on_update(0)
- return e.get()
+ return e.complete()
end
return hbar
diff --git a/graphics/elements/indicators/icon.lua b/graphics/elements/indicators/icon.lua
index f079178..03c88fb 100644
--- a/graphics/elements/indicators/icon.lua
+++ b/graphics/elements/indicators/icon.lua
@@ -69,7 +69,7 @@ local function icon(args)
-- initial icon draw
e.on_update(args.value or 1)
- return e.get()
+ return e.complete()
end
return icon
diff --git a/graphics/elements/indicators/led.lua b/graphics/elements/indicators/led.lua
index 6a6f829..077cab3 100644
--- a/graphics/elements/indicators/led.lua
+++ b/graphics/elements/indicators/led.lua
@@ -95,7 +95,7 @@ local function indicator_led(args)
e.window.write(args.label)
end
- return e.get()
+ return e.complete()
end
return indicator_led
diff --git a/graphics/elements/indicators/ledpair.lua b/graphics/elements/indicators/ledpair.lua
index 94e6955..47c9a0a 100644
--- a/graphics/elements/indicators/ledpair.lua
+++ b/graphics/elements/indicators/ledpair.lua
@@ -109,7 +109,7 @@ local function indicator_led_pair(args)
e.window.write(args.label)
end
- return e.get()
+ return e.complete()
end
return indicator_led_pair
diff --git a/graphics/elements/indicators/ledrgb.lua b/graphics/elements/indicators/ledrgb.lua
index b66d102..dbcb947 100644
--- a/graphics/elements/indicators/ledrgb.lua
+++ b/graphics/elements/indicators/ledrgb.lua
@@ -54,7 +54,7 @@ local function indicator_led_rgb(args)
e.window.write(args.label)
end
- return e.get()
+ return e.complete()
end
return indicator_led_rgb
diff --git a/graphics/elements/indicators/light.lua b/graphics/elements/indicators/light.lua
index 8213439..d4e8b09 100644
--- a/graphics/elements/indicators/light.lua
+++ b/graphics/elements/indicators/light.lua
@@ -93,7 +93,7 @@ local function indicator_light(args)
e.window.setCursorPos(3, 1)
e.window.write(args.label)
- return e.get()
+ return e.complete()
end
return indicator_light
diff --git a/graphics/elements/indicators/power.lua b/graphics/elements/indicators/power.lua
index b7137d7..323fe58 100644
--- a/graphics/elements/indicators/power.lua
+++ b/graphics/elements/indicators/power.lua
@@ -80,7 +80,7 @@ local function power(args)
-- initial value draw
e.on_update(args.value)
- return e.get()
+ return e.complete()
end
return power
diff --git a/graphics/elements/indicators/rad.lua b/graphics/elements/indicators/rad.lua
index c843cf4..fc89044 100644
--- a/graphics/elements/indicators/rad.lua
+++ b/graphics/elements/indicators/rad.lua
@@ -85,7 +85,7 @@ local function rad(args)
-- initial value draw
e.on_update(types.new_zero_radiation_reading())
- return e.get()
+ return e.complete()
end
return rad
diff --git a/graphics/elements/indicators/state.lua b/graphics/elements/indicators/state.lua
index 3bb2831..d0e57b5 100644
--- a/graphics/elements/indicators/state.lua
+++ b/graphics/elements/indicators/state.lua
@@ -75,7 +75,7 @@ local function state_indicator(args)
-- initial draw
e.on_update(args.value or 1)
- return e.get()
+ return e.complete()
end
return state_indicator
diff --git a/graphics/elements/indicators/trilight.lua b/graphics/elements/indicators/trilight.lua
index bbc7526..ef8a8b6 100644
--- a/graphics/elements/indicators/trilight.lua
+++ b/graphics/elements/indicators/trilight.lua
@@ -106,7 +106,7 @@ local function tristate_indicator_light(args)
e.on_update(1)
e.window.write(args.label)
- return e.get()
+ return e.complete()
end
return tristate_indicator_light
diff --git a/graphics/elements/indicators/vbar.lua b/graphics/elements/indicators/vbar.lua
index 9c8a8f4..4cfb6e7 100644
--- a/graphics/elements/indicators/vbar.lua
+++ b/graphics/elements/indicators/vbar.lua
@@ -100,7 +100,7 @@ local function vbar(args)
---@param val number 0.0 to 1.0
function e.set_value(val) e.on_update(val) end
- return e.get()
+ return e.complete()
end
return vbar
diff --git a/graphics/elements/multipane.lua b/graphics/elements/multipane.lua
index 20da7ed..790b595 100644
--- a/graphics/elements/multipane.lua
+++ b/graphics/elements/multipane.lua
@@ -37,7 +37,7 @@ local function multipane(args)
e.set_value(1)
- return e.get()
+ return e.complete()
end
return multipane
diff --git a/graphics/elements/pipenet.lua b/graphics/elements/pipenet.lua
index 8314fd2..5ca4745 100644
--- a/graphics/elements/pipenet.lua
+++ b/graphics/elements/pipenet.lua
@@ -142,7 +142,7 @@ local function pipenet(args)
end
- return e.get()
+ return e.complete()
end
return pipenet
diff --git a/graphics/elements/rectangle.lua b/graphics/elements/rectangle.lua
index b80b37c..72f9739 100644
--- a/graphics/elements/rectangle.lua
+++ b/graphics/elements/rectangle.lua
@@ -178,7 +178,7 @@ local function rectangle(args)
end
end
- return e.get()
+ return e.complete()
end
return rectangle
diff --git a/graphics/elements/textbox.lua b/graphics/elements/textbox.lua
index 6e5717f..e72571b 100644
--- a/graphics/elements/textbox.lua
+++ b/graphics/elements/textbox.lua
@@ -65,7 +65,7 @@ local function textbox(args)
display_text(val)
end
- return e.get()
+ return e.complete()
end
return textbox
diff --git a/graphics/elements/tiling.lua b/graphics/elements/tiling.lua
index 0dcaaf8..536ed45 100644
--- a/graphics/elements/tiling.lua
+++ b/graphics/elements/tiling.lua
@@ -82,7 +82,7 @@ local function tiling(args)
if inner_width % 2 == 0 then alternator = not alternator end
end
- return e.get()
+ return e.complete()
end
return tiling
diff --git a/pocket/startup.lua b/pocket/startup.lua
index 9265558..c1a924c 100644
--- a/pocket/startup.lua
+++ b/pocket/startup.lua
@@ -17,7 +17,7 @@ local coreio = require("pocket.coreio")
local pocket = require("pocket.pocket")
local renderer = require("pocket.renderer")
-local POCKET_VERSION = "alpha-v0.3.3"
+local POCKET_VERSION = "alpha-v0.3.4"
local println = util.println
local println_ts = util.println_ts
diff --git a/pocket/ui/components/conn_waiting.lua b/pocket/ui/components/conn_waiting.lua
index 9bbbfc0..114d165 100644
--- a/pocket/ui/components/conn_waiting.lua
+++ b/pocket/ui/components/conn_waiting.lua
@@ -25,7 +25,7 @@ local function init(parent, y, is_api)
-- bounding box div
local box = Div{parent=root,x=1,y=y,height=5}
- local waiting_x = math.floor(parent.width() / 2) - 1
+ local waiting_x = math.floor(parent.get_width() / 2) - 1
if is_api then
WaitingAnim{parent=box,x=waiting_x,y=1,fg_bg=cpair(colors.blue,style.root.bkg)}
diff --git a/reactor-plc/startup.lua b/reactor-plc/startup.lua
index 89b5b6d..687c022 100644
--- a/reactor-plc/startup.lua
+++ b/reactor-plc/startup.lua
@@ -18,7 +18,7 @@ local plc = require("reactor-plc.plc")
local renderer = require("reactor-plc.renderer")
local threads = require("reactor-plc.threads")
-local R_PLC_VERSION = "v1.3.3"
+local R_PLC_VERSION = "v1.3.4"
local println = util.println
local println_ts = util.println_ts
diff --git a/rtu/startup.lua b/rtu/startup.lua
index 0994261..c7f3a66 100644
--- a/rtu/startup.lua
+++ b/rtu/startup.lua
@@ -28,7 +28,7 @@ local sna_rtu = require("rtu.dev.sna_rtu")
local sps_rtu = require("rtu.dev.sps_rtu")
local turbinev_rtu = require("rtu.dev.turbinev_rtu")
-local RTU_VERSION = "v1.2.3"
+local RTU_VERSION = "v1.2.4"
local RTU_UNIT_TYPE = types.RTU_UNIT_TYPE
local RTU_UNIT_HW_STATE = databus.RTU_UNIT_HW_STATE
diff --git a/supervisor/startup.lua b/supervisor/startup.lua
index 6dc7253..cf7c8fe 100644
--- a/supervisor/startup.lua
+++ b/supervisor/startup.lua
@@ -19,7 +19,7 @@ local supervisor = require("supervisor.supervisor")
local svsessions = require("supervisor.session.svsessions")
-local SUPERVISOR_VERSION = "v0.16.3"
+local SUPERVISOR_VERSION = "v0.16.4"
local println = util.println
local println_ts = util.println_ts