Module:Navbox: Difference between revisions

Ganaram inukshuk (talk | contribs)
m todo
Ganaram inukshuk (talk | contribs)
rows are entered the same way as the infobox
Line 18: Line 18:


-- Navbox row
-- Navbox row
function p.navbox_row(row_content)
function p.navbox_row(row_content, is_row_navbox)
local row_header    = row_content["Header"]
local is_row_navbox = yesno(is_row_navobx, false)
local row_data      = row_content["Data"]
local is_row_navbox = row_content["Is Navbox"]


local row = "|-\n"
local row = "|-\n"
if row_header == nil then
if #row_content == 1 then
-- Headerless row; takes up two cells
-- Headerless row; takes up two cells
if is_row_navbox then
if is_row_navbox then
Line 30: Line 28:
row = row
row = row
.. '| style="padding: 0;" colspan="2" | \n'
.. '| style="padding: 0;" colspan="2" | \n'
.. row_data .. "\n"
.. row_content[1] .. "\n"
else
else
-- Row data is normal data
-- Row data is normal data
row = row .. '| style="font-size: 0.9em; padding: 0.25em 0.5em;" colspan="2" | ' .. row_data .. "\n"
row = row .. '| style="font-size: 0.9em; padding: 0.25em 0.5em;" colspan="2" | ' .. row_content[1] .. "\n"
     end
     end
else
else
Line 40: Line 38:
-- Row data is a child navbox; data cell has no padding
-- Row data is a child navbox; data cell has no padding
row = row
row = row
.. '! style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;" |' ..  row_header .. "\n"
.. '! style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;" |' ..  row_content[1] .. "\n"
.. '| style="padding: 0;" |\n'  
.. '| style="padding: 0;" |\n'  
.. row_data .. "\n"
.. row_content[2] .. "\n"
else
else
-- Row data is normal data
-- Row data is normal data
row = row
row = row
.. '! style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;" |' ..  row_header .. "\n"
.. '! style="white-space: nowrap; font-size: 0.9em; width: 5%; text-align: right; background-color: #eaecf0; padding: 0.25em 0.5em; border: 1px solid white;" |' ..  row_content[1] .. "\n"
.. '| style="font-size: 0.9em; padding: 0.25em 0.5em;" | ' .. row_data .. "\n"
.. '| style="font-size: 0.9em; padding: 0.25em 0.5em;" | ' .. row_content[2] .. "\n"
end
end
end
end
Line 70: Line 68:
local title          = args["Title"] or "Navbox Title"
local title          = args["Title"] or "Navbox Title"
local rows            = args["Rows"]
local rows            = args["Rows"]
local is_row_navbox  = args["Is Row Navbox"]
local is_collapsible  = yesno(args["Is Collapsible"], true )
local is_collapsible  = yesno(args["Is Collapsible"], true )
local is_collapsed    = yesno(args["Is Collapsed"  ], false)
local is_collapsed    = yesno(args["Is Collapsed"  ], false)
Line 113: Line 112:
-- Add rows
-- Add rows
for i = 1, #rows do
for i = 1, #rows do
navbox = navbox .. p.navbox_row(rows[i])
navbox = navbox .. p.navbox_row(rows[i], is_row_navbox[i])
end
end
Line 132: Line 131:
-- Add rows
-- Add rows
for i = 1, #rows do
for i = 1, #rows do
navbox = navbox .. p.navbox_row(rows[i])
navbox = navbox .. p.navbox_row(rows[i], is_row_navbox[i])
end
end
Line 158: Line 157:
-- 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 = {}
for i = 1, 20 do
local is_row_navbox = {}
for i = 1, 30 do
local header = args["Header " .. i]
local header = args["Header " .. i]
local data  = args["Data "  .. i]
local data  = args["Data "  .. i]
local is_navbox = yesno(args["Is Data " .. i .. " Navbox"])
local is_row_i_navbox = yesno(args["Is Row " .. i .. " Navbox"], false)
local row = nil
local row = nil
if (header ~= nil or data ~= nil or is_navbox ~= nil) then
if (header == nil and data ~= nil) then
row = {
row = {}
["Header"] = header,
table.insert(row, data)
["Data"] = ((header ~= nil and data == nil) and "" or data),
elseif (header ~= nil and data ~= nil) then
["Is Navbox"] = is_navbox
row = {}
}
table.insert(row, header)
table.insert(row, data)
end
end
if row ~= nil then
if row ~= nil then
table.insert(rows, row)
table.insert(rows, row)
table.insert(is_row_i_navbox, is_row_navbox)
end
end
Line 178: Line 180:
args["Header " .. i] = nil
args["Header " .. i] = nil
args["Data "  .. i] = nil
args["Data "  .. i] = nil
args["Is Data " .. i .. " Navbox"] = nil
args["Is Row " .. i .. " Navbox"] = nil
end
end
args["Rows"] = rows
args["Rows"] = rows
args["Is Row Navbox"] = is_row_navbox
return p._navbox(args)
return p._navbox(args)