模块:单元列表:修订间差异
来自Ander. System Wiki
更多操作
创建页面,内容为“-- 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>"…” |
无编辑摘要 |
||
| 第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 class="as-page-title">单元(Unit)档案</div>' | ||
.. '<div class="as-page-desc">Ander.System | .. '<div class="as-page-desc">Ander.System 中的所有单元资料与设定档案</div>' | ||
.. "</div>" | .. "</div>" | ||
| 第63行: | 第63行: | ||
-- 全部角色卡片网格 | -- 全部角色卡片网格 | ||
html = html .. '<div class="as-section-label" id="全部角色"> | 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