Module:ItemData/nav: Difference between revisionsGive feedback
m extracted logic to write_wrapped_item_list; get_item_nav_bulletpoints and get_item_nav_cards now more streamlined |
m testing ordering by soul count first again |
||
| Line 29: | Line 29: | ||
--Retrieve all items that fit the bounds | --Retrieve all items that fit the bounds | ||
local items = {} | local items = {} | ||
--1st layer: souls | |||
--2nd layer: list of items with that soul count | |||
for item_key, item_data in pairs(items_data) do | for item_key, item_data in pairs(items_data) do | ||
if item_data['Disabled'] == nil and item_data['IsDisabled'] ~= nil then | if item_data['Disabled'] == nil and item_data['IsDisabled'] ~= nil then | ||
return "REMINDER: 'Disabled' was renamed to 'IsDisabled'" | return "REMINDER: 'Disabled' was renamed to 'IsDisabled'" | ||
| Line 37: | Line 38: | ||
local this_cost = tonumber(item_data["Cost"]) | local this_cost = tonumber(item_data["Cost"]) | ||
local this_slot = item_data["Slot"] | local this_slot = item_data["Slot"] | ||
if item_data["Name"] ~= nil and item_data["Disabled"] == false and this_cost ~= nil and this_slot ~= nil then | if item_data["Name"] ~= nil and item_data["Disabled"] == false and this_cost ~= nil and this_slot ~= nil then | ||
if slot == this_slot and this_cost>=min_souls and this_cost<max_souls then | if slot == this_slot and this_cost>=min_souls and this_cost<max_souls then | ||
table.insert(items, lang_module.get_string(item_key)) | if items[this_cost] == nil then | ||
items[this_cost] = {} --list, ensure it exists before inserting to it | |||
end | |||
table.insert(items[this_cost], lang_module.get_string(item_key)) | |||
end | end | ||
end | end | ||
end | end | ||
--Order list alphabetically | --Order each list of items for that cost by item name alphabetically | ||
table.sort(items) -- | for cost, items_within_souls in pairs(items) do | ||
table.sort(items[cost]) | |||
end | |||
--Order the lists by souls | |||
table.sort(items) | |||
--2 level hash is now ordered first by cost, second by name alphabetically | |||
--Add each item to output | --Add each item to output | ||
local ret = '' | local ret = '' | ||
for index, item_name in ipairs( | for cost, items_within_souls in pairs(items) do | ||
for index, item_name in ipairs(items_within_souls) do | |||
ret = ret .. left_wrap .. item_name .. right_wrap .. sep | |||
end | |||
end | end | ||