Module:沙盒/Chronowar/partnertable

来自Arcaea中文维基
< Module:沙盒
Chronowar讨论 | 贡献2021年7月20日 (二) 00:51的版本

可在Module:沙盒/Chronowar/partnertable/doc创建此模块的帮助文档

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 dateCov(v,d,t,type)
	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)
	if type=="arg" 
	then
		b:wikitext(v..'<br>'..'('..tostring(d)..')')
	else
		b:wikitext('v'..v..'<br>'..tostring(timeCov(d)))
	end
	box:wikitext(tostring(a))
	   :wikitext(tostring(b))
	   :wikitext(tostring(c))
	return tostring(box)	
end

function labelText(text,class)
	local span = mw.html.create( 'span' )
	span:addClass( 'label-text' )
	span:wikitext(text)
	return tostring(span)
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]]'..labelText('画师')..normalJacket) part2:wikitext('[[文件:'..prs..'|256px|none]]'..labelText('画师')..normalJacket)  part3:wikitext('[[文件:'..ftr..'|256px|none]]'..labelText('画师')..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]]'..labelText('画师')..normalJacket) part2:wikitext('[[文件:'..byd..'|256px|none]]'..labelText('画师')..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]]'..labelText('画师')..normalJacket) part2:wikitext('[[文件:'..second..'|256px|none]]'..labelText('画师')..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]]'..labelText('画师')..normalJacket) part2:wikitext('[[文件:Songs '..id..' byd.jpg|256px|none]]'..labelText('画师')..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]]'..labelText('画师')..normalJacket..'</div>'
	end
	
	return '<div>[[文件:'..all..'|256px|none]]'..labelText('画师')..normalJacket..'</div>'
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 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' }
		}
	}

	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
	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 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