demo.html 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <div class="page grid" orientation="portrait" size="A4">
  2. <div class="main">
  3. <h1>schild.report Demo-Report</h1>
  4. Dieser Report verwendet ein Standard-CSS, das für die Druckausgabe optimiert
  5. ist. Es kann als Grundlage für alle Reports verwendet werden.
  6. Um eine Seite zu erstellen, reicht diese Vorlage:
  7. <pre>{html(`
  8. <div class="page grid" orientation="portrait" size="A4">
  9. <div class="header">
  10. <h2><center>Inhalt für den Kopfteil</center></h2>
  11. <hr>
  12. </div>
  13. <div class="main">
  14. <h3>Der Hauptteil der Seite</h3>
  15. </div>
  16. <div class="footer">
  17. <hr>
  18. <h2><center>Inhalt für den Fuß</center></h2>
  19. </div>
  20. </div>
  21. `)}</pre>
  22. </div>
  23. </div>
  24. <div class="page grid" orientation="portrait" size="A4">
  25. <div class="header">
  26. <h2><center>Inhalt für den Kopfteil</center></h2>
  27. <hr>
  28. </div>
  29. <div class="main">
  30. <h3>Der Hauptteil der Seite</h3>
  31. </div>
  32. <div class="footer">
  33. <hr>
  34. <h2><center>Inhalt für den Fuß</center></h2>
  35. </div>
  36. </div>
  37. <div class="page grid" orientation="portrait" size="A4">
  38. <div class="header"><h2><center>Nächste Seite</center></h2></div>
  39. <div class="main">
  40. <h3>Im Folgenden gibt es weitere Beispiele zur Anwendung der Reports</h3>
  41. Wenn man Schülerdaten in einer Schleife ausgeben möchte, greift man auf Svelte
  42. zurück, das diese Funktion komfortabel zur Verfügung stellt. Auf den nächsten Seiten
  43. werden verschiedene Möglichkeiten demonstriert. Um herauszufinden, wie der Inhalt
  44. erzeugt wird, bitte im Vorlagenverzeichnis das dokumentierte <code>demo.html</code> Dokument
  45. öffnen und zum Testen gerne auch ändern. Die Änderungen, sofern keine Fehler
  46. eingebaut werden, werden automatisch nach dem Speichern angezeigt.
  47. </div>
  48. <div class="footer"><h2><center>Inhalt für den Fuß</center></h2></div>
  49. </div>
  50. <div class="page grid" orientation="portrait" size="A4">
  51. <!-- Pageheader ist eine Svelte-Komponente, die unter ./partials abgelegt ist und im
  52. script-Bereich dieses Dokuments registriert wurde. -->
  53. <Pageheader logo="daten/top_dummy.svg"/>
  54. <div class="main">
  55. In der Klasse sind <b>{schueler.length}</b> Schülerinnen und Schüler.
  56. <br>D.h. {schueler.filter(s => s.Geschlecht === 3).length} Schüler und
  57. {schueler.filter(s => s.Geschlecht === 4).length} Schülerinnen
  58. <Voffset v="2"/>
  59. Hier nun die ersten 15:<br>
  60. <!-- Damit die Seite nicht mehr darstellt als auf ein A4-Papier passt, werden nur
  61. die ersten 15 Schüler (oder weniger) angezeigt. Mit {#each schueler as s} würden
  62. alle Schüler auf der Seite dargestellt werden.
  63. s ist der jeweilige Schüler und i die Position in der Liste: -->
  64. {#each schueler.slice(0,15) as s, i}
  65. {#each s.abschnitte.filter(aktHalbjahr) as hj}
  66. <b>{i+1}</b> {s.Name} ist {s.schueler_in} in der Klasse {s.Klasse} <br>
  67. {s.Geschlecht === 3 ? 'Er':'Sie'} befindet sich im Schuljahr {hj.Jahr} im {hj.Abschnitt} Halbjahr.<br>
  68. {/each}
  69. {/each}
  70. </div>
  71. </div>
  72. <script>
  73. export let schueler, schule, privat, jahr, abschnitt, page
  74. const aktHalbjahr = () => (a) => a.Jahr === jahr && a.Abschnitt === abschnitt
  75. const html = (text) => text
  76. import Pageheader from './partials/Pageheader.html'
  77. import Voffset from './partials/Voffset.html'
  78. </script>
  79. <style>
  80. @import 'css/main.css';
  81. </style>