Content added Content deleted
mNo edit summary |
mNo edit summary |
||
Line 10: | Line 10: | ||
end |
end |
||
local function |
local function formatPageLink(page, name) |
||
if page and name then |
if page and name then |
||
return string.format('[[%s|%s]]', page, name) |
return string.format('[[%s|%s]]', page, name) |
||
Line 17: | Line 17: | ||
return nil |
return nil |
||
end |
end |
||
local function formatLink(page) |
|||
if page then |
|||
return string.format('[[%s]]', page) |
|||
end |
|||
return nil |
|||
end |
|||
local function makeBasicQueryBuilder(eventName) |
local function makeBasicQueryBuilder(eventName) |
||
Line 71: | Line 80: | ||
header = 'Card name', |
header = 'Card name', |
||
dataFields = { 'cardPageName', 'Cards.card_name' }, |
dataFields = { 'cardPageName', 'Cards.card_name' }, |
||
func = |
func = formatPageLink |
||
}, |
}, |
||
{ |
{ |
||
Line 96: | Line 105: | ||
name = 'skill', |
name = 'skill', |
||
header = 'Skill', |
header = 'Skill', |
||
dataFields = { 'Card_Skills.skill_type' } |
dataFields = { 'Card_Skills.skill_type' }, |
||
func = formatLink |
|||
}, |
}, |
||
} |
} |
Revision as of 08:00, 13 April 2022
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)
return string.format('[[File:%s|64px]]', thumbnail)
end
local function formatPageLink(page, name)
if page and name then
return string.format('[[%s|%s]]', page, name)
end
return nil
end
local function formatLink(page)
if page then
return string.format('[[%s]]', page)
end
return nil
end
local function makeBasicQueryBuilder(eventName)
local qb = QueryBuilder.new()
qb
:setTables('Cards, Card_Skills')
:setFields([[
Cards._pageName = cardPageName,
Cards.card_id,
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(10)
qb
:addWhere(
'Cards.event',
'=',
eventName
)
return qb
end
local function makeTable(caption, data)
local datatable = DatatableBuilder.new()
datatable
:setCaption(caption)
:setColumns{
{
name = 'id',
header = 'ID',
dataFields = { 'Cards.card_id' }
},
{
name = 'thumbnail',
header = 'Thumbnail',
dataFields = { 'Cards.thumbnail' },
func = formatThumbnail,
sortable = false
},
{
name = 'name',
header = 'Card name',
dataFields = { 'cardPageName', 'Cards.card_name' },
func = formatPageLink
},
{
name = 'character',
header = 'Character',
dataFields = { 'Cards.card_character' }
},
{
name = 'attribute',
header = 'Attribute',
dataFields = { 'Cards.attribute' }
},
{
name = 'rarity',
header = 'Rarity',
dataFields = { 'Cards.rarity' }
},
{
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 eventName = args['event name'] or VariablesLua.var( 'event name' )
local eventId = args['event id'] or VariablesLua.var( 'event id' )
local gachaName = args['debut gacha name']
local gachaId = args['debut gacha id']
local gachaCardsQuery = makeBasicQueryBuilder(eventName, 'Gacha')
:addWhere(
'Cards.banner',
'=',
gachaName
)
local shopCardsQuery = makeBasicQueryBuilder( eventName )
:addWhere(
'Cards.obtain',
'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