Module:Jctbtm
Appearance
![]() | This Lua module is used on approximately 16,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
![]() | This module depends on the following other modules: |
![]() | This module uses TemplateStyles: |
This module implements the {{Jctbtm}} template. Please see the template page for usage instructions.
Usage
{{#invoke:Jctbtm|jctbtm}}
Tracking/maintenance category
local p = {}
local colors = {trans = "#dff9f9", concur = "#ddffdd", closed = "#d3d3d3", incomplete = "#ffdddd",
unbuilt = "#ffdead", hov = "#ffff99", toll = "#dcdcfe", etc = "#dcdcfe"}
local descriptions = {trans = "[[Route number|Route]] transition", concur = "[[Concurrency (road)|Concurrency]] terminus",
closed = "Closed/former", incomplete = "[[Interchange (road)#Complete and incomplete interchanges|Incomplete access]]",
unbuilt = "Unopened", hov = "[[HOV|HOV only]]", toll = "Tolled", etc = "[[Electronic toll collection|ETC]]"}
local columns = { -- Constants for how many columns different list types should have.
default = 6, -- default
exit = 7, -- default + exit number
old = 8, -- default + exit number + old exit number
}
local function parameterParser(args)
local keysParam = args.keys
if not(keysParam) then return {} end
local keys = mw.text.split(keysParam, ",")
return keys
end
local function createLegend(key)
local insert = table.insert
local format = mw.ustring.format
local legend = {'<div class="hlist" style="margin-left: 1.6em; text-align: center; font-size:90%;">'}
for k,v in ipairs(key) do
if colors[v] then
insert(legend, format('*<span style="border:1px solid #000; background-color:%s; color:%s;"> </span> %s', colors[v], colors[v], descriptions[v]))
end
end
insert(legend, "</div>")
return table.concat(legend, "\n")
end
function p.jctbtm(frame)
local pframe = frame:getParent()
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
local cols = args['col'] or columns[args[1]] or columns.default -- Compute the number of columns, either from an explicit parameter, or by looking at the columns table.
local tabdef = '|-\n|colspan = ' .. cols .. ' class="wikitable hlist" style="text-align: center; background-color:#f2f2f2;"|' -- Define the table.
local conversion = ''
local conv = 'yes'
if conv == 'yes' then
conversion = "1.000 mi = 1.609 km; 1.000 km = 0.621 mi"
end
local text = tabdef .. conversion
local key = parameterParser(args)
if key[1] then
local legend = createLegend(key)
text = text .. legend
end
local keyParam = args.key or ''
if keyParam ~= '' then
text = text .. "<br>" .. keyParam -- If an additional key is provided, display it.
end
if text == tabdef then
return "|}"
else
return text .. "\n|}"
end
end
return p