diff --git a/lua/wikis/commons/TournamentPlayerInformation.lua b/lua/wikis/commons/TournamentPlayerInformation.lua index cbfdc4dabf4..8f44c23b5d8 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,10 +129,18 @@ function TournamentPlayerInfo:_parseRecords(records) player.team = opponent.template end - return self:queryPlayerInfo(player) + return Table.merge(self:queryPlayerInfo(player), {fromOpponentType = opponent.type}) 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) @@ -311,6 +320,9 @@ end ---@protected ---@return Widget? function TournamentPlayerInfo:buildTeamAgeTable() + if self:_hasNoTeamOpponents(self.data) 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) @@ -454,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