Module:Navbox: Difference between revisions
mNo edit summary |
condense args for navbox into one arg; separate navbox title into its own helper function to later support child navboxes |
||
Line 5: | Line 5: | ||
-- Navbox row | -- Navbox row | ||
function p.navbox_row(row_content, is_row_child_navbox) | |||
local row_content = row_content or { "Header", "Content" } | |||
local is_row_child_navbox = is_row_child_navbox or false -- Not implemented | |||
function p.navbox_row(row_content) | |||
local row_content = row_content or { "Header | |||
local row = '<tr>\n' | local row = '<tr>\n' | ||
Line 20: | Line 17: | ||
.. '</td>\n' | .. '</td>\n' | ||
elseif #row_content == 2 then | elseif #row_content == 2 then | ||
-- Simple row with header and data | |||
row = row | |||
.. '<th style="width:5%; text-align:right; background-color:#eaecf0; white-space:nowrap; padding:0.25em 0.5em; border:1px solid white">' .. row_content[1] .. '</th>\n' | |||
.. '<td style="padding:0em">\n' | |||
.. '<div style="padding:0.25em 0.5em">' .. row_content[2] .. '</div>\n' | |||
.. '</td>\n' | |||
end | end | ||
local row = row .. '</tr>\n' | local row = row .. '</tr>\n' | ||
Line 41: | Line 29: | ||
end | end | ||
-- Navbox | -- Navbox title | ||
function p. | function p.navbox_title(title, is_collapsible, is_collapsed, is_child_navbox) | ||
local | local title = title or "Example Navbox" | ||
local is_collapsible = is_collapsible or true -- Not implemented | |||
local is_collapsed = is_collapsed or true -- Not working? | |||
local is_child_navbox = is_child_navbox or false | |||
local | local navbox_title = '' | ||
if is_child_navbox then | |||
navbox_title = navbox_title | |||
.. | .. '<div class="wikitable">' | ||
.. '<table class="mw-collapsible' .. (is_collapsed and ' mw-collapsed ' or '') .. 'nowraplinks" style="width: 100%; border-spacing:0px">\n' | |||
.. '<tr>\n' | |||
.. '<th style="width:5%; text-align:center; background-color:#eaecf0; white-space:nowrap; padding:0.25em 0.5em; border:1px solid white" colspan="2"><b>' .. title .. '</b></th>\n' | |||
.. '</tr>\n' | |||
else | |||
navbox_title = '<table style="width:100%; border-spacing:0px">\n' | |||
end | end | ||
return navbox_title | |||
return | |||
end | end | ||
-- Navbox to be called by other modules | -- Navbox to be called by other modules; also called by wrapper function | ||
function p._navbox(args) | |||
function p._navbox( | local title = args["Title"] | ||
local title = | local is_child_navbox = args["Is Child Navbox"] | ||
local | local rows = args["Rows"] | ||
local is_collapsed = | local row_is_subtable = args["Is Row Child Navbox"] -- Not implemented | ||
local is_collapsible = args["Is Collapsible"] -- Not implemented | |||
local is_collapsed = args["Is Collapsible"] -- Not working? | |||
-- Start of table | -- Start of table | ||
local navbox = | local navbox = p.navbox_title(title, is_collapsible, is_collapsed, is_subtable) | ||
for i = 1, #rows do | for i = 1, #rows do | ||
Line 84: | Line 78: | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
-- Preprocess individual entries for, headers, data, and is-row-child into | |||
-- two separate tables. | |||
-- Both the Wikipedia and RsWiki navboxes go up to 20 rows so follow that | -- Both the Wikipedia and RsWiki navboxes go up to 20 rows so follow that | ||
local rows = {} | local rows = {} | ||
local is_row_child_navbox = {} | |||
for i = 1, 20 do | for i = 1, 20 do | ||
local row = {} | local row = {} | ||
local header = args["Header " .. i] | local header = args["Header " .. i] | ||
local data = args["Data " .. i] | local data = args["Data " .. i] | ||
local is_child_navbox = args["Is Row Child Navbox" .. i] | |||
if header ~= nil and data ~= nil then | if header ~= nil and data ~= nil then | ||
Line 111: | Line 105: | ||
table.insert(rows, row) | table.insert(rows, row) | ||
end | end | ||
if is_child_navbox ~= nil then | |||
table.insert(is_row_child_navbox, is_child_navbox) | |||
end | |||
args["Header " .. i] = nil | |||
args["Data " .. i] = nil | |||
args["Is Row Child Navbox" .. i] = nil | |||
end | end | ||
return p._navbox( | args["Rows"] = rows | ||
args["Is Row Child Navbox"] = is_row_child_navbox | |||
return p._navbox(args) | |||
end | end | ||
return p | return p |