Bearbeiten von „Modul:RecipeTable

Aus Eco - Deutsches Wiki
Wechseln zu:Navigation, Suche

Deine Änderungen werden angezeigt, sobald ein dazu berechtigter Benutzer sie akzeptiert hat. (Hilfe)

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
-- Module:RecipeTable https://wiki.play.eco/en/Module:RecipeTable
-- Module:RecipeTable https://wiki.play.eco/en/Module:RecipeTable
local p = {}
local p = {}
local Utils = require("Module:Utils")
local L = require("Module:Localization")


-- Header for the wikitable
-- Header for the wikitable
function header(args)
function header( args )
     local headerStr = '{| class=\"wikitable mw-collapsible\" style=\"text-align: center;\"\n|-\n'
     local headerStr = '{| class=\"wikitable mw-collapsible\" style=\"text-align: center;\"\n|-\n'


     -- Show or hide the Crafting Station column
     -- Show or hide the Crafting Station column
     if args[1] == '1' then
     if args[1] == '1' then
         headerStr = headerStr .. '! ' .. L.t('Crafting Station') .. ' !'
         headerStr = headerStr .. '! Handwerksstation !'
     end
     end
    -- Item, Level Needed, Materials, Crafting Time, Labour Cost and XP Gained Specialty
-- Item, Level Needed, Materials, Crafting Time, Labour Cost and XP Gained Specialty
    headerStr = headerStr .. '! colspan=\"4\" | ' .. L.t('Item') .. ' !! colspan=\"4\" | ' .. L.t('Materials') .. ' !! ' .. L.t('Level Needed') .. ' !! ' .. L.t('Crafting Time<br>(mins)') .. ' !! ' .. L.t('Labour Cost') .. ' || ' .. L.t('XP Gained') .. ' !!\n'
    headerStr = headerStr .. '! colspan=\"4\" | Artikel !! colspan=\"4\" | Materialien !! Niveau benötigt !! Herstellungszeit <br>(mins) !! Arbeitskosten || XP gewonnen !!\n'
     return headerStr
     return headerStr
end
end


function imagedisp(name, nameEN, style, borderColour)
function imagedisp( name,nameEN )
     local borderImageClass = ''
     local str = ''
    local icon
    if borderColour == 'green' then
        borderImageClass = ' borderGreen'
    elseif borderColour == 'yellow' then
        borderImageClass = ' borderYellow'
    end


    local iconBG
     if name then
     if style == 'tag' then
         name = string.gsub(name, '.skillbook', 'skillbook')
         iconBG = 'iconGrey'
        icon = L.tag(name) .. 'Tag'
        name = L.t('%s Tag'):format(name)
    elseif style == 'skill' then
        iconBG = 'iconBrightBlue'
        icon = nameEN
     end
     end


     if not icon then
    -- Manual override for image file
         icon = name
     if nameEN then
    end
         image = string.gsub(nameEN, ' ', '') .. '_Icon.png'
 
else
    return Utils.build_icon(icon, name, 'iconRecipe', iconBG, borderImageClass, true) .. '\n[[' .. name .. ']]'
image = 'NoImage.png'
end
str = str .. '<div class="iconContainer" style="width:64px; height:64px"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconRecipe|link=' .. name ..']]</div><div class="iconBorder" style=\"position:absolute;\"></div></div>\n[[' .. name .. ']]'
return str
end
end


function stationcell(args)
function stationcell( args )
    local str = ''
  local str = ''
    str = str .. '| ' .. imagedisp(args[1], args[2])
str = str .. '| ' .. imagedisp(args[1],args[2])
    return str
return str
end
end


function itemcell(args)
function itemcell( args )
    local str = ''
local str = ''
    str = str .. '| ' .. imagedisp(args[1], args[3])
str = str .. '| ' .. imagedisp(args[1],args[3])
    str = str .. '<br>x' .. args[2] .. '\n'
str = str .. '<br>x' .. args[2] .. '\n'
    return str
return str
end
end


function ingredientcell(args)
function ingredientcell( args )
    local str = ''
local str = ''
    local borderColour
str = str .. '| ' .. imagedisp(args[2],args[5])
    if args[4] == 'False' then
if args[1] == 'TAG' then
        borderColour = 'green'
str = str .. ' :TAG:'
    elseif args[4] == 'True' then
end
        borderColour = 'yellow'
str = str .. '<br>x' .. args[3] .. '\n'
    end
return str
    if args[1] == 'TAG' then
        style = 'tag'
    else
        style = nil
    end
    return str .. '| ' .. imagedisp(args[2], args[5], style, borderColour) .. '<br>x' .. args[3] .. '\n'
