No edit summary |
BryghtShadow (talk | contribs) ([ST] lazy-load module) |
||
(15 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | local |
+ | local render_icon = require('Module:Render').icon |
+ | local cargo -- lazy |
||
⚫ | |||
+ | 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 |
||
⚫ | |||
⚫ | |||
+ | wrappers = { |
||
⚫ | |||
+ | 'Template:Item/Icon', |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | return p._icon(args) |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | 64, |
||
⚫ | |||
⚫ | |||
− | nil, |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | |||
⚫ | |||
end |
end |
||
+ | |||
+ | function p._icon(args) |
||
⚫ | |||
+ | 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 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | } |
||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | renderArgs[10] = true |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | |||
⚫ | |||
+ | 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