From 4d0f41fefbd442f78d0f78e43602cc924d2df994 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 5 Mar 2026 07:45:38 +0100 Subject: [PATCH 1/3] fix(TournamentPlayerInformation): throws for non team events where a player has no team --- lua/wikis/commons/TournamentPlayerInformation.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/wikis/commons/TournamentPlayerInformation.lua b/lua/wikis/commons/TournamentPlayerInformation.lua index b890b3c1060..cbfdc4dabf4 100644 --- a/lua/wikis/commons/TournamentPlayerInformation.lua +++ b/lua/wikis/commons/TournamentPlayerInformation.lua @@ -55,6 +55,7 @@ local WidgetUtil = Lua.import('Module:Widget/Util') local TournamentPlayerInfo = Class.new(function(self, ...) self:init(...) end) ---@param frame Frame +---@return Widget|string function TournamentPlayerInfo.create(frame) local args = Arguments.getArgs(frame) local tournamentPlayerInfo = TournamentPlayerInfo(args) @@ -134,8 +135,8 @@ function TournamentPlayerInfo:_parseRecords(records) self.data = Array.sortBy(players, function(x) return x end, function (a, b) if Logic.isEmpty(a.team) then return Logic.isEmpty(b.team) - elseif Logic.isEmpty(a.team) then - return Logic.isEmpty(b.team) + elseif Logic.isEmpty(b.team) then + return Logic.isEmpty(a.team) elseif a.team ~= b.team then return a.team < b.team end From 753dc0ff94133bf3c0058a0f019c125b278e8666 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 5 Mar 2026 08:00:08 +0100 Subject: [PATCH 2/3] feat(TournamentPlayerInformation): hide team age table where it seems useless --- lua/wikis/commons/TournamentPlayerInformation.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/wikis/commons/TournamentPlayerInformation.lua b/lua/wikis/commons/TournamentPlayerInformation.lua index cbfdc4dabf4..d5be04957e3 100644 --- a/lua/wikis/commons/TournamentPlayerInformation.lua +++ b/lua/wikis/commons/TournamentPlayerInformation.lua @@ -46,6 +46,7 @@ local WidgetUtil = Lua.import('Module:Widget/Util') ---@field currentTeam string? ---@field links table? ---@field role string? +---@field fromOpponentType OpponentType ---@class TournamentPlayerInfo ---@operator call(table): TournamentPlayerInfo @@ -128,7 +129,7 @@ function TournamentPlayerInfo:_parseRecords(records) player.team = opponent.template end - return self:queryPlayerInfo(player) + return Table.merge(self:queryPlayerInfo(player), {fromOpponentType = opponent.type}) end) end) @@ -311,6 +312,9 @@ end ---@protected ---@return Widget? function TournamentPlayerInfo:buildTeamAgeTable() + if Array.all(self.data, function(player) return player.fromOpponentType ~= Opponent.team end) then + return + end local _, teamPlayers = Array.groupBy(self.data, function (player) return player.team end) local ageDataByTeam = Table.mapValues(teamPlayers, function (players) return self:_calculateAgeData(players) end) From 3be3eb0cc4da5d86fca66491c1cf9c7e83576dac Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 5 Mar 2026 08:21:58 +0100 Subject: [PATCH 3/3] sort by displayName if we have no team opponents --- .../commons/TournamentPlayerInformation.lua | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lua/wikis/commons/TournamentPlayerInformation.lua b/lua/wikis/commons/TournamentPlayerInformation.lua index d5be04957e3..8f44c23b5d8 100644 --- a/lua/wikis/commons/TournamentPlayerInformation.lua +++ b/lua/wikis/commons/TournamentPlayerInformation.lua @@ -133,6 +133,14 @@ function TournamentPlayerInfo:_parseRecords(records) end) end) + -- sort by displayName if we have no team opponents + if self:_hasNoTeamOpponents(players) then + self.data = Array.sortBy(players, function(x) return x end, function(a, b) + return (a.displayName or ''):lower() < (b.displayName or ''):lower() + end) + return self + end + self.data = Array.sortBy(players, function(x) return x end, function (a, b) if Logic.isEmpty(a.team) then return Logic.isEmpty(b.team) @@ -312,7 +320,7 @@ end ---@protected ---@return Widget? function TournamentPlayerInfo:buildTeamAgeTable() - if Array.all(self.data, function(player) return player.fromOpponentType ~= Opponent.team end) then + if self:_hasNoTeamOpponents(self.data) then return end local _, teamPlayers = Array.groupBy(self.data, function (player) return player.team end) @@ -458,4 +466,11 @@ function TournamentPlayerInfo:buildPlayerRow(player) )} end +---@private +---@param players EnrichedStandardPlayer[] +---@return boolean +function TournamentPlayerInfo:_hasNoTeamOpponents(players) + return Array.all(players, function(player) return player.fromOpponentType ~= Opponent.team end) +end + return TournamentPlayerInfo