Select Git revision
guidelines_services.md
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
rendering.ts 6.97 KiB
import { Resolution } from "./parsing";
export function renderResolutionToHtml(resolution: any): string {
return `<div class="card mb-3 text-center" id="${resolution.number}">
<div class="card-header" >Beschluss <code>${
resolution.number
}</code></div>
<div class="card-body">
<h5 class="card-title"></h5>
<p class="card-text">${resolution.text}</p>
<div class="container container-sm">
<div class="row align-items-center">
<div class="col">
<span class="p-1 border-bottom border-success border-2">
Ja: ${resolution.votes.yes}
</span>
</div>
<div class="col">
<span class="p-1 border-bottom border-danger border-2">
Nein: ${resolution.votes.no}
</span>
</div>
<div class="col">
<span class="p-1 border-bottom border-info border-2">
Enthaltung: ${resolution.votes.abstention}
</span>
</div>
</div>
</div>
</div>
<div class="card-footer ${
resolution.result === "Angenommen" ? "bg-success" : "bg-danger"
} bg-opacity-25">
${resolution.result}
</div>
</div>`;
}
export function renderTranscriptPageHtml(
transcriptHtml: string,
meta: any
): string {
return `<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>${meta.title}</title>
<link href="../bootstrap.min.css" rel="stylesheet">
<style>
div:target {
border-width: 0.4rem;
border-color: #f4c4aa;
scroll-margin-top: 4rem;
}
</style>
</head>
<body class="bg-body">
<div>
<header>
<nav class="navbar navbar-expand bg-body-tertiary">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="..">Protokolle</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../resolutions.html">Beschlüsse</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://gitlab.fachschaften.org/search?group_id=29&project_id=77&repository_ref=master&scope=blobs&search=">Suche</a>
</li>
</ul>
</nav>
</header>
</div>
<div class="container mt-2 mb-2">
<div class="bg-body-tertiary">
<article class="p-4">
${transcriptHtml}
</article>
</div>
</div>
</body>
</html>`;
}
export function generateIndexHtml(
parseResults: { meta: any; html: string; ast: any }[]
): string {
return `<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FSR-Protokolle</title>
<link href="./bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="">
<header>
<nav class="navbar navbar-expand bg-body-tertiary">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Protokolle</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./resolutions.html">Beschlüsse</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://gitlab.fachschaften.org/search?group_id=29&project_id=77&repository_ref=master&scope=blobs&search=">Suche</a>
</li>
</ul>
</nav>
</header>
</div>
<div class="container mt-2 mb-2">
<ul>
${parseResults
.map(
(t) =>
`<li><a href="./fsr-sitzung-${t.meta.number}-${t.meta.date}">FSR-Sitzung ${t.meta.number} (${t.meta.date})</a></li>`
)
.join("\n")}
</ul>
</div>
</body>
</html>`;
}
export function generateResolutionsHtml(
transcripts: { meta: any; html: string; ast: any }[]
): string {
return `<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FSR-Protokolle</title>
<link href="./bootstrap.min.css" rel="stylesheet">
<style>
tr:target {
border-width: 0.4rem;
border-color: #f4c4aa;
scroll-margin-top: 4rem;
}
</style>
</head>
<body>
<div class="">
<header>
<nav class="navbar navbar-expand bg-body-tertiary">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="./index.html">Protokolle</a>
<i class="fa fa-link"></i> </li>
<li class="nav-item">
<a class="nav-link" href="#">Beschlüsse</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://gitlab.fachschaften.org/search?group_id=29&project_id=77&repository_ref=master&scope=blobs&search=">Suche</a>
</li>
</ul>
</nav>
</header>
</div>
<div class="container mt-2 mb-2">
<table class="table">
<thead>
<tr>
<th>
Datum
</th>
<th>
Nummer
</th>
<th>
Text
</th>
<th>
Ja/Nein/Enth.
</th>
<th>
Ergebnis
</th>
<th>
⚓️
</th>
</tr>
</thead>
<tbody>
${transcripts
.map((t) =>
t.meta.resolutions.map((r: Resolution) =>
generateResolutionRowHtml(r)
)
)
.flat()
.join("\n")}
</tbody>
</table>
</div>
</body>
</html>`;
}
function generateResolutionRowHtml(resolution: Resolution): string {
return `<tr id="${resolution.number}">
<td>
${resolution.date}
</td>
<td>
<a href="./fsr-sitzung-${resolution.number.split(".")[0]}-${
resolution.date
}/#${resolution.number}">
${resolution.number}
</a>
</td>
<td>
${resolution.text}
</td>
<td>
${resolution.votes.yes} / ${resolution.votes.no} / ${
resolution.votes.abstention
}
</td>
<td>
${resolution.result}
</td>
<td>
<a href="#${resolution.number}">
🔗
</a>
</td>
</tr>`;
}