|
|
第1行: |
第1行: |
| --
| |
| --处理勋章的模块
| |
| --
| |
|
| |
|
| local p = {} | | local p = {} |
|
| |
|
| --处理单个勋章 | | --处理可选择人名 |
| function renderAwardDiv(awardNum, args) | | function renderSelect(tabIndices, args) |
| --添加新的div | | local splitCount = tonumber(args['splitCount']) |
| local awardDiv = mw.html.create('div') | | local tabs_pages = mw.html.create('div') |
| | :addClass('tabs_pages') |
| | :css('display', 'grid') |
| | :css('margin', '2.5%') |
| | :css('gap', '4px') |
| | :css('grid-template-columns', string.rep('1fr ', splitCount)) |
|
| |
|
| if args['file' .. awardNum] then | | for i, tabIndex in ipairs(tabIndices) do |
| awardDiv
| | tabs_pages:tag('div') |
| --div样式
| | :addClass('tab') |
| --:attr('align', 'center')
| | :css('margin', '0') |
| :css('width', '200px')
| | :css('padding', '4px') |
| :css('margin', '15px')
| | :css('font-weight', '700') |
| :css('display', 'inline-block') | | :wikitext(args['tab' .. tabIndex]) |
| :css('vertical-align', 'top') | |
| :css('position', 'relative') | |
| :css('text-align', 'center') | |
| :wikitext(args['file' .. awardNum])
| |
| :wikitext('<br>')
| |
| :wikitext(args['name' .. awardNum]) | |
| end | | end |
|
| |
|
| --创建表格 | | return tostring(tabs_pages) |
| local infoTable = mw.html.create('table')
| | end |
| infoTable
| |
| :css('margin', 'auto')
| |
| :css('text-align', 'center')
| |
| :css('max-width', '200px')
| |
| :css('min-width', '200px')
| |
| :attr('border', '1')
| |
| :attr('cellspacing', '0')
| |
| if args['limited' .. awardNum] then
| |
| local EXP = infoTable:tag('tr')
| |
| EXP
| |
| :tag('th')
| |
| :wikitext('限定贩售期间')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['limited' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['cost' .. awardNum] then
| |
| local cost = infoTable:tag('tr')
| |
| cost
| |
| :tag('th')
| |
| :wikitext('获取条件')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['cost' .. awardNum])
| |
| :done()
| |
| end
| |
|
| |
| if args['price' .. awardNum] then
| |
| local price = infoTable:tag('tr')
| |
| price
| |
| :tag('th')
| |
| :wikitext('价格')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['price' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['Purchase' .. awardNum] then
| |
| local Purchase = infoTable:tag('tr')
| |
| Purchase
| |
| :tag('th')
| |
| :wikitext('购买条件')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['Purchase' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['Effect' .. awardNum] then
| |
| local Effect = infoTable:tag('tr')
| |
| Effect
| |
| :tag('th')
| |
| :wikitext('效果')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['Effect' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['EXP' .. awardNum] then
| |
| local EXP = infoTable:tag('tr')
| |
| EXP
| |
| :tag('th')
| |
| :wikitext('有效期')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['EXP' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['upgrade' .. awardNum] then
| |
| local upgrade = infoTable:tag('tr')
| |
| upgrade
| |
| :tag('th')
| |
| :wikitext('升级说明')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['upgrade' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['requirements' .. awardNum] then
| |
| local requirements = infoTable:tag('tr')
| |
| requirements
| |
| :tag('th')
| |
| :wikitext('升级要求')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['requirements' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['ability' .. awardNum] then
| |
| local ability = infoTable:tag('tr')
| |
| ability
| |
| :tag('th')
| |
| :wikitext('升级能力')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['ability' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['ranking' .. awardNum] then
| |
| local ranking = infoTable:tag('tr')
| |
| ranking
| |
| :tag('th')
| |
| :wikitext('名次')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['ranking' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['author' .. awardNum] then
| |
| local author = infoTable:tag('tr')
| |
| author
| |
| :tag('th')
| |
| :wikitext('作者')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['author' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['inspiration' .. awardNum] then
| |
| local inspiration = infoTable:tag('tr')
| |
| inspiration
| |
| :tag('th')
| |
| :wikitext('灵感')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['inspiration' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['testimonials' .. awardNum] then
| |
| local testimonials = infoTable:tag('tr')
| |
| testimonials
| |
| :tag('th')
| |
| :wikitext('感言')
| |
| :done()
| |
| :tag('td')
| |
| :wikitext(args['testimonials' .. awardNum])
| |
| :done()
| |
| end
| |
| if args['description' .. awardNum] then
| |
| local description = infoTable:tag('tr')
| |
| description
| |
| :tag('td')
| |
| :attr('colspan', '2')
| |
| :css('padding', '0 10px 0 10px')
| |
| :wikitext(args['description' .. awardNum])
| |
| :done()
| |
| end
| |
|
| |
|
|
| |
| return awardDiv:node(infoTable)
| |
|
| |
|
| end
| | --处理感言内容 |
| | function renderContent(tabIndices, args) |
| | local tabs_contents = mw.html.create('div') |
| | :addClass('tabs-contents') |
|
| |
|
| --处理表格
| | for i, tabIndex in ipairs(tabIndices) do |
| function renderMainDiv(awardNums, args)
| | tabs_contents:tag('div') |
| local mainDiv = mw.html.create('div')--创建mainDiv
| | :addClass('tab-c') |
| --在这里mainDiv添加样式
| | :wikitext(args['content' .. tabIndex]) |
| :css('overflow', 'auto')
| |
| :css('max-width', '800px')
| |
| | |
| --循环处理每一个勋章
| |
| --splitCount为分割的数量
| |
| local splitCount = tonumber(args['splitCount']) | |
| if splitCount then
| |
| for i, awardNum in ipairs(awardNums) do
| |
| mainDiv:node(renderAwardDiv(awardNum, args))
| |
| if i%splitCount==0 then mainDiv:tag('br') end | |
| end
| |
| else
| |
| for i, awardNum in ipairs(awardNums) do
| |
| mainDiv:node(renderAwardDiv(awardNum, args)) | |
| end
| |
| end | | end |
|
| |
|
| return mainDiv | | return tostring(tabs_contents) |
| end | | end |
|
| |
|
| function p.awards(frame) | | |
| local args={} | | function p.testimonials(frame) |
| local awardNums={}
| | local args, tabIndices = {}, {} |
| --获取页面传来得参数,而不是模板的参数 | | |
| | --获取页面传来的参数,而非模板本身的参数 |
| local parent_args = frame:getParent().args; | | local parent_args = frame:getParent().args; |
| | |
| | --可自定义每行几人,预设5 |
| | if args['splitCount'] == nil then args['splitCount'] = 5 end |
|
| |
|
| --将获取的参数传给args | | --将获取的参数传给args |
| for k, v in pairs(parent_args) do | | for k, v in pairs(parent_args) do |
| if v ~= 'nil' then | | if v ~= 'nil' then args[k] = v end --避免空的参数 |
| args[k] = v
| |
| end
| |
| end | | end |
|
| |
|
| | --|tab(x) 的数字可能非123...,可能是012...、037...等 |
| | --用于处理上述情况 |
| for k, v in pairs(args) do | | for k, v in pairs(args) do |
| --依靠file个数,计算勋章个数
| | local tabIndex = ('' .. k):match('^tab(%d+)$') |
| local awardNum = ('' .. k):match('^file(%d+)$') | | if tabIndex then table.insert(tabIndices, tonumber(tabIndex)) end |
| if awardNum then table.insert(awardNums, tonumber(awardNum)) end | |
| end | | end |
| table.sort(awardNums) | | table.sort(tabIndices) |
|
| |
|
| --处理勋章 | | --处理勋章 |
| local mainDiv = renderMainDiv(awardNums, args) | | local mainDiv = mw.html.create('div') |
| | :addClass('tabs-container') |
| | mainDiv:node(renderSelect(tabIndices, args)) |
| | mainDiv:node(renderContent(tabIndices, args)) |
|
| |
|
| return tostring(mainDiv) | | return tostring(mainDiv) |