Warning: is_readable(): open_basedir restriction in effect. File(/gitinfo/info.json) is not within the allowed path(s): (/www/wwwroot/ANDERSYSWIKI/:/tmp/:/dev/) in /www/wwwroot/ANDERSYSWIKI/includes/utils/GitInfo.php on line 149
模块:单元列表:修订间差异 - Ander. System Wiki
打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:单元列表:修订间差异

来自Ander. System Wiki
Ander留言 | 贡献
创建页面,内容为“-- Module:角色列表 local p = {} local data = mw.loadData("Module:单元列表/data") -- 渲染单张卡片 local function renderCard(char) local tags = "" for _, tag in ipairs(char.tags or {}) do tags = tags .. '<span class="as-tag">' .. tag .. "</span>" end return '<div class="as-char-card">' .. '<div class="as-char-card-body">' .. '<div class="as-char-card-name">" .. char.name .. "</div>"…”
 
Ander留言 | 贡献
无编辑摘要
 
第48行: 第48行:
     local html = '<div class="as-page-header">'
     local html = '<div class="as-page-header">'
         .. '<div class="as-page-label">★ CHARACTER DATABASE</div>'
         .. '<div class="as-page-label">★ CHARACTER DATABASE</div>'
         .. '<div class="as-page-title">角色档案</div>'
         .. '<div class="as-page-title">单元(Unit)档案</div>'
         .. '<div class="as-page-desc">Ander.System 世界中的所有角色资料与设定档案</div>'
         .. '<div class="as-page-desc">Ander.System 中的所有单元资料与设定档案</div>'
         .. "</div>"
         .. "</div>"


第63行: 第63行:


     -- 全部角色卡片网格
     -- 全部角色卡片网格
     html = html .. '<div class="as-section-label" id="全部角色">全部角色</div>'
     html = html .. '<div class="as-section-label" id="全部角色">全部单元</div>'
     html = html .. '<div class="as-char-grid">'for _, char in ipairs(data) do
     html = html .. '<div class="as-char-grid">'for _, char in ipairs(data) do
         html = html .. renderCard(char)
         html = html .. renderCard(char)

2026年7月28日 (二) 18:23的最新版本

此模块的文档可以在模块:单元列表/doc创建

-- Module:角色列表
local p = {}
local data = mw.loadData("Module:单元列表/data")

-- 渲染单张卡片
local function renderCard(char)
    local tags = ""
    for _, tag in ipairs(char.tags or {}) do
        tags = tags .. '<span class="as-tag">' .. tag .. "</span>"
    end
    return '<div class="as-char-card">'
        .. '<div class="as-char-card-body">'
        .. '<div class="as-char-card-name">[[' .. char.page .. "|" .. char.name .. "]]</div>"
        .. '<div class="as-char-card-role">' .. char.role .. "</div>"
        .. '<div class="as-char-card-tags">' .. tags .. "</div>"
        .. '<div class="as-char-card-desc">' .. char.desc .. "</div>"
        .. "</div></div>"
end

-- 渲染单个列表行
local function renderListItem(char)
    return '<div class="as-char-list-item">'
        .. '<div class="as-char-list-body">'
        .. '<div class="as-char-list-name">[[' .. char.page .. "|" .. char.name .. "]]</div>"
        .. '<div class="as-char-list-meta">' .. char.role .. " · " .. table.concat(char.tags or {}, " · ") .. "</div>"
        .. '<div class="as-char-list-desc">' .. char.desc .. "</div>"
        .. "</div></div>"
end

-- 收集所有分类(保持顺序,去重)
local function getCategories()
    local seen = {}
    local cats = {}
    for _, char in ipairs(data) do
        if char.category and not seen[char.category] then
            seen[char.category] = true
            table.insert(cats, char.category)
        end
    end
    return cats
end

-- 主入口:渲染完整角色列表页
function p.render(frame)
    local categories = getCategories()

    -- 页面头部
    local html = '<div class="as-page-header">'
        .. '<div class="as-page-label">★ CHARACTER DATABASE</div>'
        .. '<div class="as-page-title">单元(Unit)档案</div>'
        .. '<div class="as-page-desc">Ander.System 中的所有单元资料与设定档案</div>'
        .. "</div>"

    -- 筛选栏
    local tabs = '<span class="as-filter-tab as-active">全部</span>'
    for _, cat in ipairs(categories) do
        tabs = tabs .. '<span class="as-filter-tab">[[#' .. cat .. "|" .. cat .. "]]</span>"
    end
    html = html .. '<div class="as-filter-bar">'
        .. '<div class="as-filter-label">分类筛选</div>'
        .. '<div class="as-filter-tabs">' .. tabs .. "</div>"
        .. "</div>"

    -- 全部角色卡片网格
    html = html .. '<div class="as-section-label" id="全部角色">全部单元</div>'
    html = html .. '<div class="as-char-grid">'for _, char in ipairs(data) do
        html = html .. renderCard(char)
    end
    html = html .. "</div>"

    -- 按分类输出列表
    for _, cat in ipairs(categories) do
        html = html .. '<div class="as-section-label" id="' .. cat .. '">' .. cat .. "</div>"
        html = html .. '<div class="as-char-list">'
        for _, char in ipairs(data) do
            if char.category == cat then
                html = html .. renderListItem(char)
            end
        end
        html = html .. "</div>"
    end

    return html
end

return p