ATTENTION! The process of updating WiKi to version Eco 10.x has begun. Those wishing to participate can find out more Information on our ECO Contribution Wiki Discord.
From April 26 to May 12, errors may occur in the Wiki, as we will be carrying out a major update to the information processing modules.

Module:HousingTable: Difference between revisions

From Eco - English Wiki
[checked revision][unchecked revision]
m (Improve item dimensions formatting.)
No edit summary
Line 11: Line 11:
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
</tr>]]
local TIER_HEADER = [[<table class="wikitable sortable jquery-tablesorter">
<tr>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
Line 38: Line 44:
     return returnStr .. '</table>'
     return returnStr .. '</table>'


end
function p.blockTiers(frame)
    local args = Utils.normaliseArgs(frame)
    local ItemData = mw.loadData("Module:ItemData")
    local returnStr = string.format(HEADER, L.t('Block'), L.t('Tier'))
    local items = {}
    for itemName, item in pairs(ItemData.items) do
        if item.group == 'Blocks' and item.materialTier ~= nil then
            table.insert(items, { item = itemName, tier = item.materialTier })
        end
    end
    table.sort(items, compareTiers)
    for _, item in pairs(items) do
        returnStr = returnStr .. '<tr><td>[[' .. item.item .. ']]</td><td>' .. item.tier .. '</td></tr>'
    end
    return returnStr .. '</table>'
end
end


Line 49: Line 79:
     else
     else
         return a.room < b.room
         return a.room < b.room
    end
end
function compareTiers(a, b)
    if a.tier == b.tier then
        return a.item < b.item
    else
        return a.tier < b.tier
     end
     end
end
end


return p
return p

Revision as of 22:23, 30 December 2023

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

local p = {}

local Utils = require('Module:Utils')
local ItemUtils = require('Module:UtilsItemTables')
local L = require('Module:Localization')

local HEADER = [[<table class="wikitable sortable jquery-tablesorter">
<tr>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
</tr>]]

local TIER_HEADER = [[<table class="wikitable sortable jquery-tablesorter">
<tr>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
<th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">%s</th>
</tr>]]

function p.table(frame)
    local args = Utils.normaliseArgs(frame)

    local ItemData = mw.loadData("Module:ItemData")

    local returnStr = string.format(HEADER, L.t('Item'), L.t('Room'), L.t('Type'), L.t('Value'), L.t('Dim. Return %'), L.t('Dimensions (X,Y,Z)'))

    local items = {}

    for itemName, item in pairs(ItemData.items) do
        if item.roomCategory and item.furnitureType and (args.category == nil or args.category == item.roomCategory) and (args.type == nil or args.type == item.furnitureType) then
            table.insert(items, { item = itemName, room = item.roomCategory, type = item.furnitureType, value = item.skillValue, depreciation = item.repeatsDepreciation, dimensions = item.footprint })
        end
    end

    table.sort(items, compareItems)

    for _, item in pairs(items) do
        returnStr = returnStr .. '<tr><td>[[' .. item.item .. ']]</td><td>' .. item.room .. '</td><td>' .. item.type .. '</td><td>' .. item.value .. '</td><td>' .. item.depreciation * 100 .. '%</td><td>' .. ItemUtils.formatFootprintDimensions(item.dimensions) .. '</td></tr>'
    end

    return returnStr .. '</table>'

end

function p.blockTiers(frame)
    local args = Utils.normaliseArgs(frame)

    local ItemData = mw.loadData("Module:ItemData")

    local returnStr = string.format(HEADER, L.t('Block'), L.t('Tier'))

    local items = {}

    for itemName, item in pairs(ItemData.items) do
        if item.group == 'Blocks' and item.materialTier ~= nil then
            table.insert(items, { item = itemName, tier = item.materialTier })
        end
    end

    table.sort(items, compareTiers)

    for _, item in pairs(items) do
        returnStr = returnStr .. '<tr><td>[[' .. item.item .. ']]</td><td>' .. item.tier .. '</td></tr>'
    end

    return returnStr .. '</table>'
end

function compareItems(a, b)
    if a.room == b.room then
        if a.type == b.type then
            return a.item < b.item
        else
            return a.type < b.type
        end
    else
        return a.room < b.room
    end
end

function compareTiers(a, b)
    if a.tier == b.tier then
        return a.item < b.item
    else
        return a.tier < b.tier
    end
end

return p