Module:Event cards: Difference between revisions

From Sekaipedia
Content added Content deleted
(adding queries back)
mNo edit summary
Line 49: Line 49:
name = 'thumbnail',
name = 'thumbnail',
header = 'Thumbnail',
header = 'Thumbnail',
dataFields = { 'Cards.thumbnail' },
dataFields = { 'cards.thumbnail' },
fn = DisplayFns.image('64px'),
fn = DisplayFns.image('64px'),
sortable = false
sortable = false
Line 56: Line 56:
name = 'name',
name = 'name',
header = 'Card name',
header = 'Card name',
dataFields = { 'cardPageName', 'Cards.card_name' },
dataFields = { 'cardPageName', 'cards.card_name' },
fn = formatLink
fn = formatLink
},
},
Line 62: Line 62:
name = 'character',
name = 'character',
header = 'Character',
header = 'Character',
dataFields = { 'Cards.card_character' }
dataFields = { 'cards.card_character' }
},
},
{
{
name = 'status',
name = 'status',
header = 'Status',
header = 'Status',
dataFields = { 'Cards.status' }
dataFields = { 'cards.status' }
},
},
{
{
Line 80: Line 80:
return datatable
return datatable
end
end



function p.main(frame)
function p.main(frame)

Revision as of 03:46, 30 April 2023


To generate {{Event cards}}, invoke using the main function.


local getArgs          = require('Module:Arguments').getArgs
local DatatableBuilder = require('Module:DatatableBuilder')
local QueryBuilder     = require('Module:QueryBuilder')

local DisplayFns = require('Module:DisplayFunctions')

local VariablesLua = mw.ext.VariablesLua

local p = {}

local function formatLink(page, name)
	if page == nil or page == '' then return end
	return string.format('[[%s|%s]]', page, name or page)
end

local function makeBasicQueryBuilder(eventId)
	local qb = QueryBuilder.new()
	qb
		:setTables('cards, card_skills')
		:setFields([[
			cards._pageName = cardPageName,
			cards.card_name,
			cards.thumbnail,
			cards.card_character,
			cards.attribute,
			cards.rarity,
			cards.status,
			card_skills.skill_type
		]])
		:setJoinOn([[
			cards._pageID = card_skills._pageID
		]])
		:addWhere('card_id', '>', 0)
		:setOrderBy('cards.card_id ASC')
		:setGroupBy('cards._pageID')
		:setLimit(5)
	qb
		:addWhere('cards.event_id', '=', eventId)

	return qb
end

local function makeTable(caption, data)
	local datatable = DatatableBuilder.new()
	datatable
		:setCaption(caption)
		:setColumns{
			{
				name = 'thumbnail',
				header = 'Thumbnail',
				dataFields = { 'cards.thumbnail' },
				fn = DisplayFns.image('64px'),
				sortable = false
			},
			{
				name = 'name',
				header = 'Card name',
				dataFields = { 'cardPageName', 'cards.card_name' },
				fn = formatLink
			},
			{
				name = 'character',
				header = 'Character',
				dataFields = { 'cards.card_character' }
			},
			{
				name = 'status',
				header = 'Status',
				dataFields = { 'cards.status' }
			},
			{
				name = 'skill',
				header = 'Skill',
				dataFields = { 'card_skills.skill_type' },
				fn = formatLink
			},
		}
		:setData(data)

	return datatable
end

function p.main(frame)
	local args = getArgs(frame)

	local eventId = args['event id'] or VariablesLua.var('event id')
	local gachaId = args['debut gacha id']
	
	local gachaCardsQuery = makeBasicQueryBuilder(eventId, 'Gacha')
		:addWhere('Cards.gacha_id', '=', gachaId)
	local shopCardsQuery = makeBasicQueryBuilder(eventId)
		:addWhere('Cards.acquire', 'HOLDS', 'Event Shop')
	
	local gachaCardsTable = makeTable('Gacha cards', gachaCardsQuery:query())
	local shopCardsTable  = makeTable('Event Shop cards', shopCardsQuery:query())

	return gachaCardsTable:tostring() .. shopCardsTable:tostring() 
end

return p
Cookies help us deliver our services. By using our services, you agree to our use of cookies.