Module:Navbox: Difference between revisions
mNo edit summary |
refactor row contents from array to table of key-value pairs Tag: Reverted |
||
| Line 2: | Line 2: | ||
local getArgs = require("Module:Arguments").getArgs | local getArgs = require("Module:Arguments").getArgs | ||
local navbar = require("Module:Navbar")._navbar | local navbar = require("Module:Navbar")._navbar | ||
local tiu = require("Module:Template input utils") | |||
local yesno = require("Module:Yesno") | local yesno = require("Module:Yesno") | ||
| Line 17: | Line 18: | ||
-- to be refactored (currently) because they only need to be called a fixed | -- to be refactored (currently) because they only need to be called a fixed | ||
-- number of times. | -- number of times. | ||
function p.navbox_row(row_content, | function p.navbox_row(row_content, is_data_navbox) | ||
local | local is_data_navbox = is_navbox or false | ||
local row = {} | local row = {} | ||
table.insert(row, "|-") | table.insert(row, "|-") | ||
local header = row_content["Header"] | |||
-- Row | local data = row_content["Data"] | ||
if | if is_data_navbox then | ||
-- ...and | -- Row content contains a nested navbox... | ||
table.insert(row, ' | if header and data then | ||
table.insert(row, | -- ...and it's a header-data pair. | ||
table.insert(row, string.format('! 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;" | %s', header)) | |||
-- ... and row | table.insert(row, string.format('| style="font-size: 0.9em; padding: 0.25em 0.5em;" | ', data)) | ||
table.insert(row, '| style="font-size: 0.9em; padding: 0.25em 0.5em;" colspan="2" | ' .. | elseif data and not header then | ||
-- ...and it's a headerless data row. | |||
table.insert(row, string.format('| style="font-size: 0.9em; padding: 0.25em 0.5em;" colspan="2" | %s', data)) | |||
elseif header and not data then | |||
-- ...and it's a dataless header row; whole row becomes a header | |||
-- that can be used as a separator. | |||
end | end | ||
else | else | ||
-- Row is a header | -- Row content is normal content (reglar text and/or links)... | ||
if header and data then | |||
-- ...and it's a header-data pair | |||
table.insert(row, string.format('! 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;" | %s', header)) | |||
table.insert(row, string.format('| style="padding: 0;" | ', data)) | |||
elseif data and not header then | |||
-- ...and it's a headerless data row | |||
table.insert(row, '| style="padding: 0;" colspan="2" |' .. data) | |||
elseif header and not data then | |||
-- ...and it's a dataless header row | |||
end | |||
end | end | ||
| Line 60: | Line 71: | ||
-- most cases, however. | -- most cases, however. | ||
function p.navbox_title(title, is_collapsible, name) | function p.navbox_title(title, is_collapsible, name) | ||
local is_root_navbox = (is_root_navbox == nil and is_root_navbox or true) -- If not specified, default to TRUE | --local is_root_navbox = (is_root_navbox == nil and is_root_navbox or true) -- If not specified, default to TRUE; unused?? | ||
local has_navbar = name ~= nil | local has_navbar = name ~= nil | ||
local navbox_title = '' | local navbox_title = '' | ||
| Line 204: | Line 215: | ||
-- Headerless row | -- Headerless row | ||
row = {} | row = {} | ||
row["Data"] = data | |||
elseif (header ~= nil and data == nil) then | elseif (header ~= nil and data == nil) then | ||
-- Dataless row | -- Dataless row | ||
row = {} | row = {} | ||
row["Header"] = header | |||
row["Data"] = "" | |||
elseif (header ~= nil and data ~= nil) then | elseif (header ~= nil and data ~= nil) then | ||
-- Row with header and data | -- Row with header and data | ||
row = {} | row = {} | ||
row["Header"] = header | |||
row["Data"] = data | |||
end | end | ||
if row ~= nil then | if row ~= nil then | ||
| Line 238: | Line 249: | ||
return result | return result | ||
end | |||
function p.tester() | |||
local args = { | |||
["Data 1"] = "aaa", | |||
["Header 2"] = "BBB", | |||
["Data 2"] = "bbb", | |||
["Header 3"] = "CCC", | |||
} | |||
args["Rows"] = tiu.header_data_pairs_to_table(args, 30) | |||
args["Is Data Navbox"] = { false, false, false } | |||
return p._navbox(args) | |||
end | end | ||
return p | return p | ||