Jump to content

Module:NPVIC table: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No point in these two columns being sortable
Aligned EVs to the center (they look weird aligned to the right)
 
Line 71: Line 71:
row:tag('th'):attr('scope', 'col'):attr('class','unsortable'):wikitext('Method of adoption')
row:tag('th'):attr('scope', 'col'):attr('class','unsortable'):wikitext('Method of adoption')
row:tag('th'):attr('scope', 'col'):attr('class','unsortable'):wikitext(reference_heading)
row:tag('th'):attr('scope', 'col'):attr('class','unsortable'):wikitext(reference_heading)
row:tag('th'):attr('scope', 'col'):wikitext('Current<br/>electoral<br/>votes (EV)')
row:tag('th'):attr('scope', 'col'):wikitext('Current<br/>electoral<br/>votes (EVs)')
local k = 1
local k = 1
Line 83: Line 83:
row:tag('td'):wikitext(args['method' .. k])
row:tag('td'):wikitext(args['method' .. k])
row:tag('td'):css('text-align','center'):wikitext(args['ref' .. k])
row:tag('td'):css('text-align','center'):wikitext(args['ref' .. k])
row:tag('td'):css('text-align','right'):wikitext(tonumber(seats) + 2)
row:tag('td'):css('text-align','center'):wikitext(tonumber(seats) + 2)
EVs = EVs + tonumber(seats) + 2
EVs = EVs + tonumber(seats) + 2
k = k + 1
k = k + 1
Line 91: Line 91:
row = root:tag('tr'):addClass('sortbottom')
row = root:tag('tr'):addClass('sortbottom')
row:tag('th'):attr('colspan', 5):css('text-align', 'right'):wikitext('Total')
row:tag('th'):attr('colspan', 5):css('text-align', 'right'):wikitext('Total')
row:tag('th'):css('text-align', 'right'):wikitext(EVs)
row:tag('th'):css('text-align', 'center'):wikitext(EVs)
row = root:tag('tr'):addClass('sortbottom')
row = root:tag('tr'):addClass('sortbottom')
row:tag('th'):attr('colspan', 5):css('text-align', 'right'):wikitext('Percentage of the 270 EVs needed')
row:tag('th'):attr('colspan', 5):css('text-align', 'right'):wikitext('Percentage of the 270 EVs needed')
row:tag('th'):css('text-align', 'right'):wikitext(percent)
row:tag('th'):css('text-align', 'center'):wikitext(percent)


return root
return root

Latest revision as of 10:48, 16 April 2024

local p = {}

local state_links = {
    ["AL"] = "[[Alabama]]",
    ["AK"] = "[[Alaska]]",
    ["AZ"] = "[[Arizona]]",
    ["AR"] = "[[Arkansas]]",
    ["CA"] = "[[California]]",
    ["CO"] = "[[Colorado]]",
    ["CT"] = "[[Connecticut]]",
    ["DE"] = "[[Delaware]]",
    ["DC"] = "[[Washington, D.C.|District of Columbia]]",
    ["FL"] = "[[Florida]]",
    ["GA"] = "[[Georgia (U.S. state)|Georgia]]",
    ["HI"] = "[[Hawaii]]",
    ["ID"] = "[[Idaho]]",
    ["IL"] = "[[Illinois]]",
    ["IN"] = "[[Indiana]]",
    ["IA"] = "[[Iowa]]",
    ["KS"] = "[[Kansas]]",
    ["KY"] = "[[Kentucky]]",
    ["LA"] = "[[Louisiana]]",
    ["ME"] = "[[Maine]]",
    ["MD"] = "[[Maryland]]",
    ["MA"] = "[[Massachusetts]]",
    ["MI"] = "[[Michigan]]",
    ["MN"] = "[[Minnesota]]",
    ["MS"] = "[[Mississippi]]",
    ["MO"] = "[[Missouri]]",
    ["MT"] = "[[Montana]]",
    ["NE"] = "[[Nebraska]]",
    ["NV"] = "[[Nevada]]",
    ["NH"] = "[[New Hampshire]]",
    ["NJ"] = "[[New Jersey]]",
    ["NM"] = "[[New Mexico]]",
    ["NY"] = "[[New York (state)|New York]]",
    ["NC"] = "[[North Carolina]]",
    ["ND"] = "[[North Dakota]]",
    ["OH"] = "[[Ohio]]",
    ["OK"] = "[[Oklahoma]]",
    ["OR"] = "[[Oregon]]",
    ["PA"] = "[[Pennsylvania]]",
    ["RI"] = "[[Rhode Island]]",
    ["SC"] = "[[South Carolina]]",
    ["SD"] = "[[South Dakota]]",
    ["TN"] = "[[Tennessee]]",
    ["TX"] = "[[Texas]]",
    ["UT"] = "[[Utah]]",
    ["VT"] = "[[Vermont]]",
    ["VA"] = "[[Virginia]]",
    ["WA"] = "[[Washington (state)|Washington]]",
    ["WV"] = "[[West Virginia]]",
    ["WI"] = "[[Wisconsin]]",
    ["WY"] = "[[Wyoming]]"
}

function p._showtable(frame, args)
	local reference_heading = frame:expandTemplate{title = 'Reference column heading'}
	local root = mw.html.create('table')
		:addClass('wikitable sortable')
		:css('line-height', 1.2)
		:css('margin-left', 'auto')
		:css('margin-right', 'auto')
	-- table title
	root:tag('caption'):wikitext('Jurisdictions enacting law to join the National Popular Vote Interstate Compact')
	-- header row
	local row = root:tag('tr')
	row:tag('th'):attr('scope', 'col'):wikitext('No.')
	row:tag('th'):attr('scope', 'col'):wikitext('Jurisdiction')
	row:tag('th'):attr('scope', 'col'):attr('data-sort-type', 'date'):wikitext('Date adopted')
	row:tag('th'):attr('scope', 'col'):attr('class','unsortable'):wikitext('Method of adoption')
	row:tag('th'):attr('scope', 'col'):attr('class','unsortable'):wikitext(reference_heading)
	row:tag('th'):attr('scope', 'col'):wikitext('Current<br/>electoral<br/>votes (EVs)')
	
	local k = 1
	local EVs = 0
	while args['state' .. k] do
		local seats = args['state' .. k] == 'DC' and 1 or frame:expandTemplate{ title = 'USHRseats', args = {args['state' .. k]}}
		row = root:tag('tr')
		row:tag('th'):attr('scope', 'row'):wikitext(k)
		row:tag('td'):wikitext(state_links[args['state' .. k]] or args['state' .. k])
		row:tag('td'):css('text-align','right'):wikitext(args['date' .. k])
		row:tag('td'):wikitext(args['method' .. k])
		row:tag('td'):css('text-align','center'):wikitext(args['ref' .. k])
		row:tag('td'):css('text-align','center'):wikitext(tonumber(seats) + 2)
		EVs = EVs + tonumber(seats) + 2
		k = k + 1
	end
	
	local percent = frame:expandTemplate{ title = 'percent', args = { EVs, 270, 1} }
	row = root:tag('tr'):addClass('sortbottom')
	row:tag('th'):attr('colspan', 5):css('text-align', 'right'):wikitext('Total')
	row:tag('th'):css('text-align', 'center'):wikitext(EVs)
	row = root:tag('tr'):addClass('sortbottom')
	row:tag('th'):attr('colspan', 5):css('text-align', 'right'):wikitext('Percentage of the 270 EVs needed')
	row:tag('th'):css('text-align', 'center'):wikitext(percent)

	return root
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame)
	return p._showtable(frame, args)
end

return p