Module:MatchHTML: Difference between revisions
From TwogPedia
            mNo edit summary  | 
				No edit summary  | 
				||
| Line 5: | Line 5: | ||
local getTeamDisplaytitle = require('Module:Functions').getTeamDisplaytitle  | local getTeamDisplaytitle = require('Module:Functions').getTeamDisplaytitle  | ||
local makeFlag = require('Module:Person/Flag').makeFlag  | local makeFlag = require('Module:Person/Flag').makeFlag  | ||
function MatchHTML.team(name, score, date, rev)  | function MatchHTML.team(name, score, date, rev)  | ||
| Line 32: | Line 31: | ||
	nameNode:attr('style', style)  | 	nameNode:attr('style', style)  | ||
	return team:node(nameNode):node(mw.html.create('div'):wikitext(score):addClass('score'))  | 	return team:node(nameNode):node(mw.html.create('div'):wikitext(score):addClass('score'))  | ||
end    | end  | ||
function MatchHTML.teamHover(p1, p2, p1score, p2score, date, twitch, youtube, casters, observers, winner)  | function MatchHTML.teamHover(p1, p2, p1score, p2score, date, twitch, youtube, casters, observers, winner)  | ||
    local p1Link = p1 and '[[' .. p1 .. '|' .. getTeamDisplaytitle(p1, date) .. ']]' or 'TBD'  | |||
     local p2Link = p2 and '[[' .. p2 .. '|' .. getTeamDisplaytitle(p2, date) .. ']]' or 'TBD'  |      local p2Link = p2 and '[[' .. p2 .. '|' .. getTeamDisplaytitle(p2, date) .. ']]' or 'TBD'  | ||
    local hover = mw.html.create('div'):addClass('match-details')  | |||
    local header = mw.html.create('div'):addClass('details-header')  | |||
    p1score = tonumber(p1score) or 0  | |||
    p2score = tonumber(p2score) or 0  | |||
    local p1Color = "#808080"  | |||
    local p2Color = "#808080"  | |||
    if p1score > p2score then  | |||
        p1Color = "#44B740"  | |||
        p2Color = "#B01923"  | |||
    elseif p2score > p1score then  | |||
        p2Color = "#44B740"  | |||
        p1Color = "#B01923"  | |||
    end  | |||
    local hover1 = mw.html.create('div'):addClass('team')  | |||
        :node(mw.html.create('div')  | |||
            :wikitext(p1Link)  | |||
            :addClass('teamName')  | |||
            :attr('style', 'padding: 4px; background: ' .. p1Color .. '; color: white;'))  | |||
        :node(mw.html.create('div')  | |||
            :wikitext(p1score)  | |||
            :addClass('score')  | |||
            :attr('style', 'padding: 4px; background: ' .. p1Color .. '; color: white;'))  | |||
    local hover2 = mw.html.create('div'):addClass('team reverse')  | |||
        :node(mw.html.create('div')  | |||
            :wikitext(p2Link)  | |||
            :addClass('teamName')  | |||
            :attr('style', 'padding: 4px; background: ' .. p2Color .. '; color: white;'))  | |||
        :node(mw.html.create('div')  | |||
            :wikitext(p2score)  | |||
            :addClass('score')  | |||
            :attr('style', 'padding: 4px; background: ' .. p2Color .. '; color: white;'))  | |||
    header:node(hover1):node(hover2)  | |||
    local dateElem = mw.html.create('div')  | |||
        :addClass('tc convert--date')  | |||
        :attr('style', 'font-size: 0.9rem;')  | |||
        :wikitext(stringifyDate(date))  | |||
     hover:node(header):node(dateElem)  | |||
     if #casters > 0 then  |      if #casters > 0 then  | ||
         local castersDiv = mw.html.create('div'):attr('style', 'display: flex; gap: 0.5rem; font-size: 0.8rem; justify-content: center;'):wikitext('Casters:')  |          local castersDiv = mw.html.create('div')  | ||
            :attr('style', 'display: flex; gap: 0.5rem; font-size: 0.8rem; justify-content: center;')  | |||
            :wikitext('Casters:')  | |||
        for i = 1, #casters do  | |||
             local personDiv = mw.html.create('div')  |              local personDiv = mw.html.create('div')  | ||
            personDiv:wikitext(makeFlag(nil, casters[i]))  | |||
             personDiv:wikitext('[[' .. casters[i] .. ']]')  |              personDiv:wikitext('[[' .. casters[i] .. ']]')  | ||
             castersDiv:node(personDiv)  |              castersDiv:node(personDiv)  | ||
        end  | |||
         hover:node(castersDiv)  |          hover:node(castersDiv)  | ||
    end  | |||
     if #observers> 0 then  | |||
         local observersDiv = mw.html.create('div'):attr('style', 'display: flex; gap: 0.5rem; font-size: 0.8rem; justify-content: center;'):wikitext('Observers:')  |      if #observers > 0 then  | ||
         local observersDiv = mw.html.create('div')  | |||
            :attr('style', 'display: flex; gap: 0.5rem; font-size: 0.8rem; justify-content: center;')  | |||
            :wikitext('Observers:')  | |||
        for i = 1, #observers do  | |||
             local personDiv = mw.html.create('div')  |              local personDiv = mw.html.create('div')  | ||
            personDiv:wikitext(makeFlag(nil, observers[i]))  | |||
             personDiv:wikitext('[[' .. observers[i] .. ']]')  |              personDiv:wikitext('[[' .. observers[i] .. ']]')  | ||
             observersDiv:node(personDiv)  |              observersDiv:node(personDiv)  | ||
        end  | |||
         hover:node(observersDiv)  |          hover:node(observersDiv)  | ||
    end  | |||
     if winner == 0 then    | |||
     if winner == 0 then  | |||
         local streams = mw.html.create('div')  |          local streams = mw.html.create('div')  | ||
         if twitch then streams:wikitext('[[File:Twitch.png|25px|link=https://twitch.tv/' .. twitch .. ']]') end  |          if twitch then streams:wikitext('[[File:Twitch.png|25px|link=https://twitch.tv/' .. twitch .. ']]') end  | ||
        if youtube then streams:wikitext('[[File:Youtube.png|25px|link=https://youtube.com/' .. youtube .. '/live]]') end  | |||
         hover:node(streams)  |          hover:node(streams)  | ||
     end  |      end  | ||
    return hover  | |||
