Module:Inventory: Difference between revisions

From Roat Pkz
Jump to navigation Jump to search
No edit summary
Tags: Manual revert Reverted
No edit summary
Tag: Reverted
Line 70: Line 70:
             if hasc(itemx) then
             if hasc(itemx) then
                 if clickable_x then
                 if clickable_x then
                     td:wikitext(string.format('[[File:%s.png|%s|link=%s|32x32px|frameless]]', itemx, itemx))
                     td:wikitext(string.format("[[File:%s.%s|%s|link=]]", itemx, itemx))
                 else
                 else
                     td:wikitext(string.format('[[File:%s.png|link=|32x32px|frameless]]', itemx, itemx, itemx))
                     td:wikitext(string.format('[[File:%s.png|link=|32x32px|frameless]]', itemx, itemx, itemx))

Revision as of 11:58, 6 May 2024

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

local p = {}

local hasc = require('Module:Paramtest').has_content

function formatAmount(_x)
    local x = tonumber(_x) or 1
    if x < 100000 then
        return x, 'qty-1'
    elseif x < 10000000 then
        return tostring(math.floor(x/1000))..'K', 'qty-100k'
    else
        return tostring(math.floor(x/1000000))..'M', 'qty-10m'
    end
end

function p.main(frame)
    local bgType = frame.args.bgType
    if bgType == nil then
        bgType = "inventory"
    end
    local args = frame:getParent().args
    local items = {}
    for i=1,28 do
        local v = mw.text.trim(args[i] or '')
        local item_x
        local amt_x = 1
        local note_x = false
        local clickable_x = false -- Added line
        if hasc(v) then
            v = v:gsub('[][]','')
            amt_x = tonumber(v:match('\\(%d+)')) or 1
            note_x = v:match(';n') == ';n'
            clickable_x = v:match(';c=yes') == ';c=yes' or v:match(';c=true') == ';c=true' -- Modified line
            local v2 = mw.text.split(v,'[;\\]')
            item_x = v2[1]
        end
        table.insert(items,{item=item_x,amt=amt_x,isnoted=note_x,clickable=clickable_x}) -- Modified line
    end
    local align = args.align
    local acss
    if hasc(align) then
        align = align:lower()
        if align == 'right' then
            align = "storage-right"
        elseif align == 'left' then
            align = "storage-left"
        else
            align = "storage-center"
        end
    end
    return p._main(items,align,bgType)
end

function p._main(items,align,bgType)
    local className = bgType .. "table"
    local ret = mw.html.create('table')
        :addClass(className)
        :addClass(align)
    local item = 0
    for i=1,7 do
        local ret_row = ret:tag('tr')
        for j=1,4 do
            item = item + 1
            local itemx = items[item].item
            local amtx = items[item].amt
            local amtx_f, amtx_c = formatAmount(amtx)
            local notex = items[item].isnoted
            local clickable_x = items[item].clickable
            local td = ret_row:tag('td')
            if hasc(itemx) then
                if clickable_x then
                    td:wikitext(string.format("[[File:%s.%s|%s|link=]]", itemx, itemx))
                else
                    td:wikitext(string.format('[[File:%s.png|link=|32x32px|frameless]]', itemx, itemx, itemx))
                end
                if notex then
                    td:addClass('noted-item')
                end
                if amtx > 1 or notex then
                    td:tag('span')
                      :addClass('inv-quantity-text')
                      :addClass(amtx_c)
                      :wikitext(amtx_f)
                end
            end
        end
    end

    return ret
end

return p