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

Module:Card grid: Difference between revisions

From Sekaipedia
Content added Content deleted
(Created page with "local getArgs = require('Module:Arguments').getArgs local QueryBuilder = require('Module:QueryBuilder') local p = {} function p.main(frame) local qb = QueryBuilder.new() qb:setTables('Cards') :setFields([[ _pageName, card_name, thumbnail, thumbnail_trained, card_character ]]) :addWhere('Cards.card_id', '>', '0') :setGroupBy('Cards.card_id') qb :setOrderBy(args['order by'] or 'Cards.card_id ASC') :setLimit(args['limit'] or 300) qb...")
 
m (fixed cargo query)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local QueryBuilder = require('Module:QueryBuilder')
local QueryBuilder = require('Module:QueryBuilder')


Line 5: Line 6:


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

local qb = QueryBuilder.new()
local qb = QueryBuilder.new()
qb:setTables('Cards')
qb:setTables('cards')
:setFields([[
:setFields([[
_pageName,
_pageName,
Line 14: Line 17:
card_character
card_character
]])
]])
:addWhere('Cards.card_id', '>', '0')
:addWhere('cards.card_id', '>', '0')
:setGroupBy('Cards.card_id')
:setGroupBy('cards.card_id')
qb
qb
:setOrderBy(args['order by'] or 'Cards.card_id ASC')
:setOrderBy(args['order by'] or 'cards.card_id ASC')
:setLimit(args['limit'] or 300)
:setLimit(args['limit'] or 300)
qb
qb
:addWhereList(
:addWhereList(
'Cards.card_id',
'cards.card_id',
'=',
'=',
args['ids'],
args['ids'],
Line 33: Line 36:


local results = qb:query()
local results = qb:query()
local show_name = yesno(args['show name'], false)


if #results > 0 then
if #results > 0 then
for k,v in ipairs(results) do
for _,v in ipairs(results) do
local file = '[[File:' .. v.thumbnail .. '|center|130px]]'
local file = '[[File:' .. v.thumbnail .. '|center|130px]]'

Latest revision as of 04:11, 31 August 2023

Documentation for this module may be created at Module:Card grid/doc

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

local p = {}

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

	local qb = QueryBuilder.new()
	qb:setTables('cards')
		:setFields([[
			_pageName,
			card_name,
			thumbnail,
			thumbnail_trained,
			card_character
		]])
		:addWhere('cards.card_id', '>', '0')
		:setGroupBy('cards.card_id')
	qb
		:setOrderBy(args['order by'] or 'cards.card_id ASC')
		:setLimit(args['limit'] or 300)
	
	qb
		:addWhereList(
			'cards.card_id',
			'=',
			args['ids'],
			',',
			'OR'
		)

	local root = mw.html.create('div')
		:addClass('card-grid')

	local results = qb:query()
	local show_name = yesno(args['show name'], false)

	if #results > 0 then
		for _,v in ipairs(results) do
			local file = '[[File:' .. v.thumbnail .. '|center|130px]]'
			
			if v.rarity and 
				v.rarity ~= '' and 
				(tonumber(v.rarity) == 3 or tonumber(v.rarity) == 4) then
				file = file .. '[[File:' .. v.thumbnail_trained .. '|center|130px]]'
			end
			
			local box = root:tag('div')
				:addClass('card-grid-item')
				
			box:tag('div')
				:css({
					['display'] = 'flex',
				})
				:wikitext(file)
				:done()
			box:tag('div')
				:wikitext(string.format('<b>[[%s|%s]]</b>', v._pageName, v.card_name))
				:done()
			
			if show_name then
				box:tag('div')
					:wikitext(string.format('[[%s]]', v.card_character))
					:done()
			end
		end
	end
	
  	return frame:extensionTag{
		name = 'templatestyles', args = { src = 'Template:Card grid/styles.css' }
	} .. tostring(root)

end

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