Module:SkillResources: Difference between revisions

From August Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 6: Line 6:
     local args = frame.args
     local args = frame.args


    -- Check if any items have materials
    local hasMaterials = false
    local index = 1
    while args['item' .. index] do
        for i = 1, 7 do
            if (args['material' .. i .. '_' .. index] or '') ~= '' then
                hasMaterials = true
                break
            end
        end
        if hasMaterials then break end
        index = index + 1
    end
   
     -- Start building the table HTML
     -- Start building the table HTML
     local html = [[
     local html = [[
Line 12: Line 26:
     <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">Requirements</th>
]]
  </tr>
   
    -- Add Requirements header only if materials exist
     if hasMaterials then
        html = html .. [[    <th class="drops-rarity-header headerSort headerSortUp" tabindex="0" role="columnheader button" title="Sort ascending">Requirements</th>
]]
    end
   
    html = html .. [[  </tr>
]]
]]
     -- Table title if provided
     -- Table title if provided
     local tableTitle = args['tableTitle']
     local tableTitle = args['tableTitle']
     if tableTitle and tableTitle ~= '' then
     if tableTitle and tableTitle ~= '' then
         html = html .. '  <tr><th colspan="7">' .. tableTitle .. '</th></tr>\n'
        local colspan = hasMaterials and "7" or "6"
         html = html .. '  <tr><th colspan="' .. colspan .. '">' .. tableTitle .. '</th></tr>\n'
     end
     end
      
      
Line 70: Line 92:
         end
         end
          
          
         -- Materials cell
         -- Materials cell - only add if any materials exist in the table
        html = html .. '    <td data-sort-value="1" class="plainlist">\n'
       
        -- Only add materials list if materials exist
         if hasMaterials then
         if hasMaterials then
             html = html .. '       <ul class="products-materials">\n'
             html = html .. '   <td data-sort-value="1" class="plainlist">\n'
              
              
             -- Add materials list (up to 7 materials)
             -- Check if this specific item has materials
            local itemHasMaterials = false
             for i = 1, 7 do
             for i = 1, 7 do
                 local material = args['material' .. i .. '_' .. index] or ''
                 if (args['material' .. i .. '_' .. index] or '') ~= '' then
                 local quantity = args['quantity' .. i .. '_' .. index] or ''
                    itemHasMaterials = true
                    break
                 end
            end
           
            -- Only add materials list if this item has materials
            if itemHasMaterials then
                html = html .. '       <ul class="products-materials">\n'
                  
                  
                 if material ~= '' then
                 -- Add materials list (up to 7 materials)
                    local displayText = material
                for i = 1, 7 do
                    if quantity ~= '' then
                    local material = args['material' .. i .. '_' .. index] or ''
                        displayText = quantity .. ' × ' .. material
                    local quantity = args['quantity' .. i .. '_' .. index] or ''
                   
                    if material ~= '' then
                        local displayText = material
                        if quantity ~= '' then
                            displayText = quantity .. ' × ' .. material
                        end
                        html = html .. '            <li>' .. displayText .. '</li>\n'
                     end
                     end
                    html = html .. '            <li>' .. displayText .. '</li>\n'
                 end
                 end
               
                html = html .. '        </ul>\n'
             end
             end
              
              
             html = html .. '       </ul>\n'
             html = html .. '   </td>\n'
         end
         end
       
        html = html .. '    </td>\n'
         html = html .. '  </tr>\n'
         html = html .. '  </tr>\n'
          
          

Latest revision as of 01:36, 10 March 2025

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

-- Module:SkillResources
local p = {}

-- Main function to generate the item source table
function p.main(frame)
    local args = frame.args

    -- Check if any items have materials
    local hasMaterials = false
    local index = 1
    while args['item' .. index] do
        for i = 1, 7 do
            if (args['material' .. i .. '_' .. index] or '') ~= '' then
                hasMaterials = true
                break
            end
        end
        if hasMaterials then break end
        index = index + 1
    end
    
    -- Start building the table HTML
    local 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>
]]
    
    -- Add Requirements header only if materials exist
    if hasMaterials then
        html = html .. [[    <th class="drops-rarity-header headerSort headerSortUp" tabindex="0" role="columnheader button" title="Sort ascending">Requirements</th>
]]
    end
    
    html = html .. [[  </tr>
]]
    -- Table title if provided
    local tableTitle = args['tableTitle']
    if tableTitle and tableTitle ~= '' then
        local colspan = hasMaterials and "7" or "6"
        html = html .. '  <tr><th colspan="' .. colspan .. '">' .. tableTitle .. '</th></tr>\n'
    end
    
    -- Generate rows dynamically
    local index = 1
    while args['item' .. index] do
        -- Get parameters for this item
        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 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'
        
        -- Check if any materials exist for this item
        local hasMaterials = false
        for i = 1, 7 do
            local material = args['material' .. i .. '_' .. index] or ''
            if material ~= '' then
                hasMaterials = true
                break
            end
        end
        
        -- Materials cell - only add if any materials exist in the table
        if hasMaterials then
            html = html .. '    <td data-sort-value="1" class="plainlist">\n'
            
            -- Check if this specific item has materials
            local itemHasMaterials = false
            for i = 1, 7 do
                if (args['material' .. i .. '_' .. index] or '') ~= '' then
                    itemHasMaterials = true
                    break
                end
            end
            
            -- Only add materials list if this item has materials
            if itemHasMaterials then
                html = html .. '        <ul class="products-materials">\n'
                
                -- Add materials list (up to 7 materials)
                for i = 1, 7 do
                    local material = args['material' .. i .. '_' .. index] or ''
                    local quantity = args['quantity' .. i .. '_' .. index] or ''
                    
                    if material ~= '' then
                        local displayText = material
                        if quantity ~= '' then
                            displayText = quantity .. ' × ' .. material
                        end
                        html = html .. '            <li>' .. displayText .. '</li>\n'
                    end
                end
                
                html = html .. '        </ul>\n'
            end
            
            html = html .. '    </td>\n'
        end
        html = html .. '  </tr>\n'
        
        -- Move to next index
        index = index + 1
    end
    
    -- Close the table
    html = html .. '</table>'
    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