Zuletzt bearbeitet vor 6 Tagen
von Xineohp1506

Modul:LPON/ProjectOverview: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
Zeile 7: Zeile 7:
     end
     end


    -- Tabellen-Header
     local output = '<table class="lpnon-project-overview-table">\n'
     local output = '<table class="lpnon-project-overview-table">\n'
     output = output .. '<tr><th>Projekt</th><th>Spiel</th><th>Spieler</th><th>Beschreibung</th><th>Episodenanzahl</th></tr>\n'
     output = output .. '<tr><th>Projekt</th><th>Spiel</th><th>Spieler</th><th>Status</th><th>Beschreibung</th><th>Episodenanzahl</th></tr>\n'


     -- Abfrage aller Projekte
     -- Abfrage aller Projekte
     local query = "[[LPON:Typ::Projekt]]|?LPON:Title|?LPON:GameTitle|?LPON:Projekt|?LPON:Game|?LPON:Spieler|?LPON:Description"
     local query = "[[LPON:Typ::Projekt]]|?LPON:Title|?LPON:GameTitle|?LPON:Projekt|?LPON:Game|?LPON:Spieler|?LPON:Description|?LPON:Status"
     local queryResult = mw.smw.getQueryResult(query)
     local queryResult = mw.smw.getQueryResult(query)


Zeile 17: Zeile 18:
         return "Keine Projekte gefunden."
         return "Keine Projekte gefunden."
     end
     end
    -- Projekte nach Status sortieren
    local runningProjects = {}
    local otherProjects = {}


     for _, result in ipairs(queryResult.results) do
     for _, result in ipairs(queryResult.results) do
        -- Projektname und Link
         local projectName = result.printouts["LPON:Title"] and result.printouts["LPON:Title"][1] or "Unbekannt"
         local projectName = result.printouts["LPON:Title"] and result.printouts["LPON:Title"][1] or "Unbekannt"
         local projectLink = result.printouts["LPON:Projekt"] and result.printouts["LPON:Projekt"][1] or projectName
         local projectLink = result.printouts["LPON:Projekt"] and result.printouts["LPON:Projekt"][1] or projectName


        -- Spielname und Link
         local gameName = result.printouts["LPON:GameTitle"] and result.printouts["LPON:GameTitle"][1] or "Unbekannt"
         local gameName = result.printouts["LPON:GameTitle"] and result.printouts["LPON:GameTitle"][1] or "Unbekannt"
         local gameLink = result.printouts["LPON:Game"] and result.printouts["LPON:Game"][1] or gameName
         local gameLink = result.printouts["LPON:Game"] and result.printouts["LPON:Game"][1] or gameName


        -- Spieler mit Links
         local players = result.printouts["LPON:Spieler"] or {}
         local players = result.printouts["LPON:Spieler"] or {}
         local playerLinks = {}
         local playerLinks = {}
Zeile 34: Zeile 36:
         end
         end


        -- Beschreibung gekürzt
         local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
         local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
         local truncatedDescription = helper.cleanAndTruncate(description, 200)
         local truncatedDescription = helper.cleanAndTruncate(description, 200)


         -- Episodenanzahl berechnen
         local status = result.printouts["LPON:Status"] and result.printouts["LPON:Status"][1] or "Unbekannt"
 
         local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", projectLink)
         local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", projectLink)
         local episodeCountQuery = mw.smw.getQueryResult(episodeQuery)
         local episodeCountQuery = mw.smw.getQueryResult(episodeQuery)
         local episodeCount = episodeCountQuery and #episodeCountQuery.results or 0
         local episodeCount = episodeCountQuery and #episodeCountQuery.results or 0


         -- Zeile hinzufügen
         local projectRow = string.format(
        output = output .. string.format(
             '<tr class="lpnon-status-%s"><td>[[LetsPlayOrNot:%s|%s]]</td><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%s</td><td>%d</td></tr>\n',
             '<tr><td>[[LetsPlayOrNot:%s|%s]]</td><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%d</td></tr>\n',
            status:lower(), -- Status als CSS-Klasse in Kleinbuchstaben
             projectLink, projectName,
             projectLink, projectName,
             gameLink, gameName,
             gameLink, gameName,
             table.concat(playerLinks, ", "),
             table.concat(playerLinks, ", "),
            status,
             truncatedDescription,
             truncatedDescription,
             episodeCount
             episodeCount
         )
         )
        if status == "Laufend" then
            table.insert(runningProjects, projectRow)
        else
            table.insert(otherProjects, projectRow)
        end
    end
    -- Laufende Projekte zuerst anzeigen
    for _, row in ipairs(runningProjects) do
        output = output .. row
    end
    -- Andere Projekte anzeigen
    for _, row in ipairs(otherProjects) do
        output = output .. row
     end
     end