end
end


function skillreqcell(args)
function skillreqcell( args )
     local str = ''
     local str = ''
    str = str .. '| ' .. imagedisp(args[1], args[3], 'skill')
str = str .. '| ' .. imagedisp(args[1],args[3])
    str = str .. '<br> ' .. L.t('Level') .. ' ' .. args[2] .. ' \n'
str = str .. '<br> Level ' .. args[2] .. ' \n'
    return str
return str
end
end


-- Does this even exist anymore?
-- Does this even exist anymore?
Zeile 92: Zeile 73:


-- Create a wikitable of recipes
-- Create a wikitable of recipes
function p.main(recipes)
function p.main( recipes )
     local rows = ''
     local rows = ''
 
     -- Get each row
     -- Get each row
     for i = 1, #recipes do
     for i = 1, #recipes do
        -- get information from the current recipe for building
-- get information from the current recipe for building
        local checkImage = recipes[i].checkImage
local checkImage = recipes[i].checkImage
        local craftStn = recipes[i].craftStn
local craftStn = recipes[i].craftStn
        local skillNeeds = recipes[i].skillNeeds
local skillNeeds = recipes[i].skillNeeds
        --use last variant as this is always the default variant
--use last variant as this is always the default variant
        local numberOfVariants = recipes[i].numberOfVariants
local numberOfVariants = recipes[i].numberOfVariants
        local products = {}
local products = {{'','',''}}
        local ingredients = {}
local ingredients = {{'',''}}
 
        --loop through variants to select default variant ingredients
--loop through variants to select default variant ingredients
if numberOfVariants == 1 then
for k, v in pairs(recipes[i].variants) do
            ingredients = recipes[i].variants[1].ingredients
--given pairs doesn't guarantee order, check that product matches default variant
            products = recipes[i].variants[1].products
if k == recipes[i].defaultVariant then
        else
ingredients = v.ingredients
        --loop through variants to select default variant ingredients
products = v.products
            for k, v in pairs(recipes[i].variants) do      
end
                --given pairs doesn't guarantee order, check that product matches default variant
end
                if k == recipes[i].defaultVariant then
local baseCraftTime = recipes[i].baseCraftTime
                    ingredients = v.ingredients
local baseLaborCost = recipes[i].baseLaborCost
                    products = v.products
local baseXPGain = recipes[i].baseXPGain
                end
            end
-- determine the size needed for products to display correctly
        end
local ingrednum = #ingredients
        local baseCraftTime = recipes[i].baseCraftTime
local rowspan = '|'
        local baseLaborCost = recipes[i].baseLaborCost
local rowspanProducts = '|'
        local baseXPGain = recipes[i].baseXPGain
 
--Code to incorporate rowspan for ingrediants and variants here
        -- determine the size needed for products to display correctly
local rowspanCount = 0
        local ingrednum = #ingredients
        local rowspan = '|'
        local rowspanProducts = '|'
 
        --Code to incorporate rowspan for ingrediants and variants here
        local rowspanCount = 0
 
        --accomodate both variants and multiple ingredients


        if ingrednum > 4 then
--accomodate both variants and multiple ingredients
            rowspanCount = rowspanCount + 2
        end
if ingrednum > 4 then
        --suspect there will be a bug here for many variants & many ingredients - might need x2 multipler per variant.
