Quantcast
local NAME, ADDON = ...

ADDON.formatters = ADDON.formatters or {}

ADDON.formatters['vertical'] = {}

local formatter = ADDON.formatters['vertical']
formatter.__index = formatter

function formatter:Format(container)
    local settings = ADDON.settings.formatter.vertical

    local list = container.containers

    local x = -container.padding
    local y = container.padding
    local width = 0
    local height = 0

    for item in ADDON.utils:PairsByKey(list, ADDON.sorters.containers[settings.sorter]) do
        item:Arrange(settings.cols)
        item:ClearAllPoints()
        item:SetParent(container)

        if item:IsEmpty() then
            item:Hide()
        else
            item:Show()
            if (y + item:GetHeight() + container.spacing) > (settings.maxHeight / 100 * GetScreenHeight()) then
                y = container.padding
                x = x - item:GetWidth() - container.spacing
            end

            item:SetPoint('BOTTOMRIGHT', x, y)

            height = math.max(height, y + item:GetHeight() + container.padding)
            width = math.max(width, -x + container.padding + item:GetWidth())
            y = y + container.spacing + item:GetHeight()
        end
    end

    container:SetSize(width, height)
end