The Alchemist Code Wiki

READ MORE

The Alchemist Code Wiki
No edit summary
([ST] lazy-load module)
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local render = require('Module:Render')
+
local render_icon = require('Module:Render').icon
  +
local cargo -- lazy
local model = require('Module:Data').model
 
  +
local model -- lazy
  +
local wikiSafeName = require('Module:LinkUtils').wikiSafeName
   
 
local p = {}
 
local p = {}
   
 
function p.icon(frame)
 
function p.icon(frame)
  +
local args = require('Module:Arguments').getArgs(frame, {
if frame.getParent and frame:getParent():getTitle() == 'Template:Item/Icon' then frame = frame:getParent() end
 
 
parentFirst = true,
local iname = frame.args[1]
 
  +
wrappers = {
local data = model.query('Item','_pageName,server,rare,type,icon',{where='iname="'..iname..'"'})
 
  +
'Template:Item/Icon',
data = data[1] or {rini=0} -- TODO Get the correct server
 
 
}
local renderArgs = {
 
 
})
(data.icon == nil or data.icon == '') and 'ItemIcon,IT_UNKNOWN' or string.sub(data.icon,1,3) == 'AF_' and ('ArtiIcon,'..data.icon) or ('ItemIcon,'..data.icon),
 
  +
return p._icon(args)
model.getLoc(data._pageName, 'name'),
 
data._pageName ~= nil and (frame.args['link'] ~= 'none' and (mw.ext.cargo.query('Pages','_pageName',{where='type="Item" and iname="'..iname..'"'})[1] or {_pageName = model.getLoc(data._pageName, 'name')})._pageName) or nil,
 
data.rare,
 
(data.type == 1 or data.type == 11) and 1 or 0,
 
64,
 
frame.args['count'] ~= '' and frame.args['count'] or nil,
 
frame.args['classes'],
 
nil,
 
false,
 
}
 
 
local name = frame.args['name'] ~= 'none' and (renderArgs[3] and ('[['..renderArgs[3]..'|'..renderArgs[2]..']]') or renderArgs[2]) or nil
 
 
if frame.args['size'] == 'large' then
 
renderArgs[6] = 128
 
end
 
 
if frame.args['size'] == 'small' then
 
renderArgs[6] = 24
 
renderArgs[9] = name and '<span>'..name..'</span>'
 
renderArgs[10] = true
 
elseif frame.args['size'] == 'compact' then
 
renderArgs[9] = name and '<div class="item-count" style="font-size: 0.7em;overflow: hidden;right: 0">'..renderArgs[2]..'</div>'
 
else
 
renderArgs[9] = name and '<div style="width: '..renderArgs[6]..'px">'..name..'</div>'
 
end
 
 
return render.icon(unpack(renderArgs))
 
 
end
 
end
  +
  +
function p._icon(args)
 
local iname = args[1]
  +
if iname == nil then return nil end
  +
cargo = cargo or require('Module:CargoUtil')
  +
local page = cargo.query{
  +
tables = 'Pages',
  +
fields = 'iname',
  +
where = {
  +
'type = "Item"',
  +
'_pageName = "'..iname..'" OR iname = "'..iname..'"',
  +
},
  +
limit = 1,
  +
}[1]
  +
if page then iname = page.iname end
 
model = model or require('Module:Data').model
 
local data = args.data or model.query('Item', '_pageName,server,rare,type,icon', {where='iname="'..iname..'"'})[1] or {rini=0}
 
-- TODO Get the correct server
 
local renderArgs = {
 
(data.icon == nil or data.icon == '') and 'ItemIcon,IT_UNKNOWN' or string.sub(data.icon,1,3) == 'AF_' and ('ArtiIcon,'..data.icon) or ('ItemIcon,'..data.icon),
 
model.getLoc(data._pageName, 'name'),
 
data._pageName ~= nil and (args['link'] ~= 'none' and (cargo.query{tables='Pages',fields='_pageName',where='type="Item" and iname="'..iname..'"'}[1] or {_pageName = model.getLoc(data._pageName, 'name')})._pageName) or nil,
 
data.rare,
 
(data.type == 1 or data.type == 11) and 1 or data.type == 14 and 3 or 0,
 
64,
 
args['count'] ~= '' and args['count'] or nil,
 
args['classes'],
 
nil,
 
false,
  +
}
 
local name = args['name'] ~= 'none' and (renderArgs[3] and renderArgs[3] ~= '' and ('[['..wikiSafeName(renderArgs[3])..'|'..wikiSafeName(renderArgs[2])..']]') or renderArgs[2]) or nil
  +
 
if args['size'] == 'large' then
 
renderArgs[6] = 128
 
end
  +
 
if args['size'] == 'small' then
 
renderArgs[6] = 24
 
renderArgs[9] = name and '<span>'..name..'</span>'
  +
renderArgs[10] = true
 
elseif args['size'] == 'compact' then
 
renderArgs[9] = name and '<div class="item-count" style="font-size: 0.7em;overflow: hidden;right: 0">'..renderArgs[2]..'</div>'
 
else
 
renderArgs[9] = name and '<div style="width: '..renderArgs[6]..'px">'..name..'</div>'
 
end
  +
 
return render_icon(unpack(renderArgs))
  +
end
  +
  +
-- Non cargo version
  +
function p._icon2(args)
  +
local data = args.data or {}
  +
local iname = data.iname
  +
if not iname then return end
  +
  +
-- TODO Get the correct server
  +
