Modul:Timeline: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
Stvorena nova stranica sa sadržajem: »local p = {} -- Pretvara godinu u X koordinatu local function yearToX(year, minYear, scale, startX) return startX + (year - minYear) * scale end -- Escape za SVG local function esc(s) return s:gsub("&","&"):gsub("<","<"):gsub(">",">") end -- Glavna funkcija function p.ipod(frame) local args = frame:getParent().args -- Konfiguracija local minYear = tonumber(args.minYear) or 2001 local maxYear = tonumber(args.max...«.
 
Nema sažetka uređivanja
Redak 1: Redak 1:
local p = {}
local p = {}


-- Pretvara godinu u X koordinatu
local function esc(s)
    if not s then return "" end
    return s:gsub("&","&amp;"):gsub("<","&lt;"):gsub(">","&gt;")
end
 
local function yearToX(year, minYear, scale, startX)
local function yearToX(year, minYear, scale, startX)
     return startX + (year - minYear) * scale
     return startX + (year - minYear) * scale
end
end


-- Escape za SVG
function p.render(frame)
local function esc(s)
    return s:gsub("&","&amp;"):gsub("<","&lt;"):gsub(">","&gt;")
end
 
-- Glavna funkcija
function p.ipod(frame)
     local args = frame:getParent().args
     local args = frame:getParent().args


     -- Konfiguracija
     -- osnovne postavke
     local minYear = tonumber(args.minYear) or 2001
     local minYear = tonumber(args.minYear) or 2000
     local maxYear = tonumber(args.maxYear) or 2015
     local maxYear = tonumber(args.maxYear) or 2030
     local scale  = tonumber(args.scale) or 65
     local scale  = tonumber(args.scale) or 60
     local startX  = 60
     local startX  = 60
    local padding = 80


     local rows = {
     local width = startX + (maxYear - minYear) * scale + padding
        classic = { y = 60,  color = "#bfc9ff" },
    if width < 400 then width = 400 end
        nano    = { y = 100, color = "#c9f0b5" },
        shuffle = { y = 140, color = "#ffd27f" },
        touch  = { y = 180, color = "#e0e0e0" }
    }


    -- SVG početak
     local svg = {}
     local svg = {}
     table.insert(svg, '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 260">')
     table.insert(svg, string.format(
        '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %d 300">',
        width
    ))


     -- Pozadina
     -- pozadina
     table.insert(svg, '<rect x="0" y="0" width="1000" height="260" fill="white" />')
     table.insert(svg, '<rect x="0" y="0" width="100%" height="300" fill="white" />')


     -- Godine
     -- vremenska os
     table.insert(svg, '<g font-family="sans-serif" font-size="10" fill="#555">')
     table.insert(svg, '<g font-family="sans-serif" font-size="10" fill="#555">')
     table.insert(svg, '<line x1="60" y1="30" x2="980" y2="30" stroke="#aaa" />')
    local xEnd = yearToX(maxYear, minYear, scale, startX)
     table.insert(svg, string.format(
        '<line x1="%d" y1="30" x2="%d" y2="30" stroke="#aaa" />',
        startX, xEnd
    ))


     for y = minYear, maxYear do
     for y = minYear, maxYear do
Redak 44: Redak 47:
     table.insert(svg, '</g>')
     table.insert(svg, '</g>')


     -- Obrada modela
     -- crtanje redova
     for key, row in pairs(rows) do
     local rowIndex = 1
        local i = 1
    while args["row" .. rowIndex .. "_label"] do
        while args[key .. i .. "_start"] do
        local label = args["row" .. rowIndex .. "_label"]
            local start = tonumber(args[key .. i .. "_start"])
        local y    = tonumber(args["row" .. rowIndex .. "_y"]) or (50 + rowIndex * 40)
            local stop  = tonumber(args[key .. i .. "_end"])
        local color = args["row" .. rowIndex .. "_color"] or "#cccccc"
            local label = args[key .. i .. "_label"] or ""
 
             local icon  = args[key .. i .. "_icon"] or ""
        -- label reda
             local tip  = args[key .. i .. "_tip"] or ""
        table.insert(svg, string.format(
            '<text x="10" y="%d" font-family="sans-serif" font-size="11" fill="#333">%s</text>',
             y, esc(label)
        ))
 
        -- blokovi u redu
        local blockIndex = 1
        while args[string.format("row%d_block%d_start", rowIndex, blockIndex)] do
            local start = tonumber(args[string.format("row%d_block%d_start", rowIndex, blockIndex)])
            local stop  = tonumber(args[string.format("row%d_block%d_end",  rowIndex, blockIndex)]) or maxYear
            local text  = args[string.format("row%d_block%d_label", rowIndex, blockIndex)] or ""
             local tip  = args[string.format("row%d_block%d_tip",  rowIndex, blockIndex)] or ""
            local icon  = args[string.format("row%d_block%d_icon",  rowIndex, blockIndex)] or ""
            local col  = args[string.format("row%d_block%d_color", rowIndex, blockIndex)] or color


             local x1 = yearToX(start, minYear, scale, startX)
             local x1 = yearToX(start, minYear, scale, startX)
             local x2 = yearToX(stop,  minYear, scale, startX)
             local x2 = yearToX(stop,  minYear, scale, startX)
             local width = x2 - x1
             local = x2 - x1
            if w < 6 then w = 6 end


             table.insert(svg, '<g font-family="sans-serif" font-size="9" fill="#000">')
             table.insert(svg, '<g font-family="sans-serif" font-size="9" fill="#000">')
             table.insert(svg, string.format(
             table.insert(svg, string.format(
                 '<rect x="%d" y="%d" width="%d" height="14" fill="%s"><title>%s</title></rect>',
                 '<rect x="%d" y="%d" width="%d" height="14" fill="%s"><title>%s</title></rect>',
                 x1, row.y - 5, width, row.color, esc(tip)
                 x1, y - 10, w, esc(col), esc(tip)
             ))
             ))
            local labelText = icon ~= "" and (icon .. " " .. esc(text)) or esc(text)
             table.insert(svg, string.format(
             table.insert(svg, string.format(
                 '<text x="%d" y="%d">%s %s</text>',
                 '<text x="%d" y="%d">%s</text>',
                 x1 + 3, row.y + 5, icon, esc(label)
                 x1 + 3, y, labelText
             ))
             ))
             table.insert(svg, '</g>')
             table.insert(svg, '</g>')


             i = i + 1
             blockIndex = blockIndex + 1
         end
         end
        rowIndex = rowIndex + 1
     end
     end



Inačica od 12. siječanj 2026. u 12:56

Script error: The function "nonexistent" does not exist.

local p = {}

local function esc(s)
    if not s then return "" end
    return s:gsub("&","&amp;"):gsub("<","&lt;"):gsub(">","&gt;")
end

local function yearToX(year, minYear, scale, startX)
    return startX + (year - minYear) * scale
end

function p.render(frame)
    local args = frame:getParent().args

    -- osnovne postavke
    local minYear = tonumber(args.minYear) or 2000
    local maxYear = tonumber(args.maxYear) or 2030
    local scale   = tonumber(args.scale) or 60
    local startX  = 60
    local padding = 80

    local width = startX + (maxYear - minYear) * scale + padding
    if width < 400 then width = 400 end

    -- SVG početak
    local svg = {}
    table.insert(svg, string.format(
        '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %d 300">',
        width
    ))

    -- pozadina
    table.insert(svg, '<rect x="0" y="0" width="100%" height="300" fill="white" />')

    -- vremenska os
    table.insert(svg, '<g font-family="sans-serif" font-size="10" fill="#555">')
    local xEnd = yearToX(maxYear, minYear, scale, startX)
    table.insert(svg, string.format(
        '<line x1="%d" y1="30" x2="%d" y2="30" stroke="#aaa" />',
        startX, xEnd
    ))

    for y = minYear, maxYear do
        local x = yearToX(y, minYear, scale, startX)
        table.insert(svg, string.format('<text x="%d" y="25">%d</text>', x, y))
    end
    table.insert(svg, '</g>')

    -- crtanje redova
    local rowIndex = 1
    while args["row" .. rowIndex .. "_label"] do
        local label = args["row" .. rowIndex .. "_label"]
        local y     = tonumber(args["row" .. rowIndex .. "_y"]) or (50 + rowIndex * 40)
        local color = args["row" .. rowIndex .. "_color"] or "#cccccc"

        -- label reda
        table.insert(svg, string.format(
            '<text x="10" y="%d" font-family="sans-serif" font-size="11" fill="#333">%s</text>',
            y, esc(label)
        ))

        -- blokovi u redu
        local blockIndex = 1
        while args[string.format("row%d_block%d_start", rowIndex, blockIndex)] do
            local start = tonumber(args[string.format("row%d_block%d_start", rowIndex, blockIndex)])
            local stop  = tonumber(args[string.format("row%d_block%d_end",   rowIndex, blockIndex)]) or maxYear
            local text  = args[string.format("row%d_block%d_label", rowIndex, blockIndex)] or ""
            local tip   = args[string.format("row%d_block%d_tip",   rowIndex, blockIndex)] or ""
            local icon  = args[string.format("row%d_block%d_icon",  rowIndex, blockIndex)] or ""
            local col   = args[string.format("row%d_block%d_color", rowIndex, blockIndex)] or color

            local x1 = yearToX(start, minYear, scale, startX)
            local x2 = yearToX(stop,  minYear, scale, startX)
            local w  = x2 - x1
            if w < 6 then w = 6 end

            table.insert(svg, '<g font-family="sans-serif" font-size="9" fill="#000">')
            table.insert(svg, string.format(
                '<rect x="%d" y="%d" width="%d" height="14" fill="%s"><title>%s</title></rect>',
                x1, y - 10, w, esc(col), esc(tip)
            ))

            local labelText = icon ~= "" and (icon .. " " .. esc(text)) or esc(text)

            table.insert(svg, string.format(
                '<text x="%d" y="%d">%s</text>',
                x1 + 3, y, labelText
            ))
            table.insert(svg, '</g>')

            blockIndex = blockIndex + 1
        end

        rowIndex = rowIndex + 1
    end

    table.insert(svg, '</svg>')
    return table.concat(svg, "\n")
end

return p