Module:SkillResources: Difference between revisions

From August Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 9: Line 9:
}
}


-- Main function to generate the item source table
-- Main function to generate the item source table(s)
function p.main(frame)
function p.main(frame)
     local args = frame.args
     local args = frame.args
 
    local html = ""
     -- Start building the table HTML
    local tableCount = tonumber(args['tableCount'] or '1')
    local html = [[
   
    -- Process each table
     for t = 1, tableCount do
        -- Start building the table HTML
        html = html .. [[
<table class="wikitable sortable filterable item-drops align-center-2 align-center-3 align-left-4 autosort=3,a jquery-tablesorter rsw-dropsline-hidealch">
<table class="wikitable sortable filterable item-drops align-center-2 align-center-3 align-left-4 autosort=3,a jquery-tablesorter rsw-dropsline-hidealch">
   <tr>
   <tr>
     <th class="drop-disp-btn btn-first headerSort" tabindex="0" role="columnheader button" title="Sort ascending" colspan="5">Item</th>
     <th class="drop-disp-btn btn-first headerSort" tabindex="0" role="columnheader button" title="Sort ascending" colspan="5">Item</th>
     <th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Level</th>
     <th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Level</th>
     <th class="drops-rarity-header headerSort headerSortUp" tabindex="0" role="columnheader button" title="Sort ascending">Materials</th>
     <th class="drops-rarity-header headerSort headerSortUp" tabindex="0" role="columnheader button" title="Sort ascending">Materials</th>
   </tr>
   </tr>
]]
]]
    -- Generate rows dynamically
         -- Table title if provided
    local index = 1
         local tableTitle = args['tableTitle' .. t]
    while args['item' .. index] do
         if tableTitle and tableTitle ~= '' then
         -- Get parameters for this item
            html = html .. ' <tr><th colspan="7">' .. tableTitle .. '</th></tr>\n'
         local item = args['item' .. index] or ''
         local image = args['image' .. index] or ''
        local level = args['level' .. index] or ''
        local skill = args['skill' .. index] or ''
        local chance = args['chance' .. index] or ''
        local skillClass = ''
 
        -- Check for "N/A" level
        if skill:upper() == 'N/A' then
            skillClass = 'table-na'
         end
         end
          
          
         -- Build the row HTML
         -- Generate rows dynamically for this table
         html = html .. '  <tr>\n'
         local index = 1
          
         while args['item' .. t .. '_' .. index] do
        -- Item cell with image and name combined
            -- Get parameters for this item
        if image and image ~= '' then
            local item = args['item' .. t .. '_' .. index] or ''
          html = html .. '<td colspan="1">'
            local image = args['image' .. t .. '_' .. index] or ''
          html = html .. ' [[File:' .. image .. '|center|32px]]'
            local level = args['level' .. t .. '_' .. index] or ''
          html = html .. '</td>\n'
             local skill = args['skill' .. t .. '_' .. index] or ''
end
            local skillClass = ''
      html = html .. '   <td colspan="4">'
      html = html .. '[[' .. item .. ']]'
      html = html .. '</td>\n'
       
        -- Level cell with skill information
        html = html .. '   <td class="plainlist ' .. skillClass ..'" style="text-align:center">\n'
        html = html .. '       <ul class="skills-list">\n'
        if skill == 'N/A' then
             html = html .. '            <li>N/A</li>\n'
        elseif skill ~= '' then
            html = html .. '            <li>[[File:' .. skill .. '_icon.png|20px]] ' .. level .. '</li>\n'
        end
        html = html .. '       </ul>\n'
        html = html .. '   </td>\n'


 
            -- Check for "N/A" level
       
            if skill:upper() == 'N/A' then
        -- Materials cell
                skillClass = 'table-na'
        html = html .. '    <td data-sort-value="1" class="plainlist">\n'
            end
        html = html .. '        <ul class="products-materials">\n'
           
       
            -- Build the row HTML
        -- Add materials list (up to 7 materials)
            html = html .. '  <tr>\n'
        for i = 1, 7 do
           
            local material = args['material' .. i .. '_' .. index] or ''
            -- Item cell with image and name combined
             local quantity = args['quantity' .. i .. '_' .. index] or ''
            if image and image ~= '' then
              html = html .. '<td colspan="1">'
              html = html .. ' [[File:' .. image .. '|center|32px]]'
              html = html .. '</td>\n'
            end
            html = html .. '    <td colspan="4">'
            html = html .. '[[' .. item .. ']]'
            html = html .. '</td>\n'
               
            -- Level cell with skill information
            html = html .. '    <td class="plainlist ' .. skillClass ..'" style="text-align:center">\n'
            html = html .. '        <ul class="skills-list">\n'
            if skill == 'N/A' then
                html = html .. '            <li>N/A</li>\n'
            elseif skill ~= '' then
                html = html .. '            <li>[[File:' .. skill .. '_icon.png|20px]] ' .. level .. '</li>\n'
             end
            html = html .. '       </ul>\n'
            html = html .. '    </td>\n'
           
            -- Materials cell
            html = html .. '   <td data-sort-value="1" class="plainlist">\n'
            html = html .. '       <ul class="products-materials">\n'
              
              
             if material ~= '' and quantity ~= '' then
             -- Add materials list (up to 7 materials)
                -- Removed the cssClass assignment and condition
            for i = 1, 7 do
                html = html .. '            <li>' .. quantity .. ' × ' .. material .. '</li>\n'
                local material = args['material' .. i .. '_' .. t .. '_' .. index] or ''
                local quantity = args['quantity' .. i .. '_' .. t .. '_' .. index] or ''
               
                if material ~= '' and quantity ~= '' then
                    html = html .. '            <li>' .. quantity .. ' × ' .. material .. '</li>\n'
                end
             end
             end
           
            html = html .. '        </ul>\n'
            html = html .. '    </td>\n'
            html = html .. '  </tr>\n'
           
            -- Move to next index
            index = index + 1
         end
         end
          
          
         html = html .. '       </ul>\n'
        -- Close the table
         html = html .. '    </td>\n'
         html = html .. '</table>\n'
        html = html .. ' </tr>\n'
         -- Add some spacing between tables if more than one
          
        if t < tableCount then
        -- Move to next index
            html = html .. '<br/>\n'
        index = index + 1
         end
     end
     end
      
      
    -- Close the table
    html = html .. '</table>'
     return html
     return html
