Modül:Türkiye nüfus/deneme

Modül belgelemesi[oluştur]
-- Main function to generate the table and line chart data
function p.populationTable(frame)
    local entity = frame.args.entity or mw.wikibase.getEntityIdForCurrentPage()
    if not entity then
        return "'''Bu şablon.'''"
    end

    local sortedYears, populations, ruralPopulations, urbanPopulations, determinationMethods, hasRural, hasUrban = fetchPopulations(entity)
    local rows = {}
    local chartData = {}
    local previousPopulation
    local isFirstADNKS = true
    local isFirstCensus = true

    table.insert(rows, '{| class="wikitable sortable" style="font-size:0.90em; text-align:center;"')
    table.insert(rows, '! style="padding-left:15px;padding-right:15px;" | Yıl')
    table.insert(rows, '! style="padding-left:15px;padding-right:15px;" | Değişim')
    table.insert(rows, '! style="padding-left:15px;padding-right:15px;" | Nüfus')

    if hasRural or hasUrban then
        table.insert(rows, '! style="padding-left:15px;padding-right:15px;" | Kırsal Nüfus')
        table.insert(rows, '! style="padding-left:15px;padding-right:15px;" | Kentsel Nüfus')
    end
    
    table.insert(rows, '! style="padding-left:15px;padding-right:15px;" | Tespit Yöntemi')

    for _, year in ipairs(sortedYears) do
        local population = populations[year]
        local ruralPopulation = ruralPopulations[year]
        local urbanPopulation = urbanPopulations[year]
        local determinationMethod = determinationMethods[year]

        if population then
            local change = calculateChange(population, previousPopulation)
            local yearLink = generateYearLink(year)
            local methodDisplay = determinationMethod and generateMethodLink(determinationMethod, isFirstADNKS, isFirstCensus) or '<span style="color: grey;">Veri yok</span>'
            
            if determinationMethod == "Adrese Dayalı Nüfus Kayıt Sistemi" then
                isFirstADNKS = false
            end

            if determinationMethod == "Türkiye'de genel nüfus sayımı" then
                isFirstCensus = false
            end

            local row = string.format('|-\n| %s || %s || %s', yearLink, change, formatNumber(population))
            
            if hasRural or hasUrban then
                local ruralDisplay = ruralPopulation and formatNumber(ruralPopulation) or '<span style="color: grey;">Veri yok</span>'
                local urbanDisplay = urbanPopulation and formatNumber(urbanPopulation) or '<span style="color: grey;">Veri yok</span>'
                row = row .. string.format(' || %s || %s', ruralDisplay, urbanDisplay)
            end
            
            row = row .. string.format(' || %s', methodDisplay)
            
            table.insert(rows, row)

            -- Line chart data
            table.insert(chartData, { year = year, population = population })
            previousPopulation = population
        end
    end

    table.insert(rows, '|}')

    -- Eksik yılları kontrol et ve kategori ekle
    if checkMissingYears(sortedYears) then
        table.insert(rows, '[[Kategori:Vikiveri\'de nüfus değeri eksik maddeler]]')
    end

    -- Generate line chart data in a readable format
    local chartString = "Nüfus Değerleri:\n"
    for _, data in ipairs(chartData) do
        chartString = chartString .. string.format("Yıl: %d, Nüfus: %s\n", data.year, formatNumber(data.population))
    end

    return table.concat(rows, '\n') .. "\n\n" .. chartString
end