Difference between revisions of "Module:Infobox"

Jump to navigation Jump to search
1,070 bytes added ,  18:01, 11 August 2022
no edit summary
Line 14: Line 14:
end
end


local function infoboxImage(image, defaultImage, caption, defaultCaption)
local function infoboxImage(image, caption, defaultImage, defaultCaption)
local result = mw.html.create('div')
local result = mw.html.create('div')
result:addClass('infobox-image')
result:addClass('infobox-image')
Line 43: Line 43:
end
end


local function infoboxGroup(data, rows)
local function infoboxGroup(data, rows, header)
local result
local result = {}
if data then
if data then
if header then
local headerData = mw.html.create('div')
headData:addClass('infobox-header')
:wikitext(header)
result:insert(headerData)
end
if rows then
if rows then
rows = 'data-rows-' .. rows
rows = 'data-rows-' .. rows
end
end
local result = mw.html.create('div')
local rowData = mw.html.create('div')
result:addClass('infobox-header')
rowData:addClass('infobox-row ' .. rows)
:tag('div')
:node(data)
:addClass('infobox-row ' .. rows)
result:insert(rowData)
:node(data)
end
end
Line 77: Line 82:
end
end


function p.building(frame)
local args = a.getArgs(frame)
local building = com.modulePagename(args['title'])
local buildingData = result('Module:Buildings').building
if buildingData or args['image'] then
local result = mainbox(building)
if args['image'] then
result:node(infoboxImage(args['image'], args['caption']))
end
--Production group
local workers = buildingData.workers
local productData = buildingData.products
local products = ''
if productData then
for k, v in ipairs(productData) do
products = products .. p.icon(v)
if k ~= #productData then
products = products .. '<br />'
end
end
end
if workers or products then
local productionSet = {}
productionSet:insert(infoboxData('workers', workers))
productionSet:insert(infoboxData('Produces', products))
result:node(infoboxGroup(productionSet, nil, 'Production'))
end
end
return result
end
return p
return p

Navigation menu