打开/关闭搜索
搜索
打开/关闭菜单
139
836
236
7K
Rizline中文维基
导航
首页
最近更改
随机页面
♪ 随机曲目
@ 邮件联系
MediaWiki帮助
特殊页面
上传文件
Rizline中文维基
方针
格式手册
著作权
帮助
维基入门
基础语法
图像
表格
介绍
机制
设置
活动
收藏
挑战
版本更新概要
列表
曲目列表
插画作者列表
曲目作者列表
Rizcard列表
版式列表
称号列表
成就列表
外部链接
Rizline官方bilibili账号
Rizline中文维基bilibili账号
排错
特殊页面
封禁用户
站点统计
状态检测
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
中文(简体)
个人工具
创建账号
登录
查看“︁模块:SongInfoDetails”︁的源代码
来自Rizline中文维基
查看
阅读
查看源代码
查看历史
associated-pages
模块
讨论
更多操作
←
模块:SongInfoDetails
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
管理员
、emailconfirmed
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
local p = {} local getArgs = require('Module:Arguments').getArgs local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num and v and v ~= '' then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local function renderColor(color) if not color or color == '' then return '' end return color end local function renderRiztimes(args) local nums = getArgNums(args, 'riztimestart') if #nums == 0 then return nil end local times = {} for _, num in ipairs(nums) do local startKey = 'riztimestart' .. num local endKey = 'riztimeend' .. num if args[startKey] and args[endKey] then table.insert(times, args[startKey] .. '-' .. args[endKey]) end end return #times > 0 and table.concat(times, '<br>') or '未填写' end local function renderNormalColors(args) local nums = getArgNums(args, 'normalcolor') if #nums == 0 then return nil end local colors = {} for _, num in ipairs(nums) do local color = args['normalcolor' .. num] if color then table.insert(colors, renderColor(color)) end end return #colors > 0 and table.concat(colors, '<br>') or '未填写' end local function renderRiztimeColors(args, themeNum) local prefix = 'riztimecolor' .. themeNum .. '_' local nums = getArgNums(args, prefix) if #nums == 0 then return nil end local colors = {} for _, num in ipairs(nums) do local color = args[prefix .. num] if color then table.insert(colors, renderColor(color)) end end return #colors > 0 and table.concat(colors, '<br>') or nil end function p.details(frame) local args = getArgs(frame) local hasDetails = args.previewtime or getArgNums(args, 'riztimestart')[1] or getArgNums(args, 'normalcolor')[1] or getArgNums(args, 'riztimecolor1_')[1] or args.eztap or args.hdtap or args.intap or args.attap or args.ezline or args.hdline or args.inline or args.atline if not hasDetails then return '' end local html = {} local headerStyle = string.format( 'background:%s; color:%s; padding: 8px; font-weight: bold; text-align: center;', args.color3 or 'var(--color-surface-3)', args.textcolor3 or 'var(--color-emphasized)' ) local labelStyle = string.format( 'width:90px; background:%s; color:%s; padding:4px 8px;', args.color4 or 'var(--color-surface-2)', args.textcolor4 or '#000000' ) local dataStyle = 'background:var(--color-surface-1); color:var(--color-base); padding:4px 8px;' table.insert(html, '<div class="mw-collapsible mw-collapsed" style="width: 100%;">') table.insert(html, string.format('<div style="%s">详细信息</div>', headerStyle)) table.insert(html, '<table class="infobox mw-collapsible-content" style="width:100%; border:none; margin:0;">') if args.previewtime then table.insert(html, string.format( '<tr><th scope="row" style="%s">预览时间</th><td style="%s">%s</td></tr>', labelStyle, dataStyle, args.previewtime )) end local riztimes = renderRiztimes(args) if riztimes then table.insert(html, string.format( '<tr><th scope="row" style="%s">Riztime时间</th><td style="%s">%s</td></tr>', labelStyle, dataStyle, riztimes )) end local normalColors = renderNormalColors(args) local hasRiztimeColors = getArgNums(args, 'riztimecolor1_')[1] if normalColors or hasRiztimeColors then local subHeaderStyle = headerStyle:gsub('font%-weight:%s*bold;%s*','') .. ' text-align: center;' table.insert(html, string.format( '<tr><th colspan="2" style="%s">主题颜色</th></tr>', subHeaderStyle )) end if normalColors then table.insert(html, string.format( '<tr><th scope="row" style="%s">常规主题</th><td style="%s">%s</td></tr>', labelStyle, dataStyle, normalColors )) end for i = 1, 20 do local colors = renderRiztimeColors(args, i) if colors then table.insert(html, string.format( '<tr><th scope="row" style="%s">Riztime主题%d</th><td style="%s">%s</td></tr>', labelStyle, i, dataStyle, colors )) end end if args.eztap or args.hdtap or args.intap or args.attap then local subHeaderStyle = headerStyle:gsub('font%-weight:%s*bold;%s*','') .. ' text-align: center;' table.insert(html, string.format( '<tr><th colspan="2" style="%s">谱面信息</th></tr>', subHeaderStyle )) table.insert(html, string.format( '<tr><th colspan="2" style="%s">Tap/Drag/Hold</th></tr>', subHeaderStyle )) end if args.eztap then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'EZ', args.ez or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s/%s/%s</td></tr>', labelStyle, diffTag, dataStyle, args.eztap or '?', args.ezdrag or '?', args.ezhold or '?' )) end if args.hdtap then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'HD', args.hd or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s/%s/%s</td></tr>', labelStyle, diffTag, dataStyle, args.hdtap or '?', args.hddrag or '?', args.hdhold or '?' )) end if args.intap then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'IN', args.inlevel or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s/%s/%s</td></tr>', labelStyle, diffTag, dataStyle, args.intap or '?', args.indrag or '?', args.inhold or '?' )) end if args.attap then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'AT', args.at or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s/%s/%s</td></tr>', labelStyle, diffTag, dataStyle, args.attap or '?', args.atdrag or '?', args.athold or '?' )) end if args.ezline or args.hdline or args.inline or args.atline then local subHeaderStyle = headerStyle:gsub('font%-weight:%s*bold;%s*','') .. ' text-align: center;' table.insert(html, string.format( '<tr><th colspan="2" style="%s">线条数</th></tr>', subHeaderStyle )) end if args.ezline then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'EZ', args.ez or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s</td></tr>', labelStyle, diffTag, dataStyle, args.ezline )) end if args.hdline then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'HD', args.hd or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s</td></tr>', labelStyle, diffTag, dataStyle, args.hdline )) end if args.inline then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'IN', args.inlevel or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s</td></tr>', labelStyle, diffTag, dataStyle, args.inline )) end if args.atline then local diffTag = mw.getCurrentFrame():expandTemplate{ title = 'Diff', args = {'AT', args.at or ''} } table.insert(html, string.format( '<tr><th scope="row" style="%s">%s</th><td style="%s">%s</td></tr>', labelStyle, diffTag, dataStyle, args.atline )) end table.insert(html, '</table>') table.insert(html, '</div>') return table.concat(html) end return p
该页面使用的模板:
模块:SongInfoDetails/doc
(
查看源代码
)
返回
模块:SongInfoDetails
。
查看“︁模块:SongInfoDetails”︁的源代码
来自Rizline中文维基