Module:ItemBox

From Curse of Aros
Jump to: navigation, search

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

local export = {}

local pagename = mw.title.getCurrentTitle().fullText

function basic_row(table, key, value)
	local row = table:tag('tr')
	
	row:tag('td'):attr('colspan', 1):wikitext('<b>' .. key .. '</b>')
	row:tag('td'):attr('colspan', 3):wikitext(value)
	
	return row
end

function full_row(table, key)
	local row = table:tag('tr')
	
	row:tag('td'):attr('colspan', '4'):attr('style', 'text-align: center')
		:wikitext('<i>"' .. key .. '"</i>')
	
	return row
end

function subheader(table, title)
	local row = table:tag('tr')
	
	row:tag('th'):attr('colspan', '4'):attr('class', 'infobox-subheader')
		:wikitext(title)
	
	return row
end

function export.show(frame)
	local table = mw.html.create('table'):addClass('coa-infobox'):addClass('item')
	
	-- Create title header
	local td = table:tag('tr'):tag('td')
	td:addClass('infobox-header'):attr('colspan', '4')
		:wikitext(frame.args.name)
		
	-- Add image box
	table:tag('tr'):tag('td'):addClass('infobox-image'):attr('colspan', 4)
		:wikitext('[[File:' .. frame.args.image .. ']]')
		
	-- Item description goes right below
	full_row(table, frame.args.description or '')
		
	-- Separation header
	table:tag('tr'):tag('td'):addClass('infobox-header'):attr('colspan', 4)
	
	-- Item Level
	if frame.args.level then
		basic_row(table, 'Level', frame.args.level)
	end
	
	-- Optional values
	if frame.args.obtained then
		basic_row(table, 'Obtained', frame.args.obtained)
	end
	
	-- Item Swing Speed
	if frame.args.speed then
		basic_row(table, 'Speed', frame.args.speed)
	end
	
	--Merchant Buy/Sell
	if frame.args.buy or frame.args.sell then
		-- Separator
		table:tag('tr'):tag('td'):addClass('infobox-header'):attr('colspan', 2)
		
		local row = table:tag('tr')
		
		row:tag('th'):wikitext('<b>Buy</b>')
		row:tag('th'):wikitext('<b>Sell</b>')
		
		row = table:tag('tr'):attr('style', 'text-align: center')
		row:tag('td'):wikitext(frame.args.buy or '--')
		row:tag('td'):wikitext(frame.args.sell or '--')
	end
		if frame.args.merchant_price then
		basic_row(table, 'merchant price', frame.args.merchant_price)
	end
	
	-- Release Date
	if frame.args.date then
		basic_row(table, 'Release Date', frame.args.date)
	end
	
	-- Tradeable
	if frame.args.tradeable then
		basic_row(table, 'Tradeable', frame.args.tradeable)
	end
	
	-- Bonuses
	if frame.args.accuracy or frame.args.strength or frame.args.defence or frame.args.hp then
		-- Separator
		table:tag('tr'):tag('td'):addClass('infobox-header'):attr('colspan', 4)
		
		local row = table:tag('tr')
	
		row:tag('th'):wikitext('<b>Accuracy</b>')
		row:tag('th'):wikitext('<b>Strength</b>')
		row:tag('th'):wikitext('<b>Defence</b>')
		row:tag('th'):wikitext('<b>HP</b>')
		
		row = table:tag('tr'):attr('style', 'text-align: center')
		row:tag('td'):wikitext(frame.args.accuracy or '--')
		row:tag('td'):wikitext(frame.args.strength or '--')
		row:tag('td'):wikitext(frame.args.defence or '--')
		row:tag('td'):wikitext(frame.args.HP or '--')
	end
	
	
	-- Separation header
	table:tag('tr'):tag('td'):addClass('infobox-header'):attr('colspan', 4)
	
		-- Bonuses
	if frame.args.control or frame.args.spellpower or frame.args.aim or frame.args.drawback then
		-- Separator
		
		local row = table:tag('tr')
	
		row:tag('th'):wikitext('<b>Control</b>')
		row:tag('th'):wikitext('<b>Spellpower</b>')
		row:tag('th'):wikitext('<b>Aim</b>')
		row:tag('th'):wikitext('<b>Drawback</b>')
		
		row = table:tag('tr'):attr('style', 'text-align: center')
		row:tag('td'):wikitext(frame.args.control or '--')
		row:tag('td'):wikitext(frame.args.spellpower or '--')
		row:tag('td'):wikitext(frame.args.aim or '--')
		row:tag('td'):wikitext(frame.args.drawback or '--')
	end
	
	
	-- Separation header
	table:tag('tr'):tag('td'):addClass('infobox-header'):attr('colspan', 4)
	
    return tostring(table)
end

return export