Module:Skills/Gathering/Sandbox: Difference between revisions

Undo revision 75874 by Ricewind (talk)
(Undo revision 75875 by Ricewind (talk))
Tag: Undo
(Undo revision 75874 by Ricewind (talk))
Tag: Undo
Line 1,122: Line 1,122:




local function _buildAstrologyConstellationTable(realmID)
function p._buildAstrologyConstellationTable(realmID)
     local modTypes = {
     local modTypes = {
         {
         {
Line 1,149: Line 1,149:
         end
         end
     )
     )
     table.sort(recipes,
     table.sort(recipes,
         function(a, b)
         function(a, b)
Line 1,156: Line 1,155:
     )
     )


     -- Determine which mod types are used
     -- Determine which mod types are to be displayed
     for _, recipe in ipairs(recipes) do
     for _, recipe in ipairs(recipes) do
         for _, modType in ipairs(modTypes) do
         for _, modType in ipairs(modTypes) do
             if not modType.inUse then
             if not modType.inUse then
                 local recipeMods = recipe[modType.modKey]
                 local recipeMods = recipe[modType.modKey]
                 if recipeMods ~= nil and not Shared.tableIsEmpty(recipeMods) then
                 if recipeMods and not Shared.tableIsEmpty(recipeMods) then
                     modType.inUse = true
                     modType.inUse = true
                 end
                 end
Line 1,168: Line 1,167:
     end
     end


     local html = mw.html.create('table')
     local root = mw.html.create('table')
    html:addClass('wikitable sortable stickyHeader')
        :addClass('wikitable sortable stickyHeader')


     -- Header rows
     -- Header row
     local headerRow0 = html:tag('tr')
     local headerRow = root:tag('tr')
     headerRow0:tag('th'):attr('rowspan', '2'):wikitext('Constellation')
     headerRow:tag('th'):attr('rowspan', '2'):attr('colspan', '2'):wikitext('Constellation')
     headerRow0:tag('th'):attr('rowspan', '2'):wikitext('Level')
     headerRow:tag('th'):attr('rowspan', '2'):wikitext(Icons.Icon({"Astrology", type='skill', notext='true'}) .. '<br>Level')
     headerRow0:tag('th'):attr('rowspan', '2'):wikitext('XP')
     headerRow:tag('th'):attr('rowspan', '2'):wikitext('[[DLC]]')
     headerRow0:tag('th'):attr('rowspan', '2'):wikitext('Skills')
    headerRow:tag('th'):attr('rowspan', '2'):wikitext('XP')
     headerRow:tag('th'):attr('rowspan', '2'):wikitext('Skills')


     local headerRow1 = html:tag('tr')
    -- Mod types header
     local headerRow1 = root:tag('tr')
     for _, modType in ipairs(modTypes) do
     for _, modType in ipairs(modTypes) do
         if modType.inUse then
         if modType.inUse then
             headerRow1:tag('th'):attr('colspan', '2'):wikitext(modType.name .. ' Stars')
             headerRow1:tag('th'):attr('colspan', '2'):wikitext(modType.name .. ' Stars')
        end
    end
    -- Subheaders for mod types
    local headerRow2 = root:tag('tr')
    for _, modType in ipairs(modTypes) do
        if modType.inUse then
            headerRow2:tag('th'):wikitext(Icons.Icon({'Mastery', notext='true'}) .. ' Level')
            headerRow2:tag('th'):wikitext('Modifiers')
         end
         end
     end
     end


     -- Data rows
     -- Data rows
     for _, cons in ipairs(recipes) do
     for i, cons in ipairs(recipes) do
         local modData = Skills._getConstellationModifiers(cons)
         local modData = Skills._getConstellationModifiers(cons)
         local name = cons.name
         local name = cons.name
         local skillIconArray = {}
         local skillIconArray = {}
         for _, skillID in ipairs(cons.skillIDs) do
         for j, skillID in ipairs(cons.skillIDs) do
             table.insert(skillIconArray, Icons.Icon({Constants.getSkillName(skillID), type='skill'}))
             table.insert(skillIconArray, Icons.Icon({Constants.getSkillName(skillID), type='skill'}))
         end
         end
Line 1,198: Line 1,208:
         end
         end


        local rowSpan = (maxRows > 1 and 'rowspan="' .. maxRows .. '"') or ''
         local row = root:tag('tr')
 
         row:tag('td'):attr('rowspan', maxRows)
         local row = html:tag('tr')
        :attr('data-sort-value', name):attr('id', name):wikitext(' ')
         row:tag('td'):attr('rowspan', rowSpan):attr('data-sort-value', name):attr('id', name):wikitext(' '):wikitext(Icons.Icon({name, type='constellation', notext=true}))
        row:tag('td'):attr('rowspan', maxRows)
         row:tag('td'):attr('rowspan', rowSpan):wikitext(Icons.Icon({'Mastery', notext=true}) .. ' ' .. Icons.getDLCColumnIcon(cons.id) .. name)
    :wikitext(Icons.Icon({name, type='constellation', notext='true'}))
        row:tag('td'):attr('rowspan', rowSpan):attr('style', 'text-align:right;'):wikitext(cons.level)
         row:tag('td'):attr('rowspan', maxRows)
         row:tag('td'):attr('rowspan', rowSpan):attr('style', 'text-align:right;'):wikitext(cons.baseExperience)
    :wikitext(name)
         row:tag('td'):attr('rowspan', rowSpan):wikitext(table.concat(skillIconArray, '<br/>'))
        row:tag('td'):attr('rowspan', maxRows)
    :css('text-align', 'center')
    :wikitext(cons.level)
    row:tag('td'):attr('rowspan', maxRows)
    :attr('data-sort-value', Icons.getExpansionID(cons.id))
    :css('text-align', 'center')
    :wikitext(Icons.getDLCColumnIcon(cons.id))
         row:tag('td'):attr('rowspan', maxRows)
    :css('text-align', 'right')
    :wikitext(cons.baseExperience)
         row:tag('td'):attr('rowspan', maxRows)
    :wikitext(table.concat(skillIconArray, '<br/>'))


         -- Modifier rows
         -- Generate table rows for modifiers
         for row = 1, maxRows do
         for rowIdx = 1, maxRows do
            local subrow = root:tag('tr')
             for _, modType in ipairs(modTypes) do
             for _, modType in ipairs(modTypes) do
                 if modType.inUse then
                 if modType.inUse then
                     local masteryLevel = modType.levels[row]
                     local masteryLevel = modType.levels[rowIdx]
                     local rowModData = modData[modType.modKey][row]
                     local rowModData = modData[modType.modKey][rowIdx]
                    local cell = html:tag('td')
                     if masteryLevel and rowModData then
                     if masteryLevel ~= nil and rowModData ~= nil then
                         subrow:tag('td'):css('text-align', 'right'):wikitext(masteryLevel)
                         cell:attr('style', 'text-align:right;'):wikitext(masteryLevel)
                         subrow:tag('td'):wikitext(Modifiers.getModifiersText(rowModData, false, false, 10))
                         cell:wikitext(Modifiers.getModifiersText(rowModData, false, false, 10))
                     else
                     else
                         cell:attr('colspan', '2'):addClass('table-na'):wikitext(' ')
                         subrow:tag('td'):attr('colspan', '2'):addClass('table-na'):wikitext(' ')
                     end
                     end
                 end
                 end
             end
             end
            html:tag('tr') -- Insert an empty row for styling purposes
         end
         end
     end
     end


     return tostring(html)
    root:wikitext('\n|}')
 
     return tostring(root)
end
end


2,875

edits