Content added Content deleted
mNo edit summary |
m (Temporarily disabling data table) |
||
Line 96: | Line 96: | ||
:addWhere('Cards.acquire', 'HOLDS', 'Event Shop') |
:addWhere('Cards.acquire', 'HOLDS', 'Event Shop') |
||
local gachaCardsTable = makeTable('Gacha cards', |
local gachaCardsTable = makeTable('Gacha cards', {}) |
||
local shopCardsTable = makeTable('Event Shop cards', |
local shopCardsTable = makeTable('Event Shop cards', {}) |
||
return gachaCardsTable:tostring() .. shopCardsTable:tostring() |
return gachaCardsTable:tostring() .. shopCardsTable:tostring() |
||
end |
end |
||
Revision as of 14:18, 6 April 2023
This module depends on the following other modules: |
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 VariablesLua = mw.ext.VariablesLua
local p = {}
local function formatThumbnail(thumbnail)
if thumbnail == nil or thumbnail == '' then return end
return string.format('[[File:%s|64px]]', thumbnail)
end
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' },
func = formatThumbnail,
sortable = false
},
{
name = 'name',
header = 'Card name',
dataFields = { 'cardPageName', 'Cards.card_name' },
func = 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' },
func = 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', {})
local shopCardsTable = makeTable('Event Shop cards', {})
return gachaCardsTable:tostring() .. shopCardsTable:tostring()
end
return p