projektwoche-drucksache.svelte 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <div class="page" orientation="portrait" size="A4">
  2. <div class="main">
  3. <b>Raumwünsche</b>
  4. <dl>
  5. {#each projekte as p}
  6. {#if p.raumwunsch || p.medienwunsch || p.info_an_organisationsteam}
  7. <dt class="has-text-weight-bold">{p.id} – {p.titel}</dt>
  8. {#if p.raumwunsch}<dd>Raumwunsch: {p.raumwunsch}</dd>{/if}
  9. {#if p.medienwunsch}<dd>Medienwunsch: {p.medienwunsch}</dd>{/if}
  10. {#if p.info_an_organisationsteam}<dd>Info: {p.info_an_organisationsteam}</dd>{/if}
  11. {/if}
  12. {/each}
  13. </dl>
  14. </div>
  15. </div>
  16. {#each projekte as p}
  17. <div class="page" orientation="portrait" size="A4">
  18. <div class="main">
  19. <h4>{p.titel}</h4>
  20. <b>Das Projekt findet statt: {p.woche ? 'Montag bis Donnerstag':''}{p.mo_di ? 'Montag und Dienstag':''} {p.mo_di && p.mi_do ? '|':''} {p.mi_do ? 'Mittwoch und Donnerstag':''}</b>
  21. <dl>
  22. <dt class="has-text-weight-bold">Beschreibung</dt>
  23. <dd>{@html marked(p.beschreibung||'')}</dd>
  24. <dt class="has-text-weight-bold">Projektleitung</dt>
  25. <dd>{p.leitung}</dd>
  26. <dt class="has-text-weight-bold">Bildungsbeitrag</dt>
  27. <dd>{p.bildung}</dd>
  28. <dt class="has-text-weight-bold">Schulnähe</dt>
  29. <dd>Das Projekt findet <b>{p.schulnah ? '':'nicht'}</b> in der Schule oder näheren Umgebung der Schule statt</dd>
  30. <dt class="has-text-weight-bold">Projektort</dt>
  31. <dd>{p.ort}</dd>
  32. <dt class="has-text-weight-bold">Vortreffen</dt>
  33. <dd>Ein Vortreffen für dieses Projekt findet {p.vortreffen ? 'am Mittwoch XXX':'nicht'} statt.</dd>
  34. <dt class="has-text-weight-bold">Benötigtes Material</dt>
  35. <dd>{p.material || 'keines'}</dd>
  36. <dt class="has-text-weight-bold">Kostenbeitrag</dt>
  37. <dd>{p.kosten || 'keine'}</dd>
  38. </dl>
  39. </div>
  40. </div>
  41. {/each}
  42. <style>
  43. @import 'css/main.css';
  44. </style>
  45. <script>
  46. import marked from 'marked'
  47. export let privat
  48. let projekte = []
  49. let pp
  50. let modal = false
  51. const { Pool } = R('pg')
  52. const _ = R('lodash')
  53. const pool = new Pool({ connectionString: privat.mein_bk_db})
  54. function projekte_laden () {
  55. pool.query(`SELECT *,
  56. (SELECT COUNT(*)
  57. FROM wahlen
  58. WHERE projekte.id = wahlen.woche
  59. ) as gewaehlt_woche,
  60. (SELECT COUNT(*)
  61. FROM wahlen
  62. WHERE projekte.id = wahlen.mo_di
  63. ) as gewaehlt_mo_di,
  64. (SELECT COUNT(*)
  65. FROM wahlen
  66. WHERE projekte.id = wahlen.mi_do
  67. ) as gewaehlt_mi_do
  68. FROM projekte`,
  69. (err, resp) => projekte = resp.rows)
  70. }
  71. projekte_laden()
  72. function modal_toggle (p) {
  73. pp = p
  74. modal = true
  75. }
  76. function loeschen (p) {
  77. const query = `DELETE FROM projekte
  78. WHERE id = $1`
  79. pool.query(query, [p.id], (err, res) => {
  80. if (err) {
  81. console.log(err)
  82. return
  83. }
  84. projekte = projekte.filter(pp => pp !== p)
  85. })
  86. }
  87. function speichern (pp) {
  88. const query = `UPDATE projekte
  89. SET (titel, leitung, beschreibung, bildung, max_teilnehmer,
  90. schulnah, ort, treffpunkt, woche, mo_di, mi_do, vortermin,
  91. material, kosten, info_an_organisationsteam, raumwunsch,
  92. medienwunsch, presi) = ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18)
  93. WHERE projekte.id = $19
  94. RETURNING *`
  95. const value = [pp.titel, pp.leitung, pp.beschreibung, pp.bildung, pp.max_teilnehmer,
  96. pp.schulnah, pp.ort, pp.treffpunkt, pp.woche, pp.mo_di, pp.mi_do, pp.vortermin,
  97. pp.material, pp.kosten, pp.info_an_organisationsteam, pp.raumwunsch,
  98. pp.medienwunsch, pp.presi,
  99. pp.id]
  100. pool.query(query, value, (err, res) => {
  101. err && console.log(err)
  102. pp = res[0]
  103. projekte = projekte
  104. modal = false
  105. })
  106. }
  107. </script>