rowspanCount = rowspanCount + 2
        if (#recipes == 1) then
end
            --only add variant rowspans if there is one recipe (i.e. variants will be displayed)
--suspect there will be a bug here for many variants & many ingredients - might need x2 multipler per variant.
            if tonumber(recipes[i].numberOfVariants) > 1 then
if(#recipes == 1) then --only add variant rowspans if there is one recipe (i.e. variants will be displayed)
                rowspanCount = rowspanCount + tonumber(recipes[i].numberOfVariants)
if tonumber(recipes[i].numberOfVariants) > 1 then
                rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
rowspanCount = rowspanCount + tonumber(recipes[i].numberOfVariants)
            end
rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
        end
end
        if rowspanCount > 0 then
end
            rowspan = '| rowspan=\"' .. rowspanCount .. '\" '
if rowspanCount > 0 then
            if (#recipes > 1) then
rowspan = '| rowspan=\"' .. rowspanCount .. '\" '
                rowspanProducts = '| rowspan=\"' .. rowspanCount .. '\" '
if(#recipes > 1) then
            else
rowspanProducts = '| rowspan=\"' .. rowspanCount .. '\" '
                rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
else
            end
rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
         end
end
end
-- String to return
local row = '|-\n'
-- Add new row if products or ingredients are passed in with at least 1 item
if (products[1] and ingredients[1]) then
     
-- Show or hide the Crafting Station column
if recipes[i].dispCraftStn == '1' then
row = row .. rowspan .. stationcell({craftStn[1][1],craftStn[1][2]}) .. '\n'
end
          
-- Add the products columns
local prodnum = #products
for a = 1, prodnum do
if prodnum == 1 then
row = row .. rowspanProducts .. ' colspan=\"4\" '
end
if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
row = row .. rowspanProducts .. ' colspan=\"2\" '
end
row = row .. itemcell({products[a][1], products[a][2], products[a][3]})
if (tonumber(numberOfVariants) > 1) then
row = row .. '<i>Hat Varianten</i> \n'
end
end
-- Add the FIRST row of Ingredients column
local numing = ingrednum
if ingrednum > 4 then
numing = 4
end
for b = 1, numing do
if (ingrednum == 1) then
row = row .. '| colspan=\"4\" '
end
if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
row = row .. '| colspan=\"2\" '
end
row = row .. ingredientcell(ingredients[b])
end


        -- String to return
-- Add the Skill needed column
        local row = '|-\n'
if (skillNeeds[1] ~= '' and skillNeeds[1] ~= nil) then
row = row .. rowspan .. skillreqcell({skillNeeds[1][1], skillNeeds[1][2],skillNeeds[1][3]})
else
row = row .. rowspan
if ingrednum > 4 then
row = row .. '|'
end
row = row .. ' \'\'None\'\' \n'
end
-- Add the Crafting time column
row = row .. rowspan
if rowspanCount > 1 then
row = row .. '|'
end
if baseCraftTime then
row = row .. baseCraftTime .. '\n'
else
row = row .. rowspan .. ' \'\'fehlt\'\' \n'
end
-- Add the Labour time column
row = row .. rowspan
if rowspanCount > 1 then
row = row .. '|'
end
if baseLaborCost then
row = row .. baseLaborCost .. '\n'
else
row = row .. rowspan .. ' \'\'fehlt\'\' \n'
end
-- Add the XP gain column
row = row .. rowspan
if rowspanCount > 1 then
row = row .. '|'
end
if baseXPGain then
row = row .. baseXPGain .. '\n'
else
row = row .. rowspan .. ' \'\'fehlt\'\' \n'
end
-- Add the SECOND row of ingredients to ingredients column if applicable
if ingrednum > 4 then
row = row .. '|-\n'
for b = 5, ingrednum do
if (ingrednum == 5) then
row = row .. '| colspan=\"4\" '
end
if ((ingrednum == 6) or (ingrednum == 7 and b == 6)) then
row = row .. '| colspan=\"2\" '
end
row = row .. ingredientcell(ingredients[b])
end
end
rows = rows .. row
end


        -- Add new row if products or ingredients are passed in with at least 1 item
--Show variants in table if only 1 recipe in list
        if (products[1] and ingredients[1]) then
if (#recipes == 1 and tonumber(recipes[i].numberOfVariants) > 1) then
 
for k, v in pairs(recipes[i].variants) do
            -- Show or hide the Crafting Station column
--start new row for variants
            if recipes[i].dispCraftStn == '1' then
row = '|-\n'
                row = row .. rowspan .. stationcell({ craftStn[1][1], craftStn[1][2] }) .. '\n'
--Skip default variant
            end
if v.products[1][1] ~= recipes[i].defaultVariant then
 
local prodnum = #products
            -- Add the products columns
for a = 1, prodnum do
            local prodnum = #products
if prodnum == 1 then
            for a = 1, prodnum do
row = row .. rowspanProducts .. ' colspan=\"4\" '
                if prodnum == 1 then
end
                    row = row .. rowspanProducts .. ' colspan=\"4\" '
if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
                end
row = row .. rowspanProducts .. ' colspan=\"2\" '
                if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
end
                    row = row .. rowspanProducts .. ' colspan=\"2\" '
row = row .. itemcell({v.products[a][1], v.products[a][2], v.products[a][3]})
                end
end
                row = row .. itemcell({ products[a][1], products[a][2], products[a][3] })
                if (tonumber(numberOfVariants) > 1) then
                    row = row .. '<i>' .. L.t('Has Variants') .. '</i> \n'
                end
            end
 
            -- Add the FIRST row of Ingredients column
            local numing = ingrednum
            if ingrednum > 4 then
                numing = 4
            end
            for b = 1, numing do
                if (ingrednum == 1) then
                    row = row .. '| colspan=\"4\" '
                end
                if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
                    row = row .. '| colspan=\"2\" '
                end
                row = row .. ingredientcell(ingredients[b])
            end
 
            -- Add the Skill needed column
            if (skillNeeds[1] ~= '' and skillNeeds[1] ~= nil) then
                row = row .. rowspan .. skillreqcell({ skillNeeds[1][1], skillNeeds[1][2], skillNeeds[1][3] })
            else
                row = row .. rowspan
                if ingrednum > 4 then
                    row = row .. '|'
                end
                row = row .. ' \'\'' .. L.t('None') .. '\'\' \n'
            end
 
            -- Add the Crafting time column
            row = row .. rowspan
            if rowspanCount > 1 then
                row = row .. '|'
            end
            if baseCraftTime then
                row = row .. baseCraftTime .. '\n'
            else
 
                row = row .. rowspan .. ' \'\'' .. L.t('Missing') .. '\'\' \n'
            end
 
            -- Add the Labour time column
            row = row .. rowspan
            if rowspanCount > 1 then
                row = row .. '|'
            end
            if baseLaborCost then
                row = row .. baseLaborCost .. '\n'
            else
 
                row = row .. rowspan .. ' \'\'' .. L.t('Missing') .. '\'\' \n'
            end
 
            -- Add the XP gain column
            row = row .. rowspan
            if rowspanCount > 1 then
                row = row .. '|'
            end
            if baseXPGain then
                row = row .. baseXPGain .. '\n'
            else
 
                row = row .. rowspan .. ' \'\'' .. L.t('Missing') .. '\'\' \n'
            end
 
            -- Add the SECOND row of ingredients to ingredients column if applicable
            if ingrednum > 4 then
                row = row .. '|-\n'
                for b = 5, ingrednum do
                    if (ingrednum == 5) then
                        row = row .. '| colspan=\"4\" '
                    end
                    if ((ingrednum == 6) or (ingrednum == 7 and b == 6)) then
                        row = row .. '| colspan=\"2\" '
                    end
                    row = row .. ingredientcell(ingredients[b])
                end
            end
 
            rows = rows .. row
        end
 
        --Show variants in table if only 1 recipe in list
        if (#recipes == 1 and tonumber(recipes[i].numberOfVariants) > 1) then
            for k, v in pairs(recipes[i].variants) do
                --start new row for variants
                row = '|-\n'
                --Skip default variant
                if v.products[1][1] ~= recipes[i].defaultVariant then
                    local prodnum = #products
                    for a = 1, prodnum do
                        if prodnum == 1 then
                            row = row .. rowspanProducts .. ' colspan=\"4\" '
                        end
                        if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
                            row = row .. rowspanProducts .. ' colspan=\"2\" '
                        end
                        row = row .. itemcell({ v.products[a][1], v.products[a][2], v.products[a][3] })
                    end
 
                    --will need to cycle ingrediants to fill out complete table
                    --row = row .. itemcell({v.products[1][1], v.products[1][2]})
                    local numing = ingrednum
                    if ingrednum > 4 then
                        numing = 4
                    end
                    for b = 1, numing do
                        if (ingrednum == 1) then
                            row = row .. '| colspan=\"4\" '
                        end
                        if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
                            row = row .. '| colspan=\"2\" '
                        end
                        row = row .. ingredientcell(v.ingredients[b])
                    end
 
 
                end
                rows = rows .. row
            end
        end
    end


--will need to cycle ingrediants to fill out complete table
--row = row .. itemcell({v.products[1][1], v.products[1][2]})
local numing = ingrednum
if ingrednum > 4 then
numing = 4
end
for b = 1, numing do
if (ingrednum == 1) then
row = row .. '| colspan=\"4\" '
end
if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
row = row .. '| colspan=\"2\" '
end
row = row .. ingredientcell(v.ingredients[b])
end
end
rows = rows .. row
end
end
end
     -- Return the full wikitable
     -- Return the full wikitable
    return header({ recipes[1].dispCraftStn }) .. rows .. '|-\n|}\n'
return header({recipes[1].dispCraftStn}) .. rows .. '|-\n|}\n'
end
end


return p
return p
Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Eco - Deutsches Wiki-Beiträge automatisch unter der „CC BY-NC-SA 4.0“ stehen (siehe Eco:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende hCaptcha zu lösen:

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)

Die folgende Vorlage wird auf dieser Seite verwendet: