Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
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 | ||
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 | ||
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 | ||
local players = result.printouts["LPON:Spieler"] or {} | local players = result.printouts["LPON:Spieler"] or {} | ||
local playerLinks = {} | local playerLinks = {} | ||
Zeile 34: | Zeile 36: | ||
end | end | ||
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) | ||
local status = result.printouts["LPON:Status"] and result.printouts["LPON:Status"][1] or "Unbekannt" | |||
local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", | |||
local | local episodeQuery = string.format("[[LPON:Projekt::%s]][[LPON:Typ::Episode]]", projectLink) | ||
episodeCount = | 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', | |||
'<tr><td>[[%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