1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-03-17 20:58:13 +02:00

Fix broken header sorter

This commit is contained in:
Gerkiz 2024-07-08 14:27:28 +02:00
parent 5db78108d3
commit fcecd3d87d

View File

@ -38,7 +38,7 @@ local this = {
Global.register(
this,
function(t)
function (t)
this = t
end
)
@ -55,51 +55,51 @@ local function get_header(tbl, name)
end
local header_modifier = {
['username_asc'] = function(tbl)
['username_asc'] = function (tbl)
local setting = get_header(tbl, 'username')
setting.name = setting.name .. '[color=yellow]' .. symbol_asc .. '[/color]'
end,
['username_desc'] = function(tbl)
['username_desc'] = function (tbl)
local setting = get_header(tbl, 'username')
setting.name = setting.name .. '[color=yellow]' .. symbol_desc .. '[/color]'
end,
['rpg_asc'] = function(tbl)
['rpg_asc'] = function (tbl)
local setting = get_header(tbl, 'rpg')
setting.name = setting.name .. '[color=yellow]' .. symbol_asc .. '[/color]'
end,
['rpg_desc'] = function(tbl)
['rpg_desc'] = function (tbl)
local setting = get_header(tbl, 'rpg')
setting.name = setting.name .. '[color=yellow]' .. symbol_desc .. '[/color]'
end,
['coins_asc'] = function(tbl)
['coins_asc'] = function (tbl)
local setting = get_header(tbl, 'coins')
setting.name = setting.name .. '[color=yellow]' .. symbol_asc .. '[/color]'
end,
['coins_desc'] = function(tbl)
['coins_desc'] = function (tbl)
local setting = get_header(tbl, 'coins')
setting.name = setting.name .. '[color=yellow]' .. symbol_desc .. '[/color]'
end,
['total_time_asc'] = function(tbl)
['total_time_asc'] = function (tbl)
local setting = get_header(tbl, 'total_time')
setting.name = setting.name .. '[color=yellow]' .. symbol_asc .. '[/color]'
end,
['total_time_desc'] = function(tbl)
['total_time_desc'] = function (tbl)
local setting = get_header(tbl, 'total_time')
setting.name = setting.name .. '[color=yellow]' .. symbol_desc .. '[/color]'
end,
['current_time_asc'] = function(tbl)
['current_time_asc'] = function (tbl)
local setting = get_header(tbl, 'current_time')
setting.name = setting.name .. '[color=yellow]' .. symbol_asc .. '[/color]'
end,
['current_time_desc'] = function(tbl)
['current_time_desc'] = function (tbl)
local setting = get_header(tbl, 'current_time')
setting.name = setting.name .. '[color=yellow]' .. symbol_desc .. '[/color]'
end,
['poke_asc'] = function(tbl)
['poke_asc'] = function (tbl)
local setting = get_header(tbl, 'poke')
setting.name = setting.name .. '[color=yellow]' .. symbol_asc .. '[/color]'
end,
['poke_desc'] = function(tbl)
['poke_desc'] = function (tbl)
local setting = get_header(tbl, 'poke')
setting.name = setting.name .. '[color=yellow]' .. symbol_desc .. '[/color]'
end
@ -132,7 +132,7 @@ local function get_sorted_list(sort_by)
local session_table = Session.get_session_table()
local player_list = {}
Core.iter_connected_players(
function(player, index)
function (player, index)
local player_data = player_list[index] or {}
player_data.rank = get_rank(player)
player_data.name = player.name
@ -187,14 +187,16 @@ local function player_list_show(data)
local gui_data =
Vars.gui_data(
{
header_label_name = header_label_name,
show_roles_in_list = this.show_roles_in_list,
locate_player_frame_name = locate_player_frame_name,
rpg_enabled = this.rpg_enabled,
poke_player_frame_name = poke_player_frame_name
}
)
{
header_label_name = header_label_name,
show_roles_in_list = this.show_roles_in_list,
locate_player_frame_name = locate_player_frame_name,
rpg_enabled = this.rpg_enabled,
poke_player_frame_name = poke_player_frame_name
}
)
if sort_by then
this.player_list.sorting_method[data.player.index] = sort_by
@ -202,16 +204,20 @@ local function player_list_show(data)
sort_by = this.player_list.sorting_method[data.player.index]
end
if this.player_list.sorting_method[data.player.index] == '_desc' or this.player_list.sorting_method[data.player.index] == '_asc' then
this.player_list.sorting_method[data.player.index] = 'total_time_desc'
end
if not sort_by then
sort_by = 'total_time_desc'
end
header_modifier[sort_by](gui_data)
local player_tbl = frame.add {type = 'table', column_count = #gui_data}
local player_tbl = frame.add { type = 'table', column_count = #gui_data }
for _, setting in pairs(gui_data) do
local label = player_tbl.add {type = 'label', caption = ''}
local label = player_tbl.add { type = 'label', caption = '' }
label.style.minimal_width = setting.header_width
label.style.maximal_width = setting.header_width
end
@ -223,15 +229,15 @@ local function player_list_show(data)
-- List management
local player_list_panel_table =
frame.add {
type = 'scroll-pane',
name = 'scroll_pane',
direction = 'vertical',
horizontal_scroll_policy = 'never',
vertical_scroll_policy = 'auto'
}
type = 'scroll-pane',
name = 'scroll_pane',
direction = 'vertical',
horizontal_scroll_policy = 'never',
vertical_scroll_policy = 'auto'
}
player_list_panel_table.style.maximal_height = 400
player_list_panel_table = player_list_panel_table.add {type = 'table', name = 'player_list_panel_table', column_count = #gui_data}
player_list_panel_table = player_list_panel_table.add { type = 'table', name = 'player_list_panel_table', column_count = #gui_data }
local player_list = get_sorted_list(sort_by)
for i = 1, #player_list, 1 do
@ -246,7 +252,7 @@ local player_list_show_token = Token.register(player_list_show)
Gui.on_click(
locate_player_frame_name,
function(event)
function (event)
local player = event.player
local element = event.element
@ -284,7 +290,7 @@ Gui.on_click(
Gui.on_click(
poke_player_frame_name,
function(event)
function (event)
local player = event.player
local element = event.element
@ -321,7 +327,7 @@ local function refresh()
if frame.name ~= tag then
return
end
local data = {player = player, frame = frame, sort_by = this.player_list.sorting_method[player.index]}
local data = { player = player, frame = frame, sort_by = this.player_list.sorting_method[player.index] }
player_list_show(data)
end
end
@ -354,11 +360,11 @@ function Public.rpg_enabled(value)
return this.rpg_enabled
end
Gui.add_tab_to_gui({name = module_name, caption = tag, id = player_list_show_token, admin = false})
Gui.add_tab_to_gui({ name = module_name, caption = tag, id = player_list_show_token, admin = false })
Gui.on_click(
module_name,
function(event)
function (event)
local player = event.player
Gui.reload_active_tab(player)
end
@ -366,7 +372,7 @@ Gui.on_click(
Gui.on_click(
header_label_name,
function(event)
function (event)
local player = event.player
local element = event.element
if not element or not element.valid then
@ -387,10 +393,10 @@ Gui.on_click(
end
if string.find(element.caption, symbol_desc) then
local data = {player = player, frame = frame, sort_by = parent.name .. '_asc'}
local data = { player = player, frame = frame, sort_by = parent.name and parent.name:len() > 0 and parent.name .. '_asc' or nil }
player_list_show(data)
else
local data = {player = player, frame = frame, sort_by = parent.name .. '_desc'}
local data = { player = player, frame = frame, sort_by = parent.name and parent.name:len() > 0 and parent.name .. '_desc' or nil }
player_list_show(data)
end
local is_spamming = SpamProtection.is_spamming(player, nil, 'PlayerList Gui Click')