Module:Transfers: Difference between revisions

From TwogPedia
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 7: Line 7:
function Transfers.main(frame)
function Transfers.main(frame)
local args = getArgs(frame)
local args = getArgs(frame)
local parent = mw.html.create('div')
local parent = mw.html.create('div'):addClass('transferList')
if args.game ~= nil then
if args.game ~= nil then
local tables = 'Transfers'
local tables = 'Transfers'
Line 16: Line 16:
}
}
local results = cargo.query(tables, fields, cargoArgs)
local results = cargo.query(tables, fields, cargoArgs)
-- mw.logObject(results)
if #results > 0 then
if #results > 0 then
local tableContainer = mw.html.create('table')
local titleRow = mw.html.create('tr')
titleRow:addClass('headerRow')
local dateCell = mw.html.create('th')
dateCell:wikitext('Date')
local idCell = mw.html.create('th')
idCell:wikitext('ID')
local oldTeamCell = mw.html.create('th')
oldTeamCell:wikitext('Old team')
local newTeamCell = mw.html.create('th')
newTeamCell:wikitext('New team')
titleRow:node(dateCell):node(idCell):node(oldTeamCell):node(newTeamCell)
tableContainer:node(titleRow)
for r = 1, #results do
for r = 1, #results do
local result = results[r]
local result = results[r]
mw.logObject(result)
-- local transfer = mw.html.create('div')
local gameCategory = mw.text.split(result._pageName, '/')[1]
-- :addClass('transferItem')
local transfer = mw.html.create('div')
:addClass('transferItem')
local game = mw.html.create('div')
local transfer = mw.html.create('tr')
:wikitext('[[File:' .. gameCategory .. '_logo.png]]')
transfer:node(game)
if result.leavedate then
if result.leavedate then
local leavedate = mw.html.create('div')
local leavedate = mw.html.create('td')
:wikitext(result.leavedate)
:wikitext(result.leavedate)
transfer:node(leavedate)
transfer:node(leavedate)
elseif result.joindate then
elseif result.joindate then
mw.logObject(result.joindate)
local joindate = mw.html.create('td')
mw.log(result.joindate)
mw.logObject(result)
local joindate = mw.html.create('div')
:wikitext(result.joindate)
:wikitext(result.joindate)
transfer:node(joindate)
transfer:node(joindate)
end
end
local player = mw.html.create('div'):addClass('flag')
local player = mw.html.create('td'):addClass('flag')
-- local id = mw.html.create('td')
-- local id = mw.html.create('td')
-- :addClass('linkID')
-- :addClass('linkID')
-- :node(flagDiv)
-- :node(flagDiv)
if ( result.flag ) then
if ( result.flag ) then
local flag = Flags.icon(result.flag, gameCategory)
local flag = Flags.icon(result.flag, args.game)
player:wikitext(flag)
player:wikitext(flag)
end
end
transfer:node(player:wikitext('[[' .. result.id .. ']]'))
transfer:node(player:wikitext('[[' .. result.id .. ']]'))
-- Get logo of result _pageName team, if exists
local oldTeamLogo = mw.html.create('div')
local tables = 'TeamLogos'
local fields = '_pageName, logoLight, logoDark, logoAll, start, end'
local currentDate = os.date('%Y-%m-%d')
local companyName = mw.text.split(result._pageName, '/')[2] or ''
local cargoArgs = {
where = '(_pageName= "' .. result._pageName .. '" OR _pageName= "' .. companyName .. '") AND  (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
}
local logoResult = cargo.query(tables, fields, cargoArgs)
if #logoResult > 0 then
if logoResult[1].logoAll then
oldTeamLogo:node(Transfers.createLogo(logoResult[1].logoAll))
elseif logoResult[1].logoLight and logoResult[1].logoDark then
oldTeamLogo:node(Transfers.createLogo(logoResult[1].logoLight, 'light')):node(Transfers.createLogo(logoResult[1].logoDark, 'dark'))
else
local logo = logoResult[1].logoLight or logoResult[1].logoDark
oldTeamLogo:node(Transfers.createLogo(logo))
end
else
oldTeamLogo:node(Transfers.createLogo())
end
-- If transfer has a leavedate show old teams logo
local oldTeam = mw.html.create('td')
local oldTeamDiv = mw.html.create('div'):addClass('d-flex')
oldTeam:node(oldTeamDiv)
if result.leavedate then
oldTeamDiv:node(oldTeamLogo)
else
oldTeamDiv:wikitext('None')
end
transfer:node(oldTeam)
-- Show new teams logo, if exists
local newTeam = mw.html.create('td')
local newTeamDiv = mw.html.create('div'):addClass('d-flex')
newTeam:node(newTeamDiv)
local newTeamLogo = mw.html.create('div')
if result.leavedate then
if result.newteam then
-- Get logo of new team
local newTeamLogo = mw.html.create('div')
local tables = 'TeamLogos'
local fields = '_pageName, logoLight, logoDark, logoAll, start, end'
local currentDate = os.date('%Y-%m-%d')
local cargoArgs = {
where = '(_pageName= "' .. result.newteam .. '") AND  (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
}
local logoResult = cargo.query(tables, fields, cargoArgs)
if #logoResult > 0 then
if logoResult[1].logoAll then
newTeamLogo:node(Transfers.createLogo(logoResult[1].logoAll))
elseif logoResult[1].logoLight and logoResult[1].logoDark then
newTeamLogo:node(Transfers.createLogo(logoResult[1].logoLight, 'light')):node(Transfers.createLogo(results[1].logoDark, 'dark'))
else
local logo = logoResult[1].logoLight or logoResult[1].logoDark
newTeamLogo:node(Transfers.createLogo(logo))
end
else
newTeamLogo:node(Transfers.createLogo())
end
newTeamDiv:node(newTeamLogo)
else
newTeamDiv:wikitext('None')
end
else
newTeamDiv:node(oldTeamLogo)
end
transfer:node(newTeam)
if result.leaveref or result.leaverefname then
        local refName = result.leaverefname or ''
        local ref = result.leaveref or ''
        oldTeamDiv:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
