projektwoche-drucksache.svelte 4.2 KB

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