Aktuelle Version vom 21. Dezember 2024, 01:23 Uhr

Die Dokumentation für dieses Modul kann unter Modul:LPON/ProjectOverview/Doku erstellt werden

local overview = {}
local helper = require('Module:LPON/Helper')

function overview.render(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Tabellen-Header
    local output = '<table class="lpnon-project-overview-table">\n'
    output = output .. '<tr><th>Projekt</th><th>Spiel</th><th>Spieler</th><th>Status</th><th>Beschreibung</th><th>Episodenanzahl</th></tr>\n'

    -- Abfrage aller Projekte
    local query = "[[LPON:Typ::Projekt]]|?LPON:Title|?LPON:GameTitle|?LPON:Projekt|?LPON:Game|?LPON:Spieler|?LPON:Description|?LPON:Status"
    local queryResult = mw.smw.getQueryResult(query)

    if not queryResult or not queryResult.results then
        return "Keine Projekte gefunden."
    end

    -- Projekte nach Status sortieren
    local runningProjects = {}
    local otherProjects = {}

    for _, result in ipairs(queryResult.results) do
        local projectName = result.printouts["LPON:Title"] and result.printouts["LPON:Title"][1] or "Unbekannt"
        local projectLink = result.printouts["LPON:Projekt"] and result.printouts["LPON:Projekt"][1] or projectName

        local gameName = result.printouts["LPON:GameTitle"] and result.printouts["LPON:GameTitle"][1] or "Unbekannt"
        local gameLink = result.printouts["LPON:Game"] and result.printouts["LPON:Game"][1] or gameName

        local players = result.printouts["LPON:Spieler"] or {}
        local playerLinks = {}
        for _, player in ipairs(players) do
            table.insert(playerLinks, string.format("[[LetsPlayOrNot:%s|%s]]", player, player))
        end

        local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
        local truncatedDescription = helper.cleanAndTruncate(description, 200)

        local status = result.printouts["LPON:Status"] and result.printouts["LPON:Status"][1] or "Unbekannt"

        local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", projectLink)
        local episodeCountQuery = mw.smw.getQueryResult(episodeQuery)
        local episodeCount = episodeCountQuery and #episodeCountQuery.results or 0

        local projectRow = string.format(
            '<tr class="lpnon-status-%s"><td>[[LetsPlayOrNot:%s|%s]]</td><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%s</td><td>%d</td></tr>\n',
            status:lower(), -- Status als CSS-Klasse in Kleinbuchstaben
            projectLink, projectName,
            gameLink, gameName,
            table.concat(playerLinks, ", "),
            status,
            truncatedDescription,
            episodeCount
        )

        if status == "Laufend" then
            table.insert(runningProjects, projectRow)
        else
            table.insert(otherProjects, projectRow)
        end
    end

    -- Laufende Projekte zuerst anzeigen
    for _, row in ipairs(runningProjects) do
        output = output .. row
    end

    -- Andere Projekte anzeigen
    for _, row in ipairs(otherProjects) do
        output = output .. row
    end

    output = output .. '</table>\n'
    return output
end

return overview