Module:DynamicTable: Difference between revisions

From TwogPedia
(Created page with "local getArgs = require('Module:Arguments').getArgs local DynamicTable = {} function DynamicTable.main(frame) local args = getArgs(frame) local tableContainer = mw.html.create('table'):addClass('wikitable') local split = mw.text.split(args.columns, ',') local headerRow = mw.html.create('tr') for i = 1, #split do local th = mw.html.create('th'):wikitext(mw.text.trim(split[i])) headerRow:node(th) end tableContainer:node(headerRow):node(args.rows) return ta...")
 
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 4: Line 4:


function DynamicTable.main(frame)
function DynamicTable.main(frame)
local args = getArgs(frame)
    local args = getArgs(frame)


local tableContainer = mw.html.create('table'):addClass('wikitable')
    local IconHtml = '[[File:Work-hours-icon.png|30px|alt=Icon]]'
   
local split = mw.text.split(args.columns, ',')
    local container = mw.html.create('div'):addClass('container')
local headerRow = mw.html.create('tr')
    container:node(mw.html.create('div'):addClass('news-icon'):wikitext(IconHtml .. ' <span>Equipment </span>'))
for i = 1, #split do
   
local th = mw.html.create('th'):wikitext(mw.text.trim(split[i]))
    -- local tableContainer = mw.html.create('table'):addClass('striped-table')
headerRow:node(th)
    local tableContainer = mw.html.create('table'):addClass('striped-table'):addClass('equipment-table')
end
   
tableContainer:node(headerRow):node(args.rows)
    if (args.columns) then
return tableContainer
        local split = mw.text.split(args.columns, ',')
        local headerRow = mw.html.create('tr'):addClass('headerRow')
        for i = 1, #split do
            local th = mw.html.create('th'):wikitext(mw.text.trim(split[i]))
            headerRow:node(th)
        end
        tableContainer:node(headerRow)
    end
 
    if (args.rows) then
        tableContainer:node(args.rows)
    end
   
    container:node(tableContainer)
   
    return container
end
end


function DynamicTable.row(frame)
function DynamicTable.row(frame)
local args = getArgs(frame)
    local args = getArgs(frame)


local split = mw.text.split(args[1], ',')
    local split = mw.text.split(args[1], ',')
local row = mw.html.create('tr')
    local row = mw.html.create('tr'):addClass('bodyRow')
   
for i = 1, #split do
    for i = 1, #split do
local td = mw.html.create('td'):wikitext(mw.text.trim(split[i]))
        local td = mw.html.create('td'):wikitext(mw.text.trim(split[i]))
row:node(td)
        if #split == 1 then td:attr('colspan', 5):addClass('fw-600') end
end
        row:node(td)
    end
return row
   
    return row
end
end


return DynamicTable
return DynamicTable

Latest revision as of 21:00, 30 April 2025

Documentation for this module may be created at Module:DynamicTable/doc

local getArgs = require('Module:Arguments').getArgs

local DynamicTable = {}

function DynamicTable.main(frame)
    local args = getArgs(frame)

    local IconHtml = '[[File:Work-hours-icon.png|30px|alt=Icon]]'
    
    local container = mw.html.create('div'):addClass('container')
    container:node(mw.html.create('div'):addClass('news-icon'):wikitext(IconHtml .. ' <span>Equipment </span>'))
    
    -- local tableContainer = mw.html.create('table'):addClass('striped-table')
    local tableContainer = mw.html.create('table'):addClass('striped-table'):addClass('equipment-table')
    
    if (args.columns) then
        local split = mw.text.split(args.columns, ',')
        local headerRow = mw.html.create('tr'):addClass('headerRow')
        for i = 1, #split do
            local th = mw.html.create('th'):wikitext(mw.text.trim(split[i]))
            headerRow:node(th)
        end
        tableContainer:node(headerRow)
    end

    if (args.rows) then
        tableContainer:node(args.rows)
    end
    
    container:node(tableContainer)
    
    return container
end

function DynamicTable.row(frame)
    local args = getArgs(frame)

    local split = mw.text.split(args[1], ',')
    local row = mw.html.create('tr'):addClass('bodyRow')
    
    for i = 1, #split do
        local td = mw.html.create('td'):wikitext(mw.text.trim(split[i]))
        if #split == 1 then td:attr('colspan', 5):addClass('fw-600') end
        row:node(td)
    end
    
    return row
end

return DynamicTable