Module:ScheduleNavboxTeamHelper

local util_cargo = require("Module:CargoUtil") local util_time = require('Module:TimeUtil') local lang = mw.getLanguage('en') local p = {}

function p.where(team) local tbl = { ('(Team1="%s" OR Team2="%s") AND DateTime_UTC > NOW'):format(team, team), 'Player1 IS NULL', 'Player2 IS NULL', }	return util_cargo.concatWhere(tbl) end

function p.makeNavboxArgs(args, results, team, n)	local events = p.makeNavboxList(results, team) if not events then return nil end args.attr = string.format('data-expiration="%s"',events.time) for k, v in ipairs(events) do args['group' .. k + n] = events[v].name .. ' Matches' args['list' .. k + n] = p.makeNavboxRow(events[v].data) args['tr' .. k + n .. 'class'] = 'upcoming-matches schedule-navbox-row' args['tr' .. k + n .. 'attr'] = string.format('data-expiration="%s"',events[v].time) end return true end

function p.makeNavboxRow(row) local tbl = mw.html.create('div'):addClass('hlist hlist-tall') for _, v in ipairs(row) do		tbl:tag('li') :addClass('upcoming-matches') :attr('data-expiration',v.attr) :wikitext(v.wikitext) end return tostring(tbl) end

function p.makeNavboxList(results, team) local resultsExist = false local events = {} local limit = 999 local time for k, row in ipairs(results) do		event = row.Tournament if events[event] then -- nothing else events[#events+1] = event events[event] = { name = row.EventLinked, data = {} } end local e = events[event] -- alias for convenience e.data[#e.data+1] = p.formatListEntry(row, team) time = util_time.unix(row.DateTime) e.time = time resultsExist = resultsExist or util_time.isInFuture(row.DateTime) if k == limit then break end end events.time = time -- we are going in order so this will be the biggest value return resultsExist and events end

-- this just makes one item in the flatlist function p.formatListEntry(row, team) local tbl = { p.otherTeam(row, team), util_time.countdown(row.DateTime) }	local div = mw.html.create('div') :css({ display = "table-cell", ['text-align'] = 'center'}) :wikitext(table.concat(tbl,' ')) return { wikitext = tostring(div), attr = util_time.unix(row.DateTime) } end

-- get the other team function p.otherTeam(row, team) local key if row.Team1 == team then key = 'Team2' else key = 'Team1' end if row[key] == '' or not row[key] or lang:lc(row[key]) == 'tbd' then return 'TBD' end return row[key .. 'Formatted'] end

return p