Module:HousingTable: Difference between revisions
From Eco - English Wiki
[checked revision] | [checked revision] |
No edit summary |
No edit summary |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
local Utils = require('Module:Utils') | local Utils = require('Module:Utils') | ||
local ItemUtils = require('Module:UtilsItemTables') | |||
local L = require('Module:Localization') | 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) | function p.table(frame) | ||
Line 9: | Line 26: | ||
local ItemData = mw.loadData("Module:ItemData") | local ItemData = mw.loadData("Module:ItemData") | ||
local returnStr = | 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 = {} | local items = {} | ||
Line 30: | Line 39: | ||
for _, item in pairs(items) do | 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 .. '</td><td>' .. item.dimensions .. '</td></tr>' | 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 | end | ||
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(TIER_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 46: | 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 |
Latest revision as of 22:27, 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(TIER_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