Content added Content deleted
(Created page with "local getArgs = require('Module:Arguments').getArgs local DatatableBuilder = require('Module:DatatableBuilder') local QueryBuilder = require('Module:QueryBuilder') local p = {} local function formatLogo(logo) return string.format('192px', logo) end local function formatName(pageName, eventName) return string.format('%s', pageName, eventName) end local function formatDuration(start_dt, end_dt) if start_dt and end_dt then return str...") |
mNo edit summary |
||
Line 6: | Line 6: | ||
local function formatLogo(logo) |
local function formatLogo(logo) |
||
if logo then |
|||
return string.format('[[File:%s|192px]]', logo) |
|||
end |
|||
return nil |
|||
end |
end |
||
local function formatName(pageName, |
local function formatName(pageName, gachaName) |
||
return string.format('[[%s|%s]]', pageName, |
return string.format('[[%s|%s]]', pageName, gachaName) |
||
end |
end |
||
Revision as of 23:48, 2 January 2022
This module depends on the following other modules: |
To generate {{Gacha datatable}}, invoke using the main function.
local getArgs = require('Module:Arguments').getArgs
local DatatableBuilder = require('Module:DatatableBuilder')
local QueryBuilder = require('Module:QueryBuilder')
local p = {}
local function formatLogo(logo)
if logo then
return string.format('[[File:%s|192px]]', logo)
end
return nil
end
local function formatName(pageName, gachaName)
return string.format('[[%s|%s]]', pageName, gachaName)
end
local function formatDuration(start_dt, end_dt)
if start_dt and end_dt then
return string.format(
'Start: %s <br> End: %s',
start_dt,
end_dt
)
end
end
function p.main(frame)
local args = getArgs(frame)
local qb = QueryBuilder.new()
qb
:setTables('Gachas')
:setFields([[
_pageName,
gacha_name,
image,
DATE_FORMAT(DATE_ADD(start, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = start,
DATE_FORMAT(DATE_ADD(end, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = end,
]])
:addWhere('gacha_id', '>', 0)
:setOrderBy('gacha_id ASC')
:setGroupBy('_pageName')
:setLimit(200)
local datatable = DatatableBuilder.new()
datatable
:setColumns{
{ name = 'logo', header = 'Logo', data_fields = { 'image' }, func = formatLogo },
{ name = 'name', header = 'Gacha', data_fields = { '_pageName', 'gacha_name' }, func = formatName },
{ name = 'duration', header = 'Gacha period', data_fields = { 'start', 'end' }, func = formatDuration, css = { ['white-space'] = 'nowrap' } },
}
:setHeaders{
'logo',
'name',
'duration',
}
:setData(qb:query())
return datatable:tostring()
end
return p