Модуль:chemcard

Вернуться

Строка 66: Строка 66:
local function buildRecipeHtml(rec, index)
local function buildRecipeHtml(rec, index)
     if not rec or (#rec.inputs == 0 and #rec.outputs == 0) then return nil end
     if not rec or (#rec.inputs == 0 and #rec.outputs == 0) then return nil end
    local beakerSrc = mw.site.server .. "/wiki/Special:FilePath/Beaker.png"
     local container = html.create("div"):addClass("chem-recipe-block")
     local container = html.create("div"):addClass("chem-recipe-block")


Строка 80: Строка 77:


     local collapsible = html.create("div"):addClass("collapsible collapsed"):attr("data-kind", "recipe")
     local collapsible = html.create("div"):addClass("collapsible collapsed"):attr("data-kind", "recipe")
     local inner = html.create("div"):addClass("chem-recipe")
     local inner = html.create("div"):addClass("chem-recipe")


     -- INPUTS
     -- INPUTS (левая колонка)
     local inputsDiv = html.create("div"):addClass("recipe-inputs")
     local inputsDiv = html.create("div"):addClass("recipe-inputs")
     for _, it in ipairs(rec.inputs) do
     for _, it in ipairs(rec.inputs) do
         local item = inputsDiv:tag("div"):addClass("recipe-item")
         local item = inputsDiv:tag("div"):addClass("recipe-item")
         local img = html.create("img")
         -- Используем MediaWiki-синтаксис файла — надёжно рендерится
            :attr("src", beakerSrc)
         item:wikitext('[[File:Beaker.png|36px|class=chem-beaker]] ' .. it.name .. ' [' .. it.qty .. ']')
            :attr("width", "36")
            :attr("height", "36")
            :attr("alt", "Колба")
            :addClass("chem-beaker")
         item:node(img)
        item:tag("span"):addClass("recipe-item-text"):wikitext(it.name .. " [" .. it.qty .. "]")
     end
     end
     inner:node(inputsDiv)
     inner:node(inputsDiv)


     -- СМЕШАЙТЕ
     -- Действие
     if rec.action ~= "" then
     if rec.action ~= "" then
         local actionDiv = inner:tag("div"):addClass("recipe-action")
         local actionDiv = inner:tag("div"):addClass("recipe-action")
Строка 103: Строка 95:
     end
     end


     -- OUTPUTS
     -- OUTPUTS (правая колонка)
     local outputsDiv = html.create("div"):addClass("recipe-outputs")
     local outputsDiv = html.create("div"):addClass("recipe-outputs")
     for _, it in ipairs(rec.outputs) do
     for _, it in ipairs(rec.outputs) do
         local item = outputsDiv:tag("div"):addClass("recipe-item")
         local item = outputsDiv:tag("div"):addClass("recipe-item")
         local img = html.create("img")
         item:wikitext('[[File:Beaker.png|36px|class=chem-beaker]] ' .. it.name .. ' [' .. it.qty .. ']')
            :attr("src", beakerSrc)
            :attr("width", "36")
            :attr("height", "36")
            :attr("alt", "Колба")
            :addClass("chem-beaker")
        item:node(img)
        item:tag("span"):addClass("recipe-item-text"):wikitext(it.name .. " [" .. it.qty .. "]")
     end
     end
     inner:node(outputsDiv)
     inner:node(outputsDiv)