From 806c44ee13bbe41cad0060df16dd932061c6bf1b Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:17:50 +0900 Subject: [PATCH 1/4] add TPI button --- .../Widget/Participants/Team/CardsGroup.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua index cbcde9019ca..38add7048c6 100644 --- a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua +++ b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua @@ -12,6 +12,8 @@ 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') @@ -56,6 +58,22 @@ function ParticipantsTeamCardsGroup:render() switchGroup = 'team-cards-compact', defaultActive = true, }, + }, + 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' + }, ' ') } } }, From 10d5f85c5d34581fadef9e2720477754d40483a4 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:17:59 +0900 Subject: [PATCH 2/4] adjust alignment --- stylesheets/commons/TeamParticipantCard.scss | 1 + 1 file changed, 1 insertion(+) 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; } From 42ab98448857129a6f274e1f77192e4413a33fe4 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:28:42 +0900 Subject: [PATCH 3/4] type annotate ParticipantsTeamCardsGroup props --- lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua index 38add7048c6..ed4a11dccf6 100644 --- a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua +++ b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua @@ -19,8 +19,12 @@ local Div = HtmlWidgets.Div local ParticipantsTeamCard = Lua.import('Module:Widget/Participants/Team/Card') local Switch = Lua.import('Module:Widget/Switch') +---@class ParticipantsTeamCardsGroupProps +---@field participants TeamParticipant[]? + ---@class ParticipantsTeamCardsGroup: Widget ----@operator call(table): ParticipantsTeamCardsGroup +---@operator call(ParticipantsTeamCardsGroupProps): ParticipantsTeamCardsGroup +---@field props ParticipantsTeamCardsGroupProps local ParticipantsTeamCardsGroup = Class.new(Widget) ---@return Widget? From 06d94c5b4084a17edca40ec0050eb1a17ecea29e Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:32:39 +0900 Subject: [PATCH 4/4] make TPI button opt-in feature --- lua/wikis/commons/TeamParticipants/Controller.lua | 1 + .../commons/Widget/Participants/Team/CardsGroup.lua | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) 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 ed4a11dccf6..0d881a4050a 100644 --- a/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua +++ b/lua/wikis/commons/Widget/Participants/Team/CardsGroup.lua @@ -18,9 +18,11 @@ 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(ParticipantsTeamCardsGroupProps): ParticipantsTeamCardsGroup @@ -39,7 +41,7 @@ function ParticipantsTeamCardsGroup:render() children = { Div{ classes = { 'team-participant__switches' }, - children = { + children = WidgetUtil.collect( AnalyticsWidget{ analyticsName = 'ParticipantsShowRostersSwitch', analyticsProperties = { @@ -63,7 +65,7 @@ function ParticipantsTeamCardsGroup:render() defaultActive = true, }, }, - Button{ + self.props.showPlayerInformationButton and Button{ linktype = 'external', link = tostring(mw.uri.fullUrl('Special:RunQuery/Tournament player information', { pfRunQueryFormName = 'Tournament player information', @@ -78,8 +80,8 @@ function ParticipantsTeamCardsGroup:render() 'Player', 'Info' }, ' ') - } - } + } or nil + ) }, AnalyticsWidget{ analyticsName = 'Team participants card',