local renderArgs = {
  +
(data.icon or '') == '' and 'ItemIcon,IT_UNKNOWN' or string.sub(data.icon,1,3) == 'AF_' and ('ArtiIcon,'..data.icon) or ('ItemIcon,'..data.icon),
  +
data.name,
  +
args.link ~= 'none' and (data._pageName or data.name) or nil,
  +
data.rare,
  +
(data.type == 1 or data.type == 11) and 1 or data.type == 14 and 3 or 0,
  +
64,
  +
tonumber(args.count),
  +
args.classes,
  +
nil,
  +
false,
  +
}
  +
local name = args.name ~= 'none' and (renderArgs[3] and renderArgs[3] ~= '' and ('[['..linkUtils.wikiSafeName(renderArgs[3])..'|'..linkUtils.wikiSafeName(renderArgs[2])..']]') or renderArgs[2]) or nil
  +
  +
if args.size == 'large' then
  +
renderArgs[6] = 128
  +
elseif args.size == 'small' then
  +
renderArgs[6] = 24
  +
renderArgs[9] = name and '<span>'..name..'</span>'
  +
renderArgs[10] = true
  +
elseif args.size == 'compact' then
  +
renderArgs[9] = name and '<div class="item-count" style="font-size: 0.7em;overflow: hidden;right: 0">'..renderArgs[2]..'</div>'
  +
else
  +
renderArgs[9] = name and '<div style="width: '..renderArgs[6]..'px">'..name..'</div>'
  +
end
  +
  +
return render_icon(unpack(renderArgs))
  +
end
   
 
return p
 
return p

Revision as of 11:50, 22 February 2021

Documentation for this module may be created at Module:Render/Item/doc

local render_icon = require('Module:Render').icon
local cargo -- lazy
local model -- lazy
local wikiSafeName = require('Module:LinkUtils').wikiSafeName

local p = {}

function p.icon(frame)
  local args = require('Module:Arguments').getArgs(frame, {
    parentFirst = true,
    wrappers = {
      'Template:Item/Icon',
    }
  })
  return p._icon(args)
end

function p._icon(args)
	local iname = args[1]
	if iname == nil then return nil end
	cargo = cargo or require('Module:CargoUtil')
	local page = cargo.query{
		tables = 'Pages',
		fields = 'iname',
		where = {
			'type = "Item"',
			'_pageName = "'..iname..'" OR iname = "'..iname..'"',
		},
		limit = 1,
	}[1]
	if page then iname = page.iname end
	model = model or require('Module:Data').model
	local data = args.data or model.query('Item', '_pageName,server,rare,type,icon', {where='iname="'..iname..'"'})[1] or {rini=0}
	-- TODO Get the correct server
	local renderArgs = {
		(data.icon == nil or data.icon == '') and 'ItemIcon,IT_UNKNOWN' or string.sub(data.icon,1,3) == 'AF_' and ('ArtiIcon,'..data.icon) or ('ItemIcon,'..data.icon),
		model.getLoc(data._pageName, 'name'),
		data._pageName ~= nil and (args['link'] ~= 'none' and (cargo.query{tables='Pages',fields='_pageName',where='type="Item" and iname="'..iname..'"'}[1] or {_pageName = model.getLoc(data._pageName, 'name')})._pageName) or nil,
		data.rare,
		(data.type == 1 or data.type == 11) and 1 or data.type == 14 and 3 or 0,
		64,
		args['count'] ~= '' and args['count'] or nil,
		args['classes'],
		nil,
		false,
	}
	local name = args['name'] ~= 'none' and (renderArgs[3] and renderArgs[3] ~= '' and ('[['..wikiSafeName(renderArgs[3])..'|'..wikiSafeName(renderArgs[2])..']]') or renderArgs[2]) or nil
	
	if args['size'] == 'large' then
		renderArgs[6] = 128
	end
	
	if args['size'] == 'small' then
		renderArgs[6] = 24
		renderArgs[9] = name and '<span>'..name..'</span>'
		renderArgs[10] = true
	elseif args['size'] == 'compact' then
		renderArgs[9] = name and '<div class="item-count" style="font-size: 0.7em;overflow: hidden;right: 0">'..renderArgs[2]..'</div>'
	else
		renderArgs[9] = name and '<div style="width: '..renderArgs[6]..'px">'..name..'</div>'
	end
	
	return render_icon(unpack(renderArgs))
end

-- Non cargo version
function p._icon2(args)
	local data = args.data or {}
	local iname = data.iname
	if not iname then return end

	-- TODO Get the correct server
	local renderArgs = {
		(data.icon or '') == '' and 'ItemIcon,IT_UNKNOWN' or string.sub(data.icon,1,3) == 'AF_' and ('ArtiIcon,'..data.icon) or ('ItemIcon,'..data.icon),
		data.name,
		args.link ~= 'none' and (data._pageName or data.name) or nil,
		data.rare,
		(data.type == 1 or data.type == 11) and 1 or data.type == 14 and 3 or 0,
		64,
		tonumber(args.count),
		args.classes,
		nil,
		false,
	}
	local name = args.name ~= 'none' and (renderArgs[3] and renderArgs[3] ~= '' and ('[['..linkUtils.wikiSafeName(renderArgs[3])..'|'..linkUtils.wikiSafeName(renderArgs[2])..']]') or renderArgs[2]) or nil
	
	if args.size == 'large' then
		renderArgs[6] = 128
	elseif args.size == 'small' then
		renderArgs[6] = 24
		renderArgs[9] = name and '<span>'..name..'</span>'
		renderArgs[10] = true
	elseif args.size == 'compact' then
		renderArgs[9] = name and '<div class="item-count" style="font-size: 0.7em;overflow: hidden;right: 0">'..renderArgs[2]..'</div>'
	else
		renderArgs[9] = name and '<div style="width: '..renderArgs[6]..'px">'..name..'</div>'
	end
	
	return render_icon(unpack(renderArgs))
end	

return p