更多操作
小无编辑摘要 |
小无编辑摘要 |
||
第31行: | 第31行: | ||
while (true) do | while (true) do | ||
if i > majorPart then break end | if i > majorPart then break end | ||
if i % itemsPerRow == 1 then result = result .. '<div style="display: flex">' end | |||
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = { | result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = { | ||
width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i) | width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i) | ||
} } | } } | ||
if i % itemsPerRow == 0 then result = result .. '</div>' end | |||
i = i + 1 | i = i + 1 | ||
end | end | ||
第40行: | 第42行: | ||
if remain ~= 0 then | if remain ~= 0 then | ||
widthPercent = string.format('%.2f', 100/(remain)) .. '%' | widthPercent = string.format('%.2f', 100/(remain)) .. '%' | ||
result = result .. '<div style="display: flex">' | |||
while (true) do | while (true) do | ||
if i > count then break end | if i > count then break end | ||
第47行: | 第50行: | ||
i = i + 1 | i = i + 1 | ||
end | end | ||
result = result .. '</div>' | |||
end | end | ||
2019年1月13日 (日) 04:28的版本
此模块的文档可以在模块:Infobox/item/multidata/doc创建
local p = {}
function p.getBackgroundColor(i)
if i % 2 == 1 then return nil end
return '#e5ded6'
end
function p.make()
local frame = mw.getCurrentFrame()
local parent = frame:getParent()
local itemsPerRow = tonumber(parent.args['row-items'])
if itemsPerRow == nil then
error('"row-items" is not a number')
end
local count = 0
local unnamed = {}
for k, v in pairs(parent.args) do
if tonumber(k) ~= nil and v ~= nil and v ~= '' then
table.insert(unnamed, v)
count = count + 1
end
end
local result = ''
local widthPercent = string.format('%.2f', 100/itemsPerRow) .. '%'
local majorPart = math.floor(count / itemsPerRow) * itemsPerRow
local i = 1
while (true) do
if i > majorPart then break end
if i % itemsPerRow == 1 then result = result .. '<div style="display: flex">' end
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i)
} }
if i % itemsPerRow == 0 then result = result .. '</div>' end
i = i + 1
end
local remain = count - majorPart
if remain ~= 0 then
widthPercent = string.format('%.2f', 100/(remain)) .. '%'
result = result .. '<div style="display: flex">'
while (true) do
if i > count then break end
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i)
} }
i = i + 1
end
result = result .. '</div>'
end
return result
end
return p