Module:NPVIC table
Appearance
![]() | This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
See {{NPVIC table}} for usage.
See also
[edit]
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