模块:勋章:修订间差异

跳到导航 跳到搜索
删除2,120字节 、​ 2022年6月7日 (星期二)
无编辑摘要
无编辑摘要
无编辑摘要
第1行: 第1行:
--
--处理勋章的模块
--
--若要新增参数,
--请在argText里加入参数名称与对应的文字
--并在displayOrder里也加入参数名称(displayOrder里面的参数相对位置代表显示顺序)
--即可完成


local p = {}
local p = {}


--参数对应的文字;大小写有区别
--处理可选择人名
local argText = {
function renderSelect(tabIndices, args)
["limited"]      = "限定贩售期间",
    local splitCount = tonumber(args['splitCount'])
["cost"]        = "获取条件",
     local tabs_pages = mw.html.create('div')
["price"]       = "价格",
        :addClass('tabs_pages')
["Purchase"]     = "购买条件",
        :css('display: grid')
["Effect"]      = "效果",
        :css('grid-template-columns', string.rep('1fr ', splitCount))
["EXP"]          = "有效期",
["upgrade"]      = "升级说明",
["requirements"] = "升级要求",
["ability"]      = "升级能力",
["ranking"]      = "名次",
["author"]      = "作者",
["inspiration"]  = "灵感",
["testimonials"] = "感言",
}


--用于决定显示顺序;大小写有区别
    for i, tabIndex in ipairs(tabIndices) do
local displayOrder = {
        tabs_pages:node('strong')
"limited", "cost",    "price",  "Purchase",
            :addClass('tab')
"Effect",  "EXP",    "upgrade", "requirements",
            :wikitext(args['tab' .. tabIndex])
"ability", "ranking", "author",  "inspiration",
        if (i-1)%splitCount==0 then tabs_pages:tag('br') end
"testimonials",
    end
}


--处理单个勋章
     return tabs_pages
function renderAwardDiv(awardNum, args)
end
     --添加新的div
    local awardDiv = mw.html.create('div')


    if args['file' .. awardNum] then
        awardDiv
            --div样式
            --:attr('align', 'center')
            :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


    --创建表格
--处理感言内容
     local infoTable = mw.html.create('table')
function renderContent(tabIndices, args)
    infoTable
     local tabs_contents = mw.html.create('div')
        :css('margin', 'auto')
         :addClass('tabs-contents')
        :css('text-align', 'center')
        :css('max-width', '200px')
         :css('min-width', '200px')
        :attr('border', '1')
        :attr('cellspacing', '0')


    --依照displayOrder的顺序建立表格内容
     for i, tabIndex in ipairs(tabIndices) do
     for i, arg in ipairs(displayOrder) do
         tabs_contents:node('div')
         if args[arg .. awardNum] then
             :addClass('tab-c')
            local row = infoTable:tag('tr')
             :wikitext(args['content' .. tabIndex])
             row
                :tag('th')
                :wikitext(argText[arg])
                :done()
                :tag('td')
                :wikitext(args[arg .. awardNum])
                :done()
        end
    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
     end


 
     return tabs_contents
     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')
    --循环处理每一个勋章
    --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


     return mainDiv
function p.testimonials(frame)
end
     local args, tabIndices = {}, {}


function p.awards(frame)
     --获取页面传来的参数,而非模板本身的参数
    local args={}
    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
         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)

导航菜单