Module:NavboxGenerator: Difference between revisionsGive feedback
initial |
m preprocess output for wikitext |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
local function generateNavbox(data, level) | local function generateNavbox(data, level) | ||
local result = {} | local result = {} | ||
local | local boxSizePercent = 100 - (level-1)*15 -- 15% less per level, 100%, 85%, 70%, 55%, etc. | ||
local fontSize = | local fontSize = 170 - (level * 15) -- Adjust font size reduction per level | ||
for key, value in pairs(data) do | for key, value in pairs(data) do | ||
if | if key == "Style" then | ||
-- Skip "Style" as it's just an attribute holder | |||
elseif key == "Display" then | |||
-- Leaf node, render Display content | |||
table.insert(result, string.format( | table.insert(result, string.format( | ||
'<div style="font-size:%d%% | '<div style="text-align: center; font-size:%d%%;">%s</div>', | ||
fontSize, | fontSize, value | ||
)) | )) | ||
elseif type(value) == "table" then | |||
-- Nested node, render title with optional Style and recurse | |||
table.insert(result, string.format( | table.insert(result, string.format( | ||
'<div style=" | '<div style="width: %s%%; margin-left: auto; margin-right: auto; text-align: center; font-size:%d%%; border:1px solid #aaa; %s">%s</div>', | ||
fontSize, | boxSizePercent, fontSize, value.Style or "", key | ||
)) | )) | ||
table.insert(result, generateNavbox(value, level + 1)) -- Recursively process next level | |||
end | end | ||
end | end | ||
return table.concat(result, "\n") | return mw.getCurrentFrame():preprocess(table.concat(result, "\n")) | ||
end | end | ||
function p.createNavbox(frame) | function p.createNavbox(frame) | ||
local jsonData = mw.loadJsonData( | local dataPageName = frame.args[1] | ||
if dataPageName == nil then return "dataPageName parameter missing" end | |||
local jsonData = mw.loadJsonData(dataPageName) | |||
return generateNavbox(jsonData, 1) | return generateNavbox(jsonData, 1) | ||
end | end | ||
return p | return p | ||