Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 7: | Zeile 7: | ||
end | end | ||
local output | local output = "" | ||
-- | -- 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 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 | 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 | 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