6,560
次編輯
小無編輯摘要 |
小 (曲目信息模板 v2.3 【自动分类/提示信息框/代码优化/启用部分自动填充】) |
||
第37行: | 第37行: | ||
if aKey then return a end | if aKey then return a end | ||
if bKey then return b end | if bKey then return b end | ||
return nil | |||
end | end | ||
第60行: | 第61行: | ||
function getImage(id, all, pst, prs, ftr, byd, second, normalJacketArgs, bydJacketArgs, normalJacketData, bydJacketData, bydyes, type) | function getImage(id, all, pst, prs, ftr, byd, second, normalJacketArgs, bydJacketArgs, normalJacketData, bydJacketData, bydyes, type) | ||
--谢邀,这写的什么东西我自己都看不懂了 | --谢邀,这写的什么东西我自己都看不懂了 | ||
if not(id or all) then return nil end | |||
local container, tab = mw.html.create('div'), mw.html.create('div') | local container, tab = mw.html.create('div'), mw.html.create('div') | ||
local tab1, tab2, tab3, part1, part2, part3, jacket1, jacket2 | local tab1, tab2, tab3, part1, part2, part3, jacket1, jacket2 | ||
第178行: | 第181行: | ||
return merge | return merge | ||
end | end | ||
第217行: | 第216行: | ||
chartDesigner[i] = chartDesigner[i - 1] | chartDesigner[i] = chartDesigner[i - 1] | ||
else | else | ||
chartDesigner[i] = link({'谱师', tostring(data(k[4]))}) | chartDesigner[i] = choice(link({'谱师', tostring(data(k[4]))}), data(k[4]), '', true) | ||
end | end | ||
end | end | ||
end | end | ||
end | |||
local span | |||
if byd then | |||
span = merge({chartDesigner[1], chartDesigner[2], chartDesigner[3], chartDesigner[4]}) | |||
else | |||
span = merge({chartDesigner[1], chartDesigner[2], chartDesigner[3]}) | |||
end | |||
-- if args['曲名'] == 'Tempestissimo' then spanNs = {'grid-column-start: span 1', 'grid-column-start: span 1', 'grid-column-start: span 1', 'grid-column-start: span 1'} end | |||
local imageA = getImage(data('id'), args['图片'], args['Past曲绘'], args['Present曲绘'], args['Future曲绘'], args['Beyond曲绘'], args['第二曲绘图片'], args['画师'], args['Beyond画师'], data('ftrJacketDesigner'), data('bydJacketDesigner'), byd, 'a') | |||
local imageB = getImage(data('id'), args['图片'], args['Past曲绘'], args['Present曲绘'], args['Future曲绘'], args['Beyond曲绘'], args['第二曲绘图片'], args['画师'], args['Beyond画师'], data('ftrJacketDesigner'), data('bydJacketDesigner'), byd, 'b') | |||
local infoList = { | |||
[1] = { | |||
choice(args['曲名'] or data('title') or dataNs('title'), data('id') or #args > 1, (args['曲名'] or data('title') or dataNs('title')) .. "<br>''此曲目暂未登录''", true), | |||
{id = 'title'}}, | |||
[2] = { | |||
imageA or choice('[[文件:Songs '..tostring(data('id')) .. '.jpg|点此上传图片]]', data('id'), '[[文件:Songs '..tostring(dataNs('id')) .. '.jpg|点此上传图片]]', dataNs('id')), | |||
{id = 'top-image'}}, | |||
[3] = { | |||
imageB or choice('[[文件:Songs '..tostring(data('id')) .. '.jpg|点此上传图片]]', data('id'), '[[文件:Songs '..tostring(dataNs('id')) .. '.jpg|点此上传图片]]', dataNs('id')), | |||
{id = 'right-image'}}, | |||
[4] = { | |||
'曲目信息', | |||
{class = 'header'}}, | |||
[5] = { | |||
'曲师', | |||
{class = 'label'}}, | |||
[6] = { | |||
args['编曲'] or choice(link({'曲师', tostring(data('artist'))}) or link({'曲师', tostring(dataNs('artist'))}), data('artist') or dataNs('artist'), '', true), | |||
{class = 'data'}}, | |||
[7] = { | |||
'曲包', | |||
{class = 'label'}}, | |||
[8] = { | |||
args['曲包'] or choice(getData.pack({data('set')}), data('set'), getData.pack({dataNs('set')}), dataNs('set')), | |||
{class = 'data'}}, | |||
[9] = { | |||
'时长', | |||
{class = 'label'}}, | |||
[10] = { | |||
args['时长'] or '空', | |||
{class = 'data'}}, | |||
[11] = { | |||
'BPM', | |||
{class = 'label'}}, | |||
[12] = { | |||
args['BPM'] or data('bpm') or dataNs('bpm'), | |||
{class = 'data'}}, | |||
[13] = { | |||
'谱面信息', | |||
{class = 'header'}}, | |||
[14] = { | |||
'难度', | |||
{class = 'label'}}, | |||
[15] = { | |||
'[Past]', | |||
{class = 'pst-label'}}, | |||
[16] = { | |||
'[Present]', | |||
{class = 'prs-label'}}, | |||
[17] = { | |||
'[Future]', | |||
{class = 'ftr-label'}}, | |||
[18] = { | |||
bydMark(byd, args['曲名']), | |||
{class = 'byd-label'}}, | |||
[19] = { | |||
'等级', | |||
{class = 'label'}}, | |||
[20] = { | |||
args['Past等级'] or data('pstRating'), | |||
{class = 'pst-data'}}, | |||
[21] = { | |||
args['Present等级'] or data('prsRating'), | |||
{class = 'prs-data'}}, | |||
[22] = { | |||
args['Future等级'] or data('ftrRating'), | |||
{class = 'ftr-data'}}, | |||
[23] = { | |||
args['Beyond等级'] or data('bydRating'), | |||
{class = 'byd-data'}}, | |||
[24] = { | |||
'note数量', | |||
{class = 'label'}}, | |||
[25] = { | |||
args['PastNote'] or '空', | |||
{class = 'pst-data'}}, | |||
[26] = { | |||
args['PresentNote'] or '空', | |||
{class = 'prs-data'}}, | |||
[27] = { | |||
args['FutureNote'] or '空', {class = 'ftr-data'}}, | |||
[28] = { | |||
args['BeyondNote'] or '空', | |||
{class = 'byd-data'}}, | |||
[29] = { | |||
'谱面设计', | |||
{class = 'label'}}, | |||
[30] = { | |||
chartDesigner[1] or '空', | |||
{class = 'pst-data'}, span[1]}, | |||
[31] = { | |||
chartDesigner[2] or '空', | |||
{class = 'prs-data'}, span[2]}, | |||
[32] = { | |||
chartDesigner[3] or '空', | |||
{class = 'ftr-data'}, span[3]}, | |||
[33] = { | |||
chartDesigner[4] or '空', | |||
{class = 'byd-data'}, span[4]}, | |||
[34] = { | |||
'谱面信息(Joy-Con)', | |||
{class = 'header ns', id = 'ns-play-header'}}, | |||
[35] = { | |||
'难度', | |||
{class = 'label ns'}}, | |||
[36] = { | |||
'[Past]', | |||
{class = 'pst-label ns'}}, | |||
[37] = { | |||
'[Present]', | |||
{class = 'prs-label ns'}}, | |||
[38] = { | |||
'[Future]', | |||
{class = 'ftr-label ns'}}, | |||
[39] = { | |||
bydMark(byd, args['曲名']), | |||
{class = 'byd-label ns'}}, | |||
[40] = { | |||
'note数量', | |||
{class = 'label ns'}}, | |||
[41] = { | |||
args['PastNoteNS'] or args['PastNote'], | |||
{class = 'pst-data ns'}}, | |||
[42] = { | |||
args['PresentNoteNS'] or args['PresentNote'], | |||
{class = 'prs-data ns'}}, | |||
[43] = { | |||
args['FutureNoteNS'] or args['FutureNote'], | |||
{class = 'ftr-data ns'}}, | |||
[44] = { | |||
args['BeyondNoteNS'] or '空', | |||
{class = 'byd-data ns'}}, | |||
[45] = { | |||
'背景', | |||
{class = 'label'}}, | |||
[46] = { | |||
bgCov(args['背景']) or bgCov(data('bg')) or bgCov(dataNs('bg')), | |||
{class = 'data'}}, | |||
[47] = { | |||
'更新时间', | |||
{id = 'update-data-label', class = 'label'}}, | |||
[48] = { | |||
dateCov(args['更新版本'], args['更新时间'], labelText('移动版'), 'arg') or dateCov(data('version'), tonumber(data('date')), labelText('移动版'), 'data'), | |||
{id = 'mobile-date-normal', class = 'data'}}, | |||
[49] = { | |||
dateCov(args['Beyond更新版本'], args['Beyond更新时间'], labelText('移动版'), 'arg') or '空', | |||
{id = 'mobile-date-byd', class = 'data'}}, | |||
[50] = { | |||
dateCov(args['更新版本NS'], args['更新时间NS'], labelText('NS版'), 'arg') or dateCov(dataNs('version'), tonumber(dataNs('date')), labelText('NS版'), 'data'), | |||
{id = 'ns-date-normal', class = 'data ns'}}, | |||
[51] = { | |||
'空', | |||
{id = 'ns-date-byd', class = 'data ns'}}} | |||
local box = mw.html.create('div') | |||
--样式控制 | |||
box:addClass("songbox") | |||
if byd then box:addClass("byd") end | |||
if dataNs('side') == 1 or args['侧'] == '1' then box:addClass("conflict") else box:addClass("light") end | |||
if args['更新版本NS'] or dataNs('id') | |||
then | |||
box:addClass("ns-box") | |||
if not(dataNs('pstChange') or dataNs('prsChange') or dataNs('ftrChange')) --(or byd) -- bdy单独分栏禁用 | |||
then | |||
box:addClass("ns-same") | |||
end | end | ||
end | |||
if args['Beyond更新版本'] and args['Beyond更新时间'] then box:addClass('mobile-byd-date') end | |||
if args['曲名'] == 'Tempestissimo' then box:addClass('ns-byd-date') box:addClass('ns-date-span') end | |||
if not(args['更新版本'] or args['更新时间'] or data('id')) then box:addClass('no-mobile') end | |||
--分类添加 | |||
local category = '' | |||
if args['更新版本NS'] or dataNs('id') | |||
if | then | ||
if args['更新版本'] or args['更新时间'] or data('id') | |||
then | |||
category = category..'[[ 分类:双平台曲目]]' | |||
else | else | ||
category = category..'[[ 分类:NS版曲目]]' | |||
end | end | ||
else | |||
category = category..'[[分类:移动版曲目]]' | |||
end | |||
if dataNs('pstChange') or dataNs('prsChange') or dataNs('ftrChange') then category = category..'[[分类:多模式谱面有差异的曲目]]' end | |||
category = category..'[[分类:'..infoList[8][1] .. '曲包曲目]]' | |||
if dataNs('side') == 1 or args['侧'] == '1' | |||
then | |||
category = category..'[[分类:纷争侧曲目]]' | |||
else | |||
category = category..'[[分类:光芒侧曲目]]' | |||
end | |||
category = category..'[[分类:PST'..infoList[20][1] .. '级曲目]]' | |||
category = category..'[[分类:PRS'..infoList[21][1] .. '级曲目]]' | |||
category = category..'[[分类:FTR'..infoList[22][1] .. '级曲目]]' | |||
if byd then category = category..'[[分类:BYD'..infoList[23][1] .. '级曲目]]' end | |||
category = category..'[[分类:采用'..infoList[46][1] .. '背景的曲目]]' | |||
if args['曲目版本'] then category = category..'[[分类:'..args['曲目版本']:gusb('v', 'V') .. '添加的曲目]]' end | |||
if args['曲目版本NS'] then category = category..'[[分类:NS '..args['曲目版本NS']:gusb('v', 'V') .. '添加的曲目]]' end | |||
--表格生成 | |||
local boxList = {} | |||
for i, o in ipairs(infoList) do | |||
boxList[i] = mw.html.create('div') | |||
boxList[i] | |||
:attr(infoList[i][2]) | |||
:cssText(infoList[i][3]) | |||
:wikitext(infoList[i][1]) | |||
box:wikitext(tostring(boxList[i])) | |||
end | |||
-- 提示信息 | |||
local noticeText = '' | |||
if not(data('id') or dataNs('id')) | |||
then | |||
noticeText = noticeText..'<li>在Songlist中无法检查到此 曲 目。请尝试更新[[ 模板:Songlist]] ,检查页面名或填写正确的<code> 曲 名</code>参数。</li>' | |||
end | |||
local noticeTextNote = '' | |||
if not(args['PastNote']) then noticeTextNote = noticeTextNote..'<code>PastNote</code>' end | |||
if not(args['PresentNote']) then noticeTextNote = noticeTextNote..'<code>PresentNote</code>' end | |||
if not(args['FutureNote']) then noticeTextNote = noticeTextNote..'<code>FutureNote</code>' end | |||
if noticeTextNote ~= '' | |||
then | |||
noticeText = noticeText..'<li>此模板缺少'..noticeTextNote..' 参数,此参数无法自动读取。</li>' | |||
end | |||
if not(args['时 长']) | |||
then | |||
noticeText = noticeText..'<li>此模板缺少<code> 时 长</code>参数,此参数无法自动读取。</li>' | |||
end | |||
if not(args['更新版本']) | |||
then | |||
noticeText = noticeText..'<li>此模板的移动版更新版本是未完整状态。请添加<code>更新版本</code>与<code>更新时间</code>参数。</li>' | |||
end | |||
if not(args['更新版本NS']) | |||
then | |||
noticeText = noticeText..'<li>此模板的NS版 更新版本 是未完整状态。请添加<code>更新版本NS</code>与<code> 更新时 间NS</code>参数。</li>' | |||
end | |||
local notice | |||
if noticeText ~= '' | |||
then | |||
notice = mw.getCurrentFrame():expandTemplate {title = 'Collapse', args = { | |||
[' 标题'] = ' 曲目信息模板提示信息', ['状态'] = '折叠', | |||
['标题文字方向'] = 'center', ['标题颜色'] = '#dddddd', | |||
[' 内容颜色'] = '#eeeeee', ['内容样式'] = 'width:800px', | |||
['style'] = 'display:table;width:200px', ['内容'] = noticeText}} | |||
category = category..'[[分类:缺少参数的曲目信息模板]]' | |||
end | |||
if args['nocat'] then category = '' end | |||
return tostring(box)..choice(notice, notice, '', true)..category | |||
end | |||
return p |