local getArgs = require('Module:Arguments').getArgs
local p = {}
local function genCardName(frame, name_cn, name_jp)
if name_jp and name_jp ~= '' then
name_jp = frame:expandTemplate{ title = 'lj', args = {name_jp} }
end
local name = name_jp
if name_cn and name_cn ~= '' then
name = name_cn .. '<br/>' .. name_jp
end
local obj = mw.html.create('center')
:wikitext(name)
:done()
return tostring(obj)
end
local function genCardLabel(num, card, cardName)
local cardLabel = mw.html.create('span')
cardLabel:attr('data-order', num - 1):attr('data-key', 'spcard-' .. num)
local cardLabelSelected = cardLabel:tag('span')
cardLabelSelected:addClass('textToggleDisplayButtonLabelText')
:addClass('on')
:wikitext(card)
:tag('span')
:addClass('uma-selected')
:wikitext(cardName)
:done()
local cardLabelUnselected = cardLabel:tag('span')
cardLabelUnselected:addClass('textToggleDisplayButtonLabelText')
:addClass('off')
:wikitext(card .. cardName)
return tostring(cardLabel)
end
local function genMobileButton(num, name_cn)
local mobileLabel = mw.html.create('span')
mobileLabel:attr('data-order', num - 1):attr('data-key', 'spcard-' .. num)
local mobileLabelSelected = mobileLabel:tag('span')
mobileLabelSelected:addClass('textToggleDisplayButtonLabelText')
:addClass('on')
:wikitext(name_cn)
local mobileLabelUnselected = mobileLabel:tag('span')
mobileLabelUnselected:addClass('textToggleDisplayButtonLabelText')
:addClass('off')
:wikitext(name_cn)
return tostring(mobileLabel)
end
local function genText(num, text)
text = text or "''(暂无文本)''"
local obj = mw.html.create('div')
:addClass('textToggleDisplay')
:addClass('hidden')
:attr('data-id', 'spcard-' .. num)
:wikitext(text)
return tostring(obj)
end
local function collectCards(frame, args)
local labels = {}
local mobileButtons = {}
local stories = {}
local i = 1
while args[i] do
local card = args[i]
local name_cn = args["cn" .. i]
local name_jp = args["jp" .. i]
local text = args["text" .. i]
local cardName = genCardName(frame, name_cn, name_jp)
if card and card ~= '' then
table.insert(labels, genCardLabel(i, card, cardName))
table.insert(mobileButtons, genMobileButton(i, name_cn or name_jp))
table.insert(stories, genText(i, text))
end
i = i + 1
end
return labels, mobileButtons, stories
end
function p.main(frame)
local args = getArgs(frame)
local labels, mobileButtons, stories = collectCards(frame, args)
local mainDiv = mw.html.create('div')
mainDiv:addClass('uma-spcard-show')
local subDiv1 = mainDiv:tag('span')
subDiv1:addClass('textToggleDisplayButtons')
:attr('data-key-0', '@radio')
:attr('data-value-0', '1')
:attr('data-key-1', '@default')
:attr('data-value-1', 'spcard-1')
for k, label in ipairs(labels) do
subDiv1:wikitext(label)
end
mainDiv:wikitext("\n\n\n<big>'''支援卡小故事'''</big>:\n\n")
local subDiv2 = mainDiv:tag('div')
subDiv2:addClass('mobile-only')
local buttonNames = subDiv2:tag('span')
buttonNames:addClass('textToggleDisplayButtons')
:attr('data-key-0', '@radio')
:attr('data-value-0', '1')
:attr('data-key-1', '@default')
:attr('data-value-1', 'spcard-1')
for k, button in ipairs(mobileButtons) do
buttonNames:wikitext(button)
end
mainDiv:wikitext('\n')
for k, text in ipairs(stories) do
mainDiv:wikitext(text)
end
return frame:preprocess(tostring(mainDiv))
end
return p