打开主菜单
首页
随机
登录
设置
关于Arcaea中文维基
免责声明
搜索
查看“Module:Songtable”的源代码
←
Module:Songtable
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local getArgs = require('Module:Arguments').getArgs local link = require('Module:Link')._link local getData = require("Module:data") local p = {} function timeCov(t) return os.date("(%Y/%m/%d)", t) end function dateArg(v,d,t) if not(v and d) then return nil end local box,a,b,c = mw.html.create( 'div' ),mw.html.create( 'div' ),mw.html.create( 'div' ),mw.html.create( 'div' ) box:addClass( "date-box" ) a:wikitext(t) b:wikitext(v..'<br>'..'('..tostring(d)..')') box:wikitext(tostring(a)) :wikitext(tostring(b)) :wikitext(tostring(c)) return tostring(box) end function dateData(v,d,t) if not(v and d) then return nil end local box,a,b,c = mw.html.create( 'div' ),mw.html.create( 'div' ),mw.html.create( 'div' ),mw.html.create( 'div' ) box:addClass( "date-box" ) a:wikitext(t) b:wikitext('v'..v..'<br>'..tostring(timeCov(d))) box:wikitext(tostring(a)) :wikitext(tostring(b)) :wikitext(tostring(c)) return tostring(box) end function getImage(id,all,pst,prs,ftr,byd,second,normalJacketArgs,bydJacketArgs,normalJacketData,bydJacketData,bydyes,type) local container,tab=mw.html.create('div'),mw.html.create('div') local tab1,tab2,tab3,part1,part2,part3,jacket1,jacket2 container:addClass( 'container' ) tab:attr( 'id','tab-'..type ) tab:addClass( 'img-tab' ) local normalJacket,bydJacket if normalJacketArgs then if bydJacketArgs then normalJacket,bydJacket=normalJacketArgs,bydJacketArgs else normalJacket,bydJacket=normalJacketArgs,normalJacketArgs end else if normalJacketData=="" or normalJacketData==nil then normalJacket,bydJacket='未知','未知' else normalJacket,bydJacket=link({'画师',tostring(normalJacketData)}),link({'画师',tostring(bydJacketData)}) end end if pst and prs and ftr then tab1,tab2,tab3,part1,part2,part3=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div') tab1:wikitext('Past') tab2:wikitext('Present') tab3:wikitext('Future') tab1:addClass('img-tab-part pst') tab2:addClass('img-tab-part prs') tab3:addClass('img-tab-part ftr') tab:wikitext(tostring(tab1)) tab:wikitext(tostring(tab2)) tab:wikitext(tostring(tab3)) container:wikitext(tostring(tab)) part1:wikitext('[[文件:'..pst..'|256px|none]]画师:'..normalJacket) part2:wikitext('[[文件:'..prs..'|256px|none]]画师:'..normalJacket) part3:wikitext('[[文件:'..ftr..'|256px|none]]画师:'..normalJacket) part1:addClass('tab-text-'..type) part2:addClass('tab-text-'..type) part3:addClass('active tab-text-'..type) container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) container:wikitext(tostring(part3)) return tostring(container) end if byd then tab1,tab2,part1,part2=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div') tab1:wikitext('Normal') tab2:wikitext('Beyond') tab1:addClass('img-tab-part normal') tab2:addClass('img-tab-part byd') tab:wikitext(tostring(tab1)) tab:wikitext(tostring(tab2)) container:wikitext(tostring(tab)) part1:wikitext('[[文件:'..all..'|256px|none]]画师:'..normalJacket) part2:wikitext('[[文件:'..byd..'|256px|none]]画师:'..tostring(bydJacket)) part1:addClass('active tab-text-'..type) part2:addClass('tab-text-'..type) container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) return tostring(container) end if second then tab1,tab2,part1,part2=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div') tab1:wikitext('第一曲绘') tab2:wikitext('第二曲绘') tab1:addClass('img-tab-part normal') tab2:addClass('img-tab-part normal') tab:wikitext(tostring(tab1)) tab:wikitext(tostring(tab2)) container:wikitext(tostring(tab)) part1:wikitext('[[文件:'..all..'|256px|none]]画师:'..normalJacket) part2:wikitext('[[文件:'..second..'|256px|none]]画师:'..normalJacket) part1:addClass('active tab-text-'..type) part2:addClass('tab-text-'..type) container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) return tostring(container) end if id and bydyes then tab1,tab2,part1,part2=mw.html.create('div'),mw.html.create('div'),mw.html.create('div'),mw.html.create('div') tab1:wikitext('Normal') tab2:wikitext('Beyond') tab1:addClass('img-tab-part normal') tab2:addClass('img-tab-part byd') tab:wikitext(tostring(tab1)) tab:wikitext(tostring(tab2)) container:wikitext(tostring(tab)) part1:wikitext('[[文件:Songs '..id..'.jpg|256px|none]]画师:'..normalJacket) part2:wikitext('[[文件:Songs '..id..' byd.jpg|256px|none]]画师:'..tostring(bydJacket)) part1:addClass('active tab-text-'..type) part2:addClass('tab-text-'..type) container:wikitext(tostring(part1)) container:wikitext(tostring(part2)) return tostring(container) end if id then return '<div>[[文件:Songs '..id..'.jpg|256px|none]]画师:'..normalJacket..'</div>' end return '<div>[[文件:'..all..'|256px|none]]画师:'..normalJacket..'</div>' end function merge(list) local merge if list[4] then merge={1,1,1,1} else merge={1,1,1} end local o if list[4] then o=4 else o=3 end if list[4] then if list[4]==list[3] then merge[3]=merge[3]+merge[4] merge[4]=0 end end if list[3]==list[2] then merge[2]=merge[2]+merge[3] merge[3]=0 end if list[2]==list[1] then merge[1]=merge[1]+merge[2] merge[2]=0 end for i=1,o do if merge[i]==0 then merge[i]='display:none' else merge[i]='grid-column-start: span '..merge[i]..';' end end return merge end function re0() return nil end function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) local category='' local data,dataNs local argsLength = 0 for _,_ in pairs(args) do argsLength=argsLength+1 end if argsLength>=16 then data,dataNs=re0,getData.getNS(args['曲名']) else data,dataNs=getData.getMobile(args['曲名']),getData.getNS(args['曲名']) end local byd if args['Beyond等级'] or data('bydRating') then byd=true else byd=false end local getChartDesigner={ [1]={ 'mobile' , 'PastNote编写' , 'note编写' , 'pstChartDesigner' }, [2]={ 'mobile' , 'PresentNote编写' , 'note编写' , 'prsChartDesigner' }, [3]={ 'mobile' , 'FutureNote编写' , 'note编写' , 'ftrChartDesigner' }, [4]={ 'mobile' , 'BeyondNote编写' , 'note编写' , 'bydChartDesigner' }, [5]={ 'ns' , 'PastNote编写NS' , 'note编写NS' , 'pstChartDesigner' }, [6]={ 'ns' , 'PresentNote编写NS' , 'note编写NS' , 'prsChartDesigner' }, [7]={ 'ns' , 'FutureNote编写NS' , 'note编写NS' , 'ftrChartDesigner' } } local chartDesigner={} for i,k in ipairs(getChartDesigner) do if args[k[2]] then chartDesigner[i]=args[k[2]] else if args[k[3]] then chartDesigner[i]=args[k[3]] else if chartDesigner[i-1] and argsLength>=16 and i~=5 then chartDesigner[i]=chartDesigner[i-1] else if k[1]=='mobile' then chartDesigner[i]=link({ '谱师',tostring(data(k[4])) }) else chartDesigner[i]=link({ '谱师',tostring(dataNs(k[4])) }) end end end end end local span,spanNs if byd then span=merge({ chartDesigner[1],chartDesigner[2],chartDesigner[3],chartDesigner[4] }) else span=merge({ chartDesigner[1],chartDesigner[2],chartDesigner[3] }) end spanNs=merge({ chartDesigner[5],chartDesigner[6],chartDesigner[7] }) if args['曲名']=='Tempestissimo' then spanNs={'grid-column-start: span 4','display:none','display:none','display:none'} 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]={ args['曲名'],data('title'),{ ['id']='title' } }, [2]={ imageA,'image',{ ['id']='top-image' } }, [3]={ imageB,'image',{ ['id']='right-image' } }, [4]={ '曲目信息','',{ ['class']='header' } }, [5]={ '曲师','',{ ['class']='label' } }, [6]={ args['编曲'],link({ '曲师',tostring(data('artist')) }),{ ['class']='data' } }, [7]={ '曲包','',{ ['class']='label' } }, [8]={ args['曲包'],data('set'),{ ['class']='data' } }, [9]={ '时长','',{ ['class']='label' } }, [10]={ args['时长'],'空',{ ['class']='data' } }, [11]={ 'BPM','',{ ['class']='label' } }, [12]={ args['BPM'],data('bpm'),{ ['class']='data' } }, [13]={ '谱面信息(双模式)','',{ ['id']='all-play-header' , ['class']='header' } }, [14]={ '谱面信息(触控)','',{ ['id']='mobile-play-header' , ['class']='header' } }, [15]={ '难度','',{ ['class']='label' } }, [16]={ '[Past]','',{ ['class']='pst-label' } }, [17]={ '[Present]','',{ ['class']='prs-label' } }, [18]={ '[Future]','',{ ['class']='ftr-label' } }, [19]={ '[Beyond]','',{ ['class']='byd-label' } }, [20]={ '等级','',{ ['class']='label' } }, [21]={ args['Past等级'],data('pstRating'),{ ['class']='pst-data' } }, [22]={ args['Present等级'],data('prsRating'),{ ['class']='prs-data' } }, [23]={ args['Future等级'],data('ftrRating'),{ ['class']='ftr-data' } }, [24]={ args['Beyond等级'],data('bydRating'),{ ['class']='byd-data' } }, [25]={ 'note数量','',{ ['class']='label' } }, [26]={ args['PastNote'],'空',{ ['class']='pst-data' } }, [27]={ args['PresentNote'],'空',{ ['class']='prs-data' } }, [28]={ args['FutureNote'],'空',{ ['class']='ftr-data' } }, [29]={ args['BeyondNote'],'空',{ ['class']='byd-data' } }, [30]={ '谱面设计','',{ ['class']='label' } }, [31]={ chartDesigner[1],'无',{ ['class']='pst-data' },span[1] }, [32]={ chartDesigner[2],'无',{ ['class']='prs-data' },span[2] }, [33]={ chartDesigner[3],'无',{ ['class']='ftr-data' },span[3] }, [34]={ '无','',{ ['class']='byd-data' },span[4] }, [35]={ '谱面信息(joy-con)','',{ ['class']='header ns',['id']='ns-play-header' } }, [36]={ '难度','',{ ['class']='label ns' } }, [37]={ '[Past]','',{ ['class']='pst-label ns' } }, [38]={ '[Present]','',{ ['class']='prs-label ns' } }, [39]={ '[Future]','',{ ['class']='ftr-label ns' } }, [40]={ '[Beyond]','',{ ['class']='byd-label ns' } }, [41]={ '等级','',{ ['class']='label ns' } }, [42]={ args['Past等级NS'],dataNs('pstRating'),{ ['class']='pst-data ns' } }, [43]={ args['Present等级NS'],dataNs('prsRating'),{ ['class']='prs-data ns' } }, [44]={ args['Future等级NS'],dataNs('ftrRating'),{ ['class']='ftr-data ns' } }, [45]={ '无','',{ ['class']='byd-data ns' } }, [46]={ 'note数量','',{ ['class']='label ns' } }, [47]={ args['PastNoteNS'],args['PastNote'],{ ['class']='pst-data ns' } }, [48]={ args['PresentNoteNS'],args['PresentNote'],{ ['class']='prs-data ns' } }, [49]={ args['FutureNoteNS'],args['FutureNote'],{ ['class']='ftr-data ns' } }, [50]={ args['BeyondNoteNS'],'无',{ ['class']='byd-data ns' } }, [51]={ '谱面设计','',{ ['class']='label ns' } }, [52]={ chartDesigner[5],chartDesigner[1],{ ['class']='pst-data ns' },spanNs[1] }, [53]={ chartDesigner[6],chartDesigner[2],{ ['class']='prs-data ns' },spanNs[2] }, [54]={ chartDesigner[7],chartDesigner[3],{ ['class']='ftr-data ns' },spanNs[3] }, [55]={ args['BeyondNote编写'],'无',{ ['class']='byd-data ns' },spanNs[4] }, [56]={ '背景','',{ ['class']='label' } }, [57]={ args['背景'],'[[背景列表|'..tostring(dataNs('bg'))..']]',{ ['class']='data' } }, [58]={ '更新时间','',{ ['id']='update-data-label',['class']='label' } }, [59]={ dateArg(args['更新版本'] , args['更新时间'] , '移动版:' ) , dateData( data('version') , tonumber(data('date')) , '移动版:' ) ,{ ['id']='mobile-date-normal',['class']='data'} }, [60]={ dateArg(args['Beyond更新版本'] , args['Beyond更新时间'] ,'' ) ,'空',{ ['id']='mobile-date-byd',['class']='data'} }, [61]={ dateArg(args['更新版本NS'] , args['更新时间NS'] , 'NS版:' ),dateArg('1.0.0c' ,'2021/5/18' , 'NS版:' ),{ ['id']='ns-date-normal',['class']='data ns'} }, [62]={ '无','',{ ['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 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 ) then box:addClass( "ns-same" ) end category=category..'[[分类:双模式曲目]]' else category=category..'[[分类:仅触摸模式曲目]]' 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 dataNs('pstChange') or dataNs('prsChange') or dataNs('ftrChange') then category=category..'[[分类:多模式谱面有差异的曲目]]' end if args['nocat'] then category='' end local boxList={} for i,o in ipairs(infoList) do boxList[i] = mw.html.create( 'div' ) boxList[i] :attr( infoList[i][3] ) :cssText( infoList[i][4] ) if infoList[i][1] then boxList[i]:wikitext( infoList[i][1] ) else boxList[i]:wikitext( infoList[i][2] ) end box:wikitext(tostring(boxList[i])) end return tostring(box)..category end return p
本页使用的模板:
Module:Songtable/doc
(
查看源代码
)
返回
Module:Songtable
。