缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!

该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!

全站通知:

模块:信息框/小行星

来自缺氧WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

用于模块:Module:小行星信息框



-- Module:信息框/小行星
local infobox = require([[Module:信息框]])
local fstr = mw.ustring.format
local p = {}

local innerNodes = {
    {
        tag = 'image',
        source = '图片',
        children = {{tag = 'caption', source = '图片说明'}}
    },
    {
        tag = 'data',
        source = '小行星代码',
        label = '小行星代码'
    },
    {
        tag = 'data',
        source = '大小',
        label = '大小'
    },
    {
        tag = 'data',
        source = '辐射强度',
        label = '[[辐射|辐射强度]]'
    },
    {
        tag = 'data',
        source = '最大光照',
        label = '[[照明#阳光|最大光照]]'
    },
    {
        tag = 'group',
        header = '小行星特征',
        attr = {collapse = 'open'},
        children = {
            {
                tag = 'data',
                source = '星球特质',
                label = '[[星球特质]]数量'
            },
            {
                tag = 'data',
                source = '天气',
                label = '天气'
            },
            {
                tag = 'data',
                source = '间歇泉',
                label = '[[间歇泉]]'
            }
        }
    },
    {
        tag = 'group',
        header = '世界生成',
        attr = {collapse = 'open'},
        children = {
            {
                tag = 'data',
                source = '生态',
                label = '[[生态]]'
            },
            {
                tag = 'data',
                source = '出现星群',
                label = '[[星群|出现星群]]'
            }
        }
    }
}

-- test: = p.infoboxContent{['最大光照'] = 5}
function p.infoboxContent(args)
    if args['间歇泉'] ~= nil then
        local node = mw.html.create('div'):tag('small'):css{
            ['display'] = 'grid',
            ['grid-template-columns'] = 'repeat(2, auto)',
            ['grid-gap'] = '0.8em 0.5em',
            ['justify-content'] = 'start',
            ['white-space'] = 'nowrap',
            ['align-items'] = 'center',
        }:wikitext(args['间歇泉'])
        args['间歇泉'] = tostring(node)
    end

    local generated = {}
    for _, n in ipairs(innerNodes) do
        local child = infobox.genNode(n, args)
        if child ~= nil then table.insert(generated, child) end
    end

    return generated
end

-- test: = p.main('testTitle', {{data={['天气'] = 5}}}, true)
-- test: = p.main('testTitle', {{data={['天气'] = 5}}, {data={['天气'] = 6}}}, true)
function p.main(title, data, raw)
    local contentNodes = nil
    if #data == 1 then
        contentNodes = p.infoboxContent(data[1].data)
    else
        local panelData = {}
        for _, pData in ipairs(data) do
            table.insert(panelData, {
                label = pData.label,
                content = p.infoboxContent(pData.data)
            })
        end
        contentNodes = {infobox.panel(panelData)}
        mw.logObject(contentNodes)
    end
    return infobox.infobox(title, contentNodes, raw)
end

-- test: =p.demo{['过冷'] = 5, raw=true}
function p.demo(frame)
    local getArgs = require('Module:Dev/Arguments').getArgs
    local args = getArgs(frame)
    return p.main(args['标题'], {{data = args}}, args.raw)
end

return p