Module:ItemsTable

From Melvor Idle
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

-- this module generates [[Template:ItemsTable]] 125 lines at a time.
-- run p.getItemsTableAlt() in debug and copy the result to [[Template:ItemsTable]] after an update that adds new items.
--[=[
	p.getItemsTableAlt(nil, 60)
--]=]

local p = {}

local Shared = require('Module:Shared')
local GameData = require('Module:GameData')
local Items = require('Module:Items')
local Icons = require('Module:Icons')
local SourceTables = require('Module:Items/SourceTables')
local UseTables = require('Module:Items/UseTables')

local itemCount = Shared.tableCount(GameData.rawData.items) - 1

function p.getItemsTable(frame)
  local itemList = {}
  for i, item in ipairs(GameData.rawData.items) do
    table.insert(itemList, '\r\n|-\r\n|')
    table.insert(itemList, UseTables.getItemUses(item.name))
  end
  return table.concat(itemList)
end

--Alternate version that has everything still
function p.getItemsTableAlt(fromItemID, rows)
  local itemList = {}
  local rowCount = 0
  local genRows = fromItemID == nil
  local lastItemID = nil
  for i, item in ipairs(GameData.rawData.items) do
    if not genRows then
      genRows = fromItemID == nil or item.id == fromItemID
    elseif genRows then
      rowCount = rowCount + 1
      if rowCount > rows then
        break
      end
      lastItemID = item.id
      local iCat = item.category ~= nil and item.category or ''
      local itemRow = {'\n|-'}
      table.insert(itemRow, '\n|'..Icons.Icon({item.name, type='item', notext=true, size=50}))
      table.insert(itemRow, '||'..Icons.Icon({item.name, type='item', noicon=true})..'||'..item.id..'||'..iCat..'||'..item.type)
      table.insert(itemRow, '|| '..Items._getItemStat(item, 'completionReq'))
      table.insert(itemRow, '||data-sort-value="'..math.floor(item.sellsFor)..'"|'..Icons.GP(math.floor(item.sellsFor)))
      table.insert(itemRow, '||style="text-align:right;"|'..SourceTables._getItemSources(item))
      table.insert(itemRow, '||style="text-align:right;"|'..UseTables._getItemUses(item, false))
      table.insert(itemList, table.concat(itemRow))
    end
  end
  mw.log(table.concat(itemList, ''))
  mw.log('\n------------------\nLast item ID: ' .. (lastItemID or 'nil'))
end

return p