diff --git a/lua/wikis/commons/TeamParticipants/Controller.lua b/lua/wikis/commons/TeamParticipants/Controller.lua index dd5e8127bbd..f122d10d2cf 100644 --- a/lua/wikis/commons/TeamParticipants/Controller.lua +++ b/lua/wikis/commons/TeamParticipants/Controller.lua @@ -47,6 +47,7 @@ function TeamParticipantsController.fromTemplate(frame) end Array.forEach(parsedData.participants, TeamParticipantsRepository.setPageVars) return TeamParticipantsDisplay{ + showPlayerInformationButton = Logic.readBool(args.playerinfo), participants = parsedData.participants, mergeStaffTabIfOnlyOneStaff = Logic.nilOr( Logic.readBoolOrNil(args.mergeStaffTabIfOnlyOneStaff), Logic.readBool(Config.mergeStaffTabIfOnlyOneStaff) diff --git a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua index cbcde9019ca..0d881a4050a 100644 --- a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua +++ b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua @@ -12,13 +12,21 @@ local Class = Lua.import('Module:Class') local Widget = Lua.import('Module:Widget') local AnalyticsWidget = Lua.import('Module:Widget/Analytics') +local Button = Lua.import('Module:Widget/Basic/Button') +local IconFa = Lua.import('Module:Widget/Image/Icon/Fontawesome') local HtmlWidgets = Lua.import('Module:Widget/Html/All') local Div = HtmlWidgets.Div local ParticipantsTeamCard = Lua.import('Module:Widget/Participants/Team/Card') local Switch = Lua.import('Module:Widget/Switch') +local WidgetUtil = Lua.import('Module:Widget/Util') + +---@class ParticipantsTeamCardsGroupProps +---@field participants TeamParticipant[]? +---@field showPlayerInformationButton boolean? ---@class ParticipantsTeamCardsGroup: Widget ----@operator call(table): ParticipantsTeamCardsGroup +---@operator call(ParticipantsTeamCardsGroupProps): ParticipantsTeamCardsGroup +---@field props ParticipantsTeamCardsGroupProps local ParticipantsTeamCardsGroup = Class.new(Widget) ---@return Widget? @@ -33,7 +41,7 @@ function ParticipantsTeamCardsGroup:render() children = { Div{ classes = { 'team-participant__switches' }, - children = { + children = WidgetUtil.collect( AnalyticsWidget{ analyticsName = 'ParticipantsShowRostersSwitch', analyticsProperties = { @@ -56,8 +64,24 @@ function ParticipantsTeamCardsGroup:render() switchGroup = 'team-cards-compact', defaultActive = true, }, - } - } + }, + self.props.showPlayerInformationButton and Button{ + linktype = 'external', + link = tostring(mw.uri.fullUrl('Special:RunQuery/Tournament player information', { + pfRunQueryFormName = 'Tournament player information', + ['TPI[page]'] = mw.title.getCurrentTitle().text, + wpRunQuery = 'Run query' + })), + size = 'sm', + variant = 'secondary', + title = 'Click for additional player information', + children = Array.interleave({ + IconFa{iconName = 'link'}, + 'Player', + 'Info' + }, ' ') + } or nil + ) }, AnalyticsWidget{ analyticsName = 'Team participants card', diff --git a/stylesheets/commons/TeamParticipantCard.scss b/stylesheets/commons/TeamParticipantCard.scss index 60b03c36ce2..fb6e5f5c3f4 100644 --- a/stylesheets/commons/TeamParticipantCard.scss +++ b/stylesheets/commons/TeamParticipantCard.scss @@ -45,6 +45,7 @@ $compact-selector: '[data-switch-group="team-cards-compact"]'; .team-participant__switches { display: flex; + align-items: center; gap: 0.5rem; }