Module:Sandbox/McVahl/sometest

From WikiProjectMed
Jump to navigation Jump to search

-- Module to build tables for basketball roster statistics
-- See documentation for details

local p = {}

local function get_header(rtable, row)

end

local function isHigh(args, mm, ptr, j, limit, col)
	local tocheck = tonumber(args[ptr] or 0)
	local nums = {}
	for i = 2, limit, col do
		table.insert(nums, tonumber(args[i + j] or 0))
	end
	
	return mm._max(nums) == tocheck
end

-- Main function
function p.main(frame)
	local getArgs = require('Module:Arguments').getArgs
	local mMath = require('Module:Math')
	local mColorp = require('Module:Sports color')
	local mColorc = require('Module:College color')
	local yesno = require('Module:Yesno')
	
	local args = getArgs(frame, { parentFirst = true })
	local show_pos = yesno(args['show_pos'] or 'y')
	local limit = 300
	local col = show_pos and 10 or 9
	local color1, color2
	
	if not args[1] then frame.args[1] = args['team'] end
	
	if mColorp.check(frame) == 'known' then
		color1 = mColorp.colorcell(frame)
		color2 = mColorp.colorcell2(frame)
	elseif mColorc.check(frame) == 'known' then
		color1 = mColorc.header1(frame)
		color2 = mColorc.header2(frame)
	end
	
	local rtable = mw.html.create()

	rtable = rtable:tag('table')
		:addClass('wikitable')
		:addClass('sortable')
		:css('text-align', 'right')
	
	local row = rtable:tag('tr')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Player')
	
	if show_pos then
		row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Pos')
	end
	
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('GP')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('GS')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('MP')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Reb')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Ast')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Stl')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Blk')
	row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Pts')
	
	for i = 2, limit, col do
		if not args[i] then break end
		
		local data = {}
		local status = args['status'.. (i + col - 2) / col]
		
		for j = 0, (col - 1) do
			local ptr = i + j
			data[j + 1] = { value = args[ptr] or 0, highest = isHigh(args, mMath, ptr, j, limit, col) }
		end
		
		row = rtable:tag('tr')
		row:tag('td')
			:css('white-space', 'nowrap')
			:css('text-align', 'left')
			:wikitext(data[1].value .. (status and (' <b>('..status..')</b>') or ''))
		
		for k=2, #data do
			row:tag('td')
				:attr('style', data[k].highest and color2 or nil)
				:wikitext(data[k].value)
			-- if show_pos and k == 2 then row:css('text-align', 'center')	end
			-- row:wikitext(data[k])
		end
	end
	
	return tostring(rtable)
end

return p