Module:Squad/Custom
From Liquipedia Dota 2 Wiki
Documentation (Module:Squad/Custom/doc - edit)
Creates a Module:Squad table. Use Template:Person to fill the table.
Parameters
|status=- Defaults to
active. Can also setformerandinactive
---
-- @Liquipedia
-- page=Module:Squad/Custom
--
-- Please see https://github.com/Liquipedia/Lua-Modules to contribute
--
local Lua = require('Module:Lua')
local Class = Lua.import('Module:Class')
local Table = Lua.import('Module:Table')
local Widget = Lua.import('Module:Widget/All')
local Squad = Lua.import('Module:Widget/Squad/Core')
local SquadRow = Lua.import('Module:Squad/Row')
local SquadUtils = Lua.import('Module:Squad/Utils')
local SquadContexts = Lua.import('Module:Widget/Contexts/Squad')
local CustomSquad = {}
---@class Dota2SquadRow: SquadRow
local ExtendedSquadRow = Class.new(SquadRow)
---@return self
function ExtendedSquadRow:activeteam()
local activeTeam, activeTeamRole = self.model.extradata.activeteam, self.model.activeteamrole
local date = self.model.inactivedate
if not activeTeam then
table.insert(self.children,Widget.Td{classes = {'NewTeam'}, children = {}})
return self
end
local content = {}
table.insert(content, mw.ext.TeamTemplate.team(activeTeam, date))
if activeTeamRole then
table.insert(content, ' ')
table.insert(content, mw.html.create('i'):tag('small'):wikitext('(' .. activeTeamRole .. ')'))
end
table.insert(self.children,
Widget.Td{classes = {'NewTeam'}, children = content}
)
return self
end
---@param frame Frame
---@return Widget
function CustomSquad.run(frame)
return SquadContexts.InactiveSection{
value = function(widgets)
table.insert(widgets, Widget.Th{children = {'Active Team'}})
return widgets
end,
children = {SquadUtils.defaultRunManual(frame, Squad, CustomSquad._playerRow)}
}
end
---@param playerList table[]
---@param squadStatus integer
---@param squadType SquadType
---@param customTitle string?
---@return Widget
function CustomSquad.runAuto(playerList, squadStatus, squadType, customTitle)
return SquadUtils.defaultRunAuto(
playerList,
squadStatus,
squadType,
Squad,
SquadUtils.defaultRow(SquadRow),
customTitle
)
end
function CustomSquad._playerRow(person, squadStatus, squadType)
local squadPerson = SquadUtils.readSquadPersonArgs(Table.merge(person, {status = squadStatus, type = squadType}))
squadPerson.extradata.activeteam = person.activeteam
squadPerson.extradata.activeteamrole = person.activeteamrole
SquadUtils.storeSquadPerson(squadPerson)
local row = ExtendedSquadRow(squadPerson)
row:id()
row:name()
row:position()
row:date('joindate', 'Join Date: ')
if squadStatus == SquadUtils.SquadStatus.INACTIVE or squadStatus == SquadUtils.SquadStatus.FORMER_INACTIVE then
row:date('inactivedate', 'Inactive Date: ')
row:activeteam()
end
if squadStatus == SquadUtils.SquadStatus.FORMER or squadStatus == SquadUtils.SquadStatus.FORMER_INACTIVE then
row:date('leavedate', 'Leave Date: ')
row:newteam()
end
return row:create()
end
return CustomSquad