end
       
if result.joinref or result.joinrefname then
if result.joinref or result.joinrefname then
        local refName = result.joinrefname or ''
        local refName = result.joinrefname or ''
        local ref = result.joinref or ''
        local ref = result.joinref or ''
        transfer:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
        newTeamDiv:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
end
end
       
     
        if result.leaveref or result.leaverefname then
        local refName = result.leaverefname or ''
        local ref = result.leaveref or ''
        transfer:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
        end
parent:node(transfer)
tableContainer:node(transfer)
end
end
parent:node(tableContainer)
end
end
else  
else  
-- local game = mw.html.create('div')
-- :wikitext('[[File:' .. args.game .. '_logo.png|25px]]')
-- transfer:node(game)
end
end
return parent
return parent
end
function Transfers.createLogo(url, class)
local className = class and class .. ' h-100' or 'h-100'
local logoURL = url and url or 'Team_placeholder_light.png'
local logoContainer = mw.html.create('div')
:addClass(className)
local logo = mw.html.create('div')
:addClass('team-list-logo')
:node('[[File:' .. logoURL .. '|25px]]')
logoContainer:node(logo)
return logoContainer
end
end


return Transfers
return Transfers

Latest revision as of 13:10, 23 December 2022

Documentation for this module may be created at Module:Transfers/doc

local getArgs = require('Module:Arguments').getArgs
local Flags = require('Module:Flags')
local cargo = mw.ext.cargo

local Transfers = {}

