Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Gacha datatable

From Sekaipedia
Revision as of 07:02, 7 January 2022 by ChaoticShadow (talk | contribs)


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,
			logo,
			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('Gachas.start ASC')
		:setGroupBy('_pageName')
		:setLimit(200)
	qb
   		:addWhere('start', '<', args['start before'])
		:addWhere('start', '>', args['start after'])
		:addWhere('end', '<', args['end before'])
		:addWhere('end', '>', args['end after'])
        
	local datatable = DatatableBuilder.new()
	datatable
		:setColumns{
			{ name = 'logo', header = 'Logo', data_fields = { 'logo' }, func = formatLogo, css = { ['width'] = '192px' }  },
			{ 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' }, css = { ['width'] = '200px' } },
		}
		:setHeaders{
			'logo',
			'name',
			'duration',
		}
		:setData(qb:query())
	
	return datatable:tostring()

end

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