Editing Module:Item Navbox

Warning: You are not logged in. Once you make an edit, a temporary account will be created for you. Learn more. Log in or create an account to continue receiving notifications after this account expires, and to access other features.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
local p = {}
local p = {}
local items_data = mw.loadJsonData("Data:ItemData.json")
local items_data = mw.loadJsonData("Data:ItemData.json")
local items_module = require("Module:ItemData")
local lang_module = require('Module:Lang')
local lang_module = require('Module:Lang')


Line 60: Line 59:
                 if lang_code == "en" then
                 if lang_code == "en" then
                     item_template = "{{ItemIcon|" .. item_name_english .. "|size=26px}}"
                     item_template = "{{ItemIcon|" .. item_name_english .. "|size=26px}}"
                else
                    item_template = "{{ItemIcon|" .. item_name_english .. "|lang=" .. lang_code .. "|l1=" .. item_name_local .. "|size=26px}}"
                end
               
                local search_data = item_name_english
                if lang_code ~= "en" and item_name_local then
                    search_data = search_data .. " " .. item_name_local
                end
               
                item_template = '<span class="item-nav-search-wrapper"><span class="item-nav-search-item" data-item-name="' .. search_data .. '">' .. item_template .. '</span>'
                table.insert(items, item_template)
            end
        end
    end
   
    table.sort(items)
   
    -- Append closing tags and bullets
    local total_items = #items
    for i = 1, total_items do
        if i == total_items then
            items[i] = items[i] .. '</span>'
        else
            items[i] = items[i] .. '<span class="item-nav-search-sep"> &bull; </span></span>'
        end
    end
   
    return table.concat(items, '')
end
   
-- Gets list of item codenames
local function get_item_codenames(slot, min_souls, max_souls, filter_mode, frame)
    if slot ~= 'Weapon' and slot ~= 'Armor' and slot ~= 'Tech' then return '' end
   
    local lang_code = lang_module.get_lang_code()
    local items = {}
    local slot_items = get_items_by_slot(slot)
   
    for _, item_entry in ipairs(slot_items) do
        local item_key = item_entry.key
        local item_data = item_entry.data
       
        local this_cost = tonumber(item_data["Cost"])
        local is_street_brawl = item_data["StreetBrawl"] == true
        local should_include = true
       
        if filter_mode == "street_brawl_only" and not is_street_brawl then
            should_include = false
        elseif filter_mode == "exclude_street_brawl" and is_street_brawl then
            should_include = false
        end
       
        if should_include and item_data["Name"] ~= nil and item_data["IsDisabled"] == false and this_cost ~= nil then
            if this_cost >= min_souls and this_cost < max_souls then
                local item_name_english = lang_module.get_string(item_key, "en")
                local item_name_local = lang_module.get_string(item_key, lang_code)
               
                local codename_frame = {
                    args = { item_name_english }
                }
                local item_codename = items_module.get_codename(codename_frame)
               
                local item_template
                if lang_code == "en" then
                    item_template = "{{ItemIcon|" .. item_name_english .. "|l1=" .. item_codename .. "|size=26px}}"
                 else
                 else
                     item_template = "{{ItemIcon|" .. item_name_english .. "|lang=" .. lang_code .. "|l1=" .. item_name_local .. "|size=26px}}"
                     item_template = "{{ItemIcon|" .. item_name_english .. "|lang=" .. lang_code .. "|l1=" .. item_name_local .. "|size=26px}}"
Line 161: Line 94:


     local html = {}
     local html = {}
table.insert(html, '<div class="itemnav-header"> [[Items]] <div class="item-nav-search-container"></div></div>\n')
    table.insert(html, '<div class="itemnav-header"> [[Items]] \n <div class="item-nav-search-container"></div> </div>\n')
     table.insert(html, '<div class="itemnav-container"><templatestyles src="Item Navbox/styles.css"/>\n')
     table.insert(html, '<div class="itemnav-container"><templatestyles src="User:Kai/mp/itemnavbox/styles.css"/>\n')


     -- Maps Headers to Slots and distinct CSS Classes
     -- Maps Headers to Slots and distinct CSS Classes
Line 188: Line 121:
             local items_wikitext = get_item_icons(cat.slot, tier.min, tier.max, nil)
             local items_wikitext = get_item_icons(cat.slot, tier.min, tier.max, nil)


             table.insert(html, '\n<div class="itemnav-tier-row">\n')
             table.insert(html, '\n<div class="imsodonenamingclasses">\n')
            table.insert(html, '<div class="' .. css_class .. '">' .. tier.label .. '</div><!--\n')
            table.insert(html, '--><div class="itemnav-cost-type-container">' .. items_wikitext .. '</div>\n')
            table.insert(html, '</div>\n')
        end
 
        table.insert(html, '\n</div>\n')
    end
 
    table.insert(html, '\n</div>')
 
    -- Only ONE preprocess call for the entire structure
    return process_debug_mode(table.concat(html), debug_mode)
end
 
-- Generates navbox with codenames
function p.generate_full_navbox_codenames(frame)
    local debug_mode = type(frame) == "table" and frame.args and frame.args["debug_mode"] or nil
 
    local html = {}
table.insert(html, '<div class="itemnav-header"> [[Items]] <div class="item-nav-search-container"></div></div>\n')
    table.insert(html, '<div class="itemnav-container"><templatestyles src="Item Navbox/styles.css"/>\n')
 
    -- Maps Headers to Slots and distinct CSS Classes
    local categories = {
        { header = "Weapon",  slot = "Weapon", css = "itemnav-weapon" },
        { header = "Vitality", slot = "Armor",  css = "itemnav-vitality" },
        { header = "Spirit",  slot = "Tech",  css = "itemnav-tech" }
    }
 
    -- Maps tier boundaries and formatting
    local tiers = {
        { label = "{{Souls|800}}", min = 0, max = 801 },
        { label = "{{Souls|1600}}", min = 801, max = 1601 },
        { label = "{{Souls|3200}}", min = 1601, max = 3201 },
        { label = "{{Souls|6400}}", min = 3201, max = 6401 },
        { label = "[[Street Brawl|{{Legendary|{{#invoke:Lang|get_string|Citadel_ItemDraft_Legendary}}}}]]", min = 6401, max = 99999, extra_css = "itemnav-legendary " }
    }
 
    for _, cat in ipairs(categories) do
        table.insert(html, '\n<div class="itemnav-type-header">\'\'\'' .. cat.header .. '\'\'\'</div>\n')
        table.insert(html, '<div class="itemnav-type-container">\n')
 
        for _, tier in ipairs(tiers) do
            local css_class = "itemnav-soul " .. (tier.extra_css or "") .. cat.css
            local items_wikitext = get_item_codenames(cat.slot, tier.min, tier.max, nil)
 
            table.insert(html, '\n<div class="itemnav-tier-row">\n')
             table.insert(html, '<div class="' .. css_class .. '">' .. tier.label .. '</div><!--\n')
             table.insert(html, '<div class="' .. css_class .. '">' .. tier.label .. '</div><!--\n')
             table.insert(html, '--><div class="itemnav-cost-type-container">' .. items_wikitext .. '</div>\n')
             table.insert(html, '--><div class="itemnav-cost-type-container">' .. items_wikitext .. '</div>\n')
Please note that all contributions to The Deadlock Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see Deadlock:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)
Preview page with this template

Page included on this page: