Skip to content
Snippets Groups Projects
Select Git revision
  • be1187e0fc14ec49ed078a5433a4efbcf3023e55
  • master default protected
  • 2017-12-11
  • v2
  • v1
5 results

guidelines_services.md

Blame
  • 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>`;
    }