function Transfers.main(frame)
	local args = getArgs(frame)
	local parent = mw.html.create('div'):addClass('transferList')
	if args.game ~= nil then
		local tables = 'Transfers'
		local fields = '_pageName, id, joindate, leavedate, inactivedate, newteam, flag, joinref, leaveref, joinrefname, leaverefname'
		local cargoArgs = {
			where = '_pageName LIKE "' .. args.game .. '%"',
			orderBy = 'joindate DESC, leavedate DESC'
		}
		local results = cargo.query(tables, fields, cargoArgs)
		
		if #results > 0 then
			local tableContainer = mw.html.create('table')
				
			local titleRow = mw.html.create('tr')
			titleRow:addClass('headerRow')
		
			local dateCell = mw.html.create('th')
				dateCell:wikitext('Date')
			local idCell = mw.html.create('th')
				idCell:wikitext('ID')
			local oldTeamCell = mw.html.create('th')
				oldTeamCell:wikitext('Old team')
			local newTeamCell = mw.html.create('th')
				newTeamCell:wikitext('New team')
				
			titleRow:node(dateCell):node(idCell):node(oldTeamCell):node(newTeamCell)
			
			tableContainer:node(titleRow)
			for r = 1, #results do
				local result = results[r]
				-- local transfer = mw.html.create('div')
				-- 	:addClass('transferItem')
				
				local transfer = mw.html.create('tr')
				
				if result.leavedate then
					local leavedate = mw.html.create('td')
						:wikitext(result.leavedate)
					transfer:node(leavedate)
				elseif result.joindate then
					local joindate = mw.html.create('td')
						:wikitext(result.joindate)
					transfer:node(joindate)
				end
				
				local player = mw.html.create('td'):addClass('flag')
				-- local id = mw.html.create('td')
				-- 	:addClass('linkID')
				-- 	:node(flagDiv)
				if ( result.flag ) then
					local flag = Flags.icon(result.flag, args.game)
					player:wikitext(flag)
				end
				
				transfer:node(player:wikitext('[[' .. result.id .. ']]'))
				-- Get logo of result _pageName team, if exists
				local oldTeamLogo = mw.html.create('div')
				local tables = 'TeamLogos'
				local fields = '_pageName, logoLight, logoDark, logoAll, start, end'
				local currentDate = os.date('%Y-%m-%d')
				local companyName = mw.text.split(result._pageName, '/')[2] or ''
				local cargoArgs = {
					where = '(_pageName= "' .. result._pageName .. '" OR _pageName= "' .. companyName .. '") AND  (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
				}
				local logoResult = cargo.query(tables, fields, cargoArgs)
				
				if #logoResult > 0 then
					if logoResult[1].logoAll then
						oldTeamLogo:node(Transfers.createLogo(logoResult[1].logoAll))
					elseif logoResult[1].logoLight and logoResult[1].logoDark then
						oldTeamLogo:node(Transfers.createLogo(logoResult[1].logoLight, 'light')):node(Transfers.createLogo(logoResult[1].logoDark, 'dark'))
					else 
						local logo = logoResult[1].logoLight or logoResult[1].logoDark
						oldTeamLogo:node(Transfers.createLogo(logo))
					end
				else 
					oldTeamLogo:node(Transfers.createLogo())
				end 
				
				-- If transfer has a leavedate show old teams logo
				local oldTeam = mw.html.create('td')
				local oldTeamDiv = mw.html.create('div'):addClass('d-flex')
				oldTeam:node(oldTeamDiv)
				if result.leavedate then
					oldTeamDiv:node(oldTeamLogo)
				else 
					oldTeamDiv:wikitext('None')
				end
				
				transfer:node(oldTeam)
				
				-- Show new teams logo, if exists
				local newTeam = mw.html.create('td')
				local newTeamDiv = mw.html.create('div'):addClass('d-flex')
				newTeam:node(newTeamDiv)
				local newTeamLogo = mw.html.create('div')
				if result.leavedate then
					if result.newteam then
						-- Get logo of new team
						local newTeamLogo = mw.html.create('div')
						local tables = 'TeamLogos'
						local fields = '_pageName, logoLight, logoDark, logoAll, start, end'
						local currentDate = os.date('%Y-%m-%d')
						local cargoArgs = {
							where = '(_pageName= "' .. result.newteam .. '") AND  (start is NULL OR start < "' .. currentDate .. '") AND (end is NULL OR end > "' .. currentDate .. '")'
						}
						local logoResult = cargo.query(tables, fields, cargoArgs)

						if #logoResult > 0 then
							if logoResult[1].logoAll then
								newTeamLogo:node(Transfers.createLogo(logoResult[1].logoAll))
							elseif logoResult[1].logoLight and logoResult[1].logoDark then
								newTeamLogo:node(Transfers.createLogo(logoResult[1].logoLight, 'light')):node(Transfers.createLogo(results[1].logoDark, 'dark'))
							else 
								local logo = logoResult[1].logoLight or logoResult[1].logoDark
								newTeamLogo:node(Transfers.createLogo(logo))
							end
						else 
							newTeamLogo:node(Transfers.createLogo())
						end 
						newTeamDiv:node(newTeamLogo)
					else
						newTeamDiv:wikitext('None')	
					end
				else
					newTeamDiv:node(oldTeamLogo)
				end
				
				transfer:node(newTeam)
				
				if result.leaveref or result.leaverefname then
		        	local refName = result.leaverefname or ''
		        	local ref = result.leaveref or ''
		        	oldTeamDiv:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
				end
	        
				if result.joinref or result.joinrefname then
		        	local refName = result.joinrefname or ''
		        	local ref = result.joinref or ''
		        	newTeamDiv:wikitext(frame:preprocess('<ref name='.. refName .. '>' ..ref .. '</ref>'))
				end
	       
					
				tableContainer:node(transfer)
			end
			parent:node(tableContainer)
		end
	else 
		-- local game = mw.html.create('div')
		-- 	:wikitext('[[File:' .. args.game .. '_logo.png|25px]]')
			
		-- transfer:node(game)
	end
	return parent
end

function Transfers.createLogo(url, class)
	local className = class and class .. ' h-100' or 'h-100'
	local logoURL = url and url or 'Team_placeholder_light.png'
	local logoContainer = mw.html.create('div')
		:addClass(className)
	local logo = mw.html.create('div')
		:addClass('team-list-logo')
		:node('[[File:' .. logoURL .. '|25px]]')
	logoContainer:node(logo)
	return logoContainer
end

return Transfers