Module:MasonryLayout: Difference between revisions
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode Tag: Reverted |
||
| Line 621: | Line 621: | ||
function p.renderDistributedLayout(distribution, options) | function p.renderDistributedLayout(distribution, options) | ||
options = options or {} | options = options or {} | ||
local cardClass = options.cardClass or 'country-hub-masonry-card' | local cardClass = options.cardClass or 'country-hub-masonry-card' | ||
| Line 631: | Line 630: | ||
end | end | ||
-- Build | -- Build flat list of cards with column and order data attributes | ||
local | local allCards = {} | ||
local cardOrder = 1 | |||
for | -- First pass: collect intro and infoBox cards to ensure they come first | ||
local columnCards = columns[ | for colNum = 1, columnCount do | ||
local columnCards = columns[colNum] | |||
for _, card in ipairs(columnCards) do | |||
if card.id == 'intro' or card.id == 'infoBox' then | |||
for | table.insert(allCards, { | ||
card = card, | |||
column = colNum, | |||
order = cardOrder | |||
}) | |||
cardOrder = cardOrder + 1 | |||
end | |||
end | end | ||
end | |||
-- | |||
-- Second pass: collect all other cards | |||
'<div class="%s" data-column="%d">%s</div>', | for colNum = 1, columnCount do | ||
local columnCards = columns[colNum] | |||
for _, card in ipairs(columnCards) do | |||
if card.id ~= 'intro' and card.id ~= 'infoBox' then | |||
table.insert(allCards, { | |||
card = card, | |||
column = colNum, | |||
order = cardOrder | |||
}) | |||
cardOrder = cardOrder + 1 | |||
end | |||
end | |||
end | |||
-- Build HTML for flat structure | |||
local cardHtml = {} | |||
for i, item in ipairs(allCards) do | |||
cardHtml[i] = string.format( | |||
'<div class="%s" data-card-id="%s" data-column="%d" data-order="%d">%s</div>', | |||
cardClass, | |||
item.card.id or 'unknown', | |||
item.column, | |||
item.order, | |||
item.card.content or EMPTY_STRING | |||
) | ) | ||
end | end | ||
return table.concat( | return table.concat(cardHtml, '\n') | ||
end | end | ||