Module:Layer DisplayTable

From Mist Train Girls Wiki
Jump to navigation Jump to search

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

local p = {}
 
local Layer = mw.loadData( 'Module:Layer Database2' )

function p.main(frame)
	local count = 0
    if (frame.args["tabletype"] == "bst") then
        -- Don't use rowspan="2" for any non-stat column
        -- The sorting button sill not show up and it will mess up the sorting of stat collumns.
        -- If somehow, you can fix that bug, then go ahead and use the rowspan="2".
        local result = 
        "{|class = \"mw-datatable sortable\" style=\"width:100%;text-align:center;border-style:none;\"\n"..
        "! style=\"width:15%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:75px;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:25%\" colspan =\"9\" | Base Stats \n"..
        "|-\n"..
        "! Character || Img || Type || Wep. || HP || ATK || DEF || HIT || SPD || MATK || MDEF || RCV || LUK\n"
        for key,value in pairs(Layer) do
        local i = 0
            for _ in pairs(frame.args) do
                i = i + 1
                if (value["rarity"] == "A" and (frame.args[i] == "All")) then
                	count = count + 1
                    result = result..
                        "|-style=\"border-left: 2px solid grey;\"\n "..
                        "| [["..value["character"].."]]".."\n"..
                        "| style=\"padding:0px\" | [[File:"..value["character"].."_"..value["rarity"].."_Portrait.png|link=("..value["title"]..")_"..value["character"].."|75px]]".."\n"..
                        "| "..value["type"].."\n"..
                        "| [[File:Weapon_"..value["weapon"]..".png|25px]]\n"..
                    "| data-sort-type=\"number\" | "..value["hp_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["atk_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["def_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["hit_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["spd_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["matk_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["mdef_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["rcv_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["luk_base"].."\n"
                end
            end
        end
    if (frame.args["header"] == "yes") then
        result = result.."|+ '''"..count.." Layers'''\n|}\n"
    else
    	result = result.."|}\n"
    end
    return result
    
	elseif (frame.args["tabletype"] == "mul") then
        -- Don't use rowspan="2" for any non-stat column
        -- The sorting button sill not show up and it will mess up the sorting of stat collumns.
        -- If somehow, you can fix that bug, then go ahead and use the rowspan="2".
        local result = 
        "{|class = \"mw-datatable sortable\" style=\"width:100%;text-align:center;border-style:none;\"\n"..
        "! style=\"width:15%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:15%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:75px;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n "..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:25%\" colspan =\"9\" | Layer Multipliers \n"..
        "|-\n"..
        "! Character || Img || Type || Wep. || HP || ATK || DEF || HIT || SPD || MATK || MDEF || RCV || LUK\n"
        for key,value in pairs(Layer) do
        local i = 0
            for _ in pairs(frame.args) do
                i = i + 1
                if (frame.args[i] == "All") then
                    count = count + 1
                    result = result..
                    "|-style=\"border-left: 2px solid grey;\"\n "..
                    "| [[("..value["title"]..") "..value["character"].."|("..value["title"]..")]]".."\n"..
                    "| [["..value["character"].."]]".."\n"..
                    "| style=\"padding:0px\" | [[File:"..value["character"].."_"..value["rarity"].."_Portrait.png|link=("..value["title"]..")_"..value["character"].."|75px]]".."\n"..
                    "| [[File:Rarity_"..value["rarity"]..".png|30px]]\n"..
                    "| "..value["type"].."\n"..
                    "| [[File:Weapon_"..value["weapon"]..".png|25px]]\n"..
                    "| data-sort-type=\"number\" | "..value["hp_base"].."\n"..
                    "| data-sort-type=\"number\" | "..value["atk_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["def_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["hit_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["spd_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["matk_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["mdef_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["rcv_mul"].."%\n"..
                    "| data-sort-type=\"number\" | "..value["luk_mul"].."%\n"
                end
            end
        end
    if (frame.args["header"] == "yes") then
        result = result.."|+ '''"..count.." Layers'''\n|}\n"
    else
    	result = result.."|}\n"
    end
    return result

    elseif (frame.args["tabletype"] == "both") then
        -- Don't use rowspan="2" for any non-stat column
        -- The sorting button sill not show up and it will mess up the sorting of stat collumns.
        -- If somehow, you can fix that bug, then go ahead and use the rowspan="2".
        local result = 
        "{|class = \"mw-datatable sortable\" style=\"width:100%;text-align:center;border-style:none;\"\n"..
        "! style=\"width:15%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:15%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:75px;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n "..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:11%;border-style:none;background:none !important;\" | \n"..
        "! style=\"width:25%\" colspan =\"9\" | Total Base Stats \n"..
        "|-\n"..
        "! Layer || Character || Img || Rank || Type || Wep. || HP || ATK || DEF || HIT || SPD || MATK || MDEF || RCV || LUK\n"
        for key,value in pairs(Layer) do
        local i = 0
            for _ in pairs(frame.args) do
                i = i + 1
                if (frame.args[i] == "All") then
                    count = count + 1
                    result = result..
                    "|-style=\"border-left: 2px solid grey;\"\n "..
                    "| [[("..value["title"]..") "..value["character"].."|("..value["title"]..")]]".."\n"..
                    "| [["..value["character"].."]]".."\n"..
                    "| style=\"padding:0px\" | [[File:"..value["character"].."_"..value["rarity"].."_Portrait.png|link=("..value["title"]..")_"..value["character"].."|75px]]".."\n"..
                    "| [[File:Rarity_"..value["rarity"]..".png|30px]]\n"..
                    "| "..value["type"].."\n"..
                    "| [[File:Weapon_"..value["weapon"]..".png|25px]]\n"..
                    "| data-sort-type=\"number\" | "..value["hp_base"].."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["atk_base"]*(value["atk_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["def_base"]*(value["def_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["hit_base"]*(value["hit_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["spd_base"]*(value["spd_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["matk_base"]*(value["matk_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["mdef_base"]*(value["mdef_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["rcv_base"]*(value["rcv_mul"]/100)).."\n"..
                    "| data-sort-type=\"number\" | "..math.floor(value["luk_base"]*(value["luk_mul"]/100)).."\n"
                end
            end
        end
    if (frame.args["header"] == "yes") then
        result = result.."|+ '''"..count.." Layers'''\n|}\n"
    else
    	result = result.."|}\n"
    end
    return result
    end
end
return p