end
end

Revision as of 00:24, 10 March 2025

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

-- Module:SkillResources
local p = {}
local rarityStyles = {
    Always = { 'table-bg-blue', 1 },
    Common = { 'table-bg-green', 16 },
    Uncommon = { 'table-bg-yellow', 64 },
    Rare = { 'table-bg-orange', 256 },
    ['Very rare'] = { 'table-bg-red', 1024 },
}

-- Main function to generate the item source table(s)
function p.main(frame)
    local args = frame.args
    local html = ""
    local tableCount = tonumber(args['tableCount'] or '1')
    
    -- Process each table
    for t = 1, tableCount do
        -- Start building the table HTML
        html = html .. [[
<table class="wikitable sortable filterable item-drops align-center-2 align-center-3 align-left-4 autosort=3,a jquery-tablesorter rsw-dropsline-hidealch">
  <tr>
    <th class="drop-disp-btn btn-first headerSort" tabindex="0" role="columnheader button" title="Sort ascending" colspan="5">Item</th>
    <th class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Level</th>
    <th class="drops-rarity-header headerSort headerSortUp" tabindex="0" role="columnheader button" title="Sort ascending">Materials</th>
  </tr>
]]
        -- Table title if provided
        local tableTitle = args['tableTitle' .. t]
        if tableTitle and tableTitle ~= '' then
            html = html .. '  <tr><th colspan="7">' .. tableTitle .. '</th></tr>\n'
        end
        
        -- Generate rows dynamically for this table
        local index = 1
        while args['item' .. t .. '_' .. index] do
            -- Get parameters for this item
            local item = args['item' .. t .. '_' .. index] or ''
            local image = args['image' .. t .. '_' .. index] or ''
            local level = args['level' .. t .. '_' .. index] or ''
            local skill = args['skill' .. t .. '_' .. index] or ''
            local skillClass = ''

            -- Check for "N/A" level
            if skill:upper() == 'N/A' then
                skillClass = 'table-na'
            end
            
            -- Build the row HTML
            html = html .. '  <tr>\n'
            
            -- Item cell with image and name combined
            if image and image ~= '' then
              html = html .. '<td colspan="1">'
              html = html .. ' [[File:' .. image .. '|center|32px]]'
              html = html .. '</td>\n'
            end
            html = html .. '    <td colspan="4">'
            html = html .. '[[' .. item .. ']]'
            html = html .. '</td>\n'
                
            -- Level cell with skill information
            html = html .. '    <td class="plainlist ' .. skillClass ..'" style="text-align:center">\n'
            html = html .. '        <ul class="skills-list">\n'
            if skill == 'N/A' then
                html = html .. '            <li>N/A</li>\n'
            elseif skill ~= '' then
                html = html .. '            <li>[[File:' .. skill .. '_icon.png|20px]] ' .. level .. '</li>\n'
            end
            html = html .. '        </ul>\n'
            html = html .. '    </td>\n'
            
            -- Materials cell
            html = html .. '    <td data-sort-value="1" class="plainlist">\n'
            html = html .. '        <ul class="products-materials">\n'
            
            -- Add materials list (up to 7 materials)
            for i = 1, 7 do
                local material = args['material' .. i .. '_' .. t .. '_' .. index] or ''
                local quantity = args['quantity' .. i .. '_' .. t .. '_' .. index] or ''
                
                if material ~= '' and quantity ~= '' then
                    html = html .. '            <li>' .. quantity .. ' × ' .. material .. '</li>\n'
                end
            end
            
            html = html .. '        </ul>\n'
            html = html .. '    </td>\n'
            html = html .. '  </tr>\n'
            
            -- Move to next index
            index = index + 1
        end
        
        -- Close the table
        html = html .. '</table>\n'
        -- Add some spacing between tables if more than one
        if t < tableCount then
            html = html .. '<br/>\n'
        end
    end
    
    return html
end

-- Function to render HTML from template-style parameters
function p.render(frame)
    -- Get all arguments from parent template
    local parentArgs = frame:getParent().args
    return p.main({args = parentArgs})
end

return p