Module:HeroDataArrays: Difference between revisions

No edit summary
separated reload delay table
Line 408: Line 408:


p.heroReloadTable = function(frame)
p.heroReloadTable = function(frame)
     local heroReloadData = heroDataArray({"Name", "Weapon>ReloadTime","Weapon>ReloadDelay"})
     local heroReloadData = heroDataArray({"Name", "Weapon>ReloadTime"})


     -- 1. collect rows
     -- 1. collect rows
Line 415: Line 415:
         table.insert(rows, {
         table.insert(rows, {
             name      = name,
             name      = name,
             reloadTime = tonumber(data["Weapon>ReloadTime"]) or 0,
             reloadTime = tonumber(data["Weapon>ReloadTime"]) or 0
            reloadDelay = tonumber(data["Weapon>ReloadDelay"]) or 0
         })
         })
     end
     end
Line 426: Line 425:
     local z = '{| class="wikitable sortable mw-collapsible" style="text-align:center"\n' ..
     local z = '{| class="wikitable sortable mw-collapsible" style="text-align:center"\n' ..
               '|+ Hero Base Reload Time Stats\n' ..
               '|+ Hero Base Reload Time Stats\n' ..
               '! Hero !! Reload Time (s) !! Reload Delay \n'
               '! Hero !! Reload Time (s) \n'


     for _, r in ipairs(rows) do
     for _, r in ipairs(rows) do
Line 433: Line 432:
             '| style="text-align:left;" | ' ..
             '| style="text-align:left;" | ' ..
             frame:expandTemplate{title = 'PageRef', args = {r.name}} ..
             frame:expandTemplate{title = 'PageRef', args = {r.name}} ..
             ' || '.. r.reloadTime ..' || '..r.reloadDelay..' \n'
             ' || '.. r.reloadTime ..' \n'
     end
     end
     return z .. '|}'
     return z .. '|}'
end
p.heroReloadDelayTable = function(frame)
    local heroReloadDelayData = heroDataArray({"Name", "Weapon>ReloadDelay"})
    local rows = {}
    for name, data in pairs(heroReloadDelayData) do
        table.insert(rows, {
            name = name,
            reloadDelay  = data["Weapon>ReloadDelay"] or 0
        })
    end
    table.sort(rows, function(a, b) return a.name:lower() < b.name:lower() end)
    local tableDefs = {
    {
            title  = "Hero Base Reload Delay Stats",
            columns = {
                { label = "Reload Delay (s)", field = "reloadDelay"  }
            }
        }   
    }
    local output = ""
    for _, tableDef in ipairs(tableDefs) do
        local filteredRows = {}
        for _, r in ipairs(rows) do
            local hasValue = false
            for _, col in ipairs(tableDef.columns) do
                if r[col.field] ~= 0 then
                    hasValue = true
                    break
                end
            end
            if hasValue then
                table.insert(filteredRows, r)
            end
        end
        if #filteredRows > 0 then
            local header = ""
            for _, col in ipairs(tableDef.columns) do
                header = header.." !! "..col.label
            end
            local t = "{| class=\"wikitable sortable mw-collapsible\" style=\"text-align:center\" \n"..
                "|+ "..tableDef.title.." \n"..
                "! Hero"..header.." \n"
            for _, r in ipairs(filteredRows) do
                local cells = ""
                for _, col in ipairs(tableDef.columns) do
                    cells = cells.." || "..r[col.field]
                end
                t = t..
                    "|- \n"..
                    "| style=\"text-align:left;\" | "..
                        frame:expandTemplate{title="PageRef", args={r.name}}..
                        cells.." \n"
            end
            t = t.."|}"
            if output ~= "" then
                output = output.."\n\n"
            end
            output = output..t
        end
    end
    return output
end
end