Zuletzt bearbeitet vor 2 Monaten
von Xineohp1506

Modul:LPON/ProjectOverview: Unterschied zwischen den Versionen

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


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


     -- Abfrage aller Projekte
     -- Funktion zur Erstellung der Projektliste
     local query = "[[LPON:Typ::Projekt]]|?LPON:Title|?LPON:GameTitle|?LPON:Projekt|?LPON:Game|?LPON:Spieler|?LPON:Description"
     local function generateProjectList(status)
    local queryResult = mw.smw.getQueryResult(query)
        local query = string.format("[[LPON:Typ::Projekt]][[LPON:Status::%s]]|?LPON:Title|?LPON:GameTitle|?LPON:Projekt|?LPON:Game|?LPON:Spieler|?LPON:Description", status)
        local queryResult = mw.smw.getQueryResult(query)


    if not queryResult or not queryResult.results then
        if not queryResult or not queryResult.results then
        return "Keine Projekte gefunden."
            return string.format("<p>Keine %s Projekte gefunden.</p>\n", status)
    end
        end
 
        local listOutput = '<table class="lpnon-project-overview-table">\n'
        listOutput = listOutput .. '<tr><th>Projekt</th><th>Spiel</th><th>Spieler</th><th>Beschreibung</th><th>Episodenanzahl</th></tr>\n'
 
        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 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 gameLink = result.printouts["LPON:Game"] and result.printouts["LPON:Game"][1] or gameName
 
            -- Spieler mit Links
            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


    for _, result in ipairs(queryResult.results) do
            -- Beschreibung gekürzt
        -- Projektname und Link
            local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
        local projectName = result.printouts["LPON:Title"] and result.printouts["LPON:Title"][1] or "Unbekannt"
            local truncatedDescription = helper.cleanAndTruncate(description, 200)
        local projectLink = result.printouts["LPON:Projekt"] and result.printouts["LPON:Projekt"][1] or projectName


        -- Spielname und Link
            -- Episodenanzahl
        local gameName = result.printouts["LPON:GameTitle"] and result.printouts["LPON:GameTitle"][1] or "Unbekannt"
            local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", projectLink)
        local gameLink = result.printouts["LPON:Game"] and result.printouts["LPON:Game"][1] or gameName
            local episodeResult = mw.smw.getQueryResult(episodeQuery)
            local episodeCount = episodeResult and #episodeResult.results or 0


        -- Spieler mit Links
            -- Zeile hinzufügen
        local players = result.printouts["LPON:Spieler"] or {}
            listOutput = listOutput .. string.format(
        local playerLinks = {}
                '<tr><td>[[%s|%s]]</td><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%d</td></tr>\n',
        for _, player in ipairs(players) do
                projectLink, projectName,
            table.insert(playerLinks, string.format("[[LetsPlayOrNot:%s|%s]]", player, player))
                gameLink, gameName,
                table.concat(playerLinks, ", "),
                truncatedDescription,
                episodeCount
            )
         end
         end


         -- Beschreibung gekürzt
         listOutput = listOutput .. '</table>\n'
        local description = result.printouts["LPON:Description"] and result.printouts["LPON:Description"][1] or "Keine Beschreibung verfügbar"
         return listOutput
         local truncatedDescription = helper.cleanAndTruncate(description, 200)
    end


        -- Episodenanzahl
    -- Laufende Projekte
        local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", projectName)
    output = output .. "<h2>Laufende Projekte</h2>\n"
        local episodeCount = mw.smw.getQueryResult(episodeQuery)
    output = output .. generateProjectList("laufend")
        episodeCount = episodeCount and #episodeCount.results or 0


        -- Zeile hinzufügen
    -- Beendete Projekte
        output = output .. string.format(
    output = output .. "<h2>Beendete Projekte</h2>\n"
            '<tr><td>[[%s|%s]]</td><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%d</td></tr>\n',
    output = output .. generateProjectList("beendet")
            projectLink, projectName,
            gameLink, gameName,
            table.concat(playerLinks, ", "),
            truncatedDescription,
            episodeCount
        )
    end


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


return overview
return overview

Version vom 20. Dezember 2024, 22:49 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

    local output = ""

    -- Funktion zur Erstellung der Projektliste
    local function generateProjectList(status)
        local query = string.format("[[LPON:Typ::Projekt]][[LPON:Status::%s]]|?LPON:Title|?LPON:GameTitle|?LPON:Projekt|?LPON:Game|?LPON:Spieler|?LPON:Description", status)
        local queryResult = mw.smw.getQueryResult(query)

        if not queryResult or not queryResult.results then
            return string.format("<p>Keine %s Projekte gefunden.</p>\n", status)
        end

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

        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 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 gameLink = result.printouts["LPON:Game"] and result.printouts["LPON:Game"][1] or gameName

            -- Spieler mit Links
            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

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

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

            -- Zeile hinzufügen
            listOutput = listOutput .. string.format(
                '<tr><td>[[%s|%s]]</td><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%d</td></tr>\n',
                projectLink, projectName,
                gameLink, gameName,
                table.concat(playerLinks, ", "),
                truncatedDescription,
                episodeCount
            )
        end

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

    -- Laufende Projekte
    output = output .. "<h2>Laufende Projekte</h2>\n"
    output = output .. generateProjectList("laufend")

    -- Beendete Projekte
    output = output .. "<h2>Beendete Projekte</h2>\n"
    output = output .. generateProjectList("beendet")

    return output
end

return overview