模块:勋章:修订间差异

跳到导航 跳到搜索
添加4,461字节 、​ 2022年6月7日 (星期二)
已还原Fezz240对话)的编辑至最后由攸萨修订的版本
无编辑摘要
(已还原Fezz240对话)的编辑至最后由攸萨修订的版本)
标签回退
第1行: 第1行:
--
--处理勋章的模块
--


local p = {}
local p = {}


--处理可选择人名
--处理单个勋章
function renderSelect(tabIndices, args)
function renderAwardDiv(awardNum, args)
     local splitCount = tonumber(args['splitCount'])
     --添加新的div
     local tabs_pages = mw.html.create('div')
     local awardDiv = mw.html.create('div')
        :addClass('tabs_pages')
        :css('display: grid')
        :css('grid-template-columns', string.rep('1fr ', splitCount))


     for i, tabIndex in ipairs(tabIndices) do
     if args['file' .. awardNum] then
        tabs_pages:node('strong')
        awardDiv
             :addClass('tab')
            --div样式
             :wikitext(args['tab' .. tabIndex])
            --:attr('align', 'center')
        if (i-1)%splitCount==0 then tabs_pages:tag('br') end
            :css('width', '200px')
            :css('margin', '15px')
            :css('display', 'inline-block')
            :css('vertical-align', 'top')
            :css('position', 'relative')
             :css('text-align', 'center')
             :wikitext(args['file' .. awardNum])
            :wikitext('<br>')
            :wikitext(args['name' .. awardNum])
     end
     end


     return tabs_pages
    --创建表格
    local infoTable = mw.html.create('table')
    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
end


--处理表格
function renderMainDiv(awardNums, args)
    local mainDiv = mw.html.create('div')--创建mainDiv
        --在这里mainDiv添加样式
        :css('overflow', 'auto')
        :css('max-width', '800px')


--处理感言内容
    --循环处理每一个勋章
function renderContent(tabIndices, args)
    --splitCount为分割的数量
     local tabs_contents = mw.html.create('div')
     local splitCount = tonumber(args['splitCount'])
         :addClass('tabs-contents')
    if splitCount then
 
         for i, awardNum in ipairs(awardNums) do
    for i, tabIndex in ipairs(tabIndices) do
            mainDiv:node(renderAwardDiv(awardNum, args))
        tabs_contents:node('div')
             if i%splitCount==0 then mainDiv:tag('br') end
             :addClass('tab-c')
        end
             :wikitext(args['content' .. tabIndex])
    else
        for i, awardNum in ipairs(awardNums) do
             mainDiv:node(renderAwardDiv(awardNum, args))
        end
     end
     end


     return tabs_contents
     return mainDiv
end
end


 
function p.awards(frame)
function p.testimonials(frame)
     local args={}
     local args, tabIndices = {}, {}
    local awardNums={}
 
     --获取页面传来得参数,而不是模板的参数
     --获取页面传来的参数,而非模板本身的参数
     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 args[k] = v end --避免空的参数
         if v ~= 'nil' then
            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
         local tabIndex = ('' .. k):match('^tab(%d+)$')
        --依靠file个数,计算勋章个数
         if tabIndex then table.insert(tabIndices, tonumber(tabIndex)) end
         local awardNum = ('' .. k):match('^file(%d+)$')
         if awardNum then table.insert(awardNums, tonumber(awardNum)) end
     end
     end
     table.sort(tabIndices)
     table.sort(awardNums)


     --处理勋章
     --处理勋章
     local mainDiv = mw.html.create('div')
     local mainDiv = renderMainDiv(awardNums, args)
        :addClass('tabs-container')
    mainDiv:node(renderSelect(tabIndices, args))
    mainDiv:node(renderContent(tabIndices, args))


     return tostring(mainDiv)
     return tostring(mainDiv)

导航菜单