Module:NavboxGenerator: Difference between revisions

Jump to navigation Jump to search
Sur (talk | contribs)
m center titel and display by default
Sur (talk | contribs)
m alignment and margin now centered
Line 3: Line 3:
local function generateNavbox(data, level)
local function generateNavbox(data, level)
     local result = {}
     local result = {}
     local boxSize = 5 - level  -- Adjust box size reduction per level
     local boxSizePercent = 100 - (level-1)*15 -- 15% less per level, 100%, 85%, 70%, 55%, etc.
     local fontSize = 150 - (level * 20)  -- Adjust font size reduction per level
     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
Line 12: Line 12:
             -- Leaf node, render Display content
             -- Leaf node, render Display content
             table.insert(result, string.format(
             table.insert(result, string.format(
                 '<div style="text-align: center; font-size:%d%%; %s">%s</div>',
                 '<div style="text-align: center; font-size:%d%%;">%s</div>',
                 fontSize, data.Style or "", value
                 fontSize, value
             ))
             ))
         elseif type(value) == "table" then
         elseif type(value) == "table" then
             -- Nested node, render title with optional Style and recurse
             -- Nested node, render title with optional Style and recurse
             table.insert(result, string.format(
             table.insert(result, string.format(
                 '<div style="text-align: center; font-size:%d%%; border:1px solid #aaa; padding:5px; margin:2px; %s">%s</div>',
                 '<div style="width: %s%%; margin-left: auto; margin-right: auto; text-align: center; font-size:%d%%; border:1px solid #aaa; %s">%s</div>',
                 fontSize, value.Style or "", key
                 boxSizePercent, fontSize, value.Style or "", key
             ))
             ))
             table.insert(result, generateNavbox(value, level + 1))  -- Recursively process next level
             table.insert(result, generateNavbox(value, level + 1))  -- Recursively process next level