end  | end  | ||
return MatchHTML  | return MatchHTML  | ||
Latest revision as of 00:46, 26 April 2025
Documentation for this module may be created at Module:MatchHTML/doc
local MatchHTML = {}
local VariablesLua = mw.ext.VariablesLua
local stringifyDate = require('Module:Functions').stringifyDate
local getTeamLogo = require('Module:Functions').getTeamLogo
local getTeamDisplaytitle = require('Module:Functions').getTeamDisplaytitle
local makeFlag = require('Module:Person/Flag').makeFlag
function MatchHTML.team(name, score, date, rev)
	local teamName = name and getTeamDisplaytitle(name, date) or ''
	local team = mw.html.create('div'):addClass('team')
	local nameNode = mw.html.create('div'):addClass('teamName')
	if not name then return team:node(nameNode):node(mw.html.create('div'):wikitext(0):addClass('score')) end
	local style = 'display: flex; gap: 0.5rem; font-size: 0.9rem;'
	local game = mw.text.split(mw.title.getCurrentTitle().text, '/')[1]
	local size = '20x20px'
	if VariablesLua.var( 'matchList') == '1' then
		if rev then
			style = style .. 'padding-left: 4px;'
			nameNode:node(getTeamLogo(name, game, size):attr('style', 'width: 20px;')):node(mw.html.create('div'):wikitext(teamName))
			team:addClass('reverse') 
		else
			style = style .. 'justify-content: end; padding-right: 4px;'
			nameNode:node(mw.html.create('div'):wikitext(teamName)):node(getTeamLogo(name, game, size):attr('style', 'width: 20px;'))
		end
	else 
		nameNode:node(getTeamLogo(name, game, size):attr('style', 'width: 20px;')):node(mw.html.create('div'):wikitext(teamName))
		style = style .. 'padding-left: 4px;'
	end
	nameNode:attr('style', style)
	return team:node(nameNode):node(mw.html.create('div'):wikitext(score):addClass('score'))
