88 lines
3.1 KiB
Lua

-------------------------------------------------------------------------------
---Class to build pin tab dialog
---@class StatisticPanel
StatisticPanel = newclass(Form)
-------------------------------------------------------------------------------
---On initialization
function StatisticPanel:onInit()
self.panelCaption = ({"helmod_result-panel.tab-button-statistic"})
end
------------------------------------------------------------------------------
---Get Button Sprites
---@return string, string
function StatisticPanel:getButtonSprites()
return defines.sprites.column_chart.white,defines.sprites.column_chart.black
end
-------------------------------------------------------------------------------
---Is tool
---@return boolean
function StatisticPanel:isTool()
return true
end
-------------------------------------------------------------------------------
---On Style
---@param styles table
---@param width_main number
---@param height_main number
function StatisticPanel:onStyle(styles, width_main, height_main)
styles.flow_panel = {
minimal_width = 322,
maximal_height = height_main
}
end
-------------------------------------------------------------------------------
---On update
---@param event LuaEvent
function StatisticPanel:onUpdate(event)
self:updateInfo(event)
end
-------------------------------------------------------------------------------
---Update information
---@param event LuaEvent
function StatisticPanel:updateInfo(event)
local info_panel = self:getFramePanel("info_panel")
info_panel.style.vertically_stretchable = true
info_panel.clear()
local column = 20
local resultTable = GuiElement.add(info_panel, GuiTable("list-data"):column(column))
--self:addProductionBlockHeader(resultTable)
local elements = {}
table.insert(elements, {name = "locomotive", type = "entity", value = #Player.getForce().get_trains()})
local entities = {"logistic-robot", "construction-robot", "straight-rail", "curved-rail", "electric-furnace",
"assembling-machine-3", "chemical-plant", "oil-refinery", "beacon", "lab", "electric-mining-drill",
"express-transport-belt", "express-underground-belt", "express-splitter"
, "medium-electric-pole", "big-electric-pole"}
for _, element in pairs(entities) do
table.insert(elements, {name = element, type = "entity", value = Player.getForce().get_entity_count(element)})
end
for _, element in pairs(elements) do
self:addRow(resultTable, element)
end
end
-------------------------------------------------------------------------------
---Add row data tab
---@param guiTable LuaGuiElement
---@param element table
function StatisticPanel:addRow(guiTable, element)
GuiElement.add(guiTable, GuiLabel("value", element.name):caption(Format.formatNumberElement(element.value)):style("helmod_label_right_60"))
GuiElement.add(guiTable, GuiButtonSprite("element", element.name):sprite(element.type, element.name):tooltip(Player.getLocalisedName(element)))
end
-------------------------------------------------------------------------------
---On event
---@param event LuaEvent
function StatisticPanel:onEvent(event)
end