end
function MatchHTML.teamHover(p1, p2, p1score, p2score, date, twitch, youtube, casters, observers, winner)
    local p1Link = p1 and '[[' .. p1 .. '|' .. getTeamDisplaytitle(p1, date) .. ']]' or 'TBD'
    local p2Link = p2 and '[[' .. p2 .. '|' .. getTeamDisplaytitle(p2, date) .. ']]' or 'TBD'
    local hover = mw.html.create('div'):addClass('match-details')
    local header = mw.html.create('div'):addClass('details-header')
    p1score = tonumber(p1score) or 0
    p2score = tonumber(p2score) or 0
    local p1Color = "#808080"
    local p2Color = "#808080"
    if p1score > p2score then
        p1Color = "#44B740"
        p2Color = "#B01923"
    elseif p2score > p1score then
        p2Color = "#44B740"
        p1Color = "#B01923"
    end
    local hover1 = mw.html.create('div'):addClass('team')
        :node(mw.html.create('div')
            :wikitext(p1Link)
            :addClass('teamName')
            :attr('style', 'padding: 4px; background: ' .. p1Color .. '; color: white;'))
        :node(mw.html.create('div')
            :wikitext(p1score)
            :addClass('score')
            :attr('style', 'padding: 4px; background: ' .. p1Color .. '; color: white;'))
    local hover2 = mw.html.create('div'):addClass('team reverse')
        :node(mw.html.create('div')
            :wikitext(p2Link)
            :addClass('teamName')
            :attr('style', 'padding: 4px; background: ' .. p2Color .. '; color: white;'))
        :node(mw.html.create('div')
            :wikitext(p2score)
            :addClass('score')
            :attr('style', 'padding: 4px; background: ' .. p2Color .. '; color: white;'))
    header:node(hover1):node(hover2)
    local dateElem = mw.html.create('div')
        :addClass('tc convert--date')
        :attr('style', 'font-size: 0.9rem;')
        :wikitext(stringifyDate(date))
    hover:node(header):node(dateElem)
    if #casters > 0 then
        local castersDiv = mw.html.create('div')
            :attr('style', 'display: flex; gap: 0.5rem; font-size: 0.8rem; justify-content: center;')
            :wikitext('Casters:')
        for i = 1, #casters do
            local personDiv = mw.html.create('div')
            personDiv:wikitext(makeFlag(nil, casters[i]))
            personDiv:wikitext('[[' .. casters[i] .. ']]')
            castersDiv:node(personDiv)
        end
        hover:node(castersDiv)
    end
    if #observers > 0 then
        local observersDiv = mw.html.create('div')
            :attr('style', 'display: flex; gap: 0.5rem; font-size: 0.8rem; justify-content: center;')
            :wikitext('Observers:')
        for i = 1, #observers do
            local personDiv = mw.html.create('div')
            personDiv:wikitext(makeFlag(nil, observers[i]))
            personDiv:wikitext('[[' .. observers[i] .. ']]')
            observersDiv:node(personDiv)
        end
        hover:node(observersDiv)
    end
    if winner == 0 then
        local streams = mw.html.create('div')
        if twitch then streams:wikitext('[[File:Twitch.png|25px|link=https://twitch.tv/' .. twitch .. ']]') end
        if youtube then streams:wikitext('[[File:Youtube.png|25px|link=https://youtube.com/' .. youtube .. '/live]]') end
        hover:node(streams)
    end
    return hover
end
return MatchHTML
No categories