einstellungen.svelte 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <div class="box">
  2. <h3 class="title">Projektwoche</h3>
  3. <div class="field">
  4. <label class="checkbox">
  5. <input type="checkbox" bind:checked={prowo_anzeigen}>
  6. Projektwochen-Seite anzeigen
  7. </label>
  8. </div>
  9. <div class="field is-horizontal">
  10. <div class="field-body">
  11. <div class="field">
  12. <p class="control is-expanded has-icons-left">
  13. <label class="label is-small">Beginn der Prowo-Wahl</label>
  14. <input type="datetime-local" bind:value={wahlbeginn_prowo} class="input is-small">
  15. </p>
  16. </div>
  17. <div class="field">
  18. <p class="control is-expanded has-icons-left">
  19. <label class="label is-small">Ende der Prowo-Wahl</label>
  20. <input type="datetime-local" bind:value={wahlende_prowo} class="input is-small">
  21. </p>
  22. </div>
  23. </div>
  24. </div>
  25. <div class="field">
  26. <p class="control is-expanded has-icons-left">
  27. <label class="label is-small">Thema der Prowo</label>
  28. <input type="text" bind:value={thema_prowo} class="input is-expanded is-small">
  29. </p>
  30. </div>
  31. <div class="field">
  32. <button class="is-small button is-default" on:click={changeDate_prowo}> Wahlzeitraum ändern </button>
  33. {#if check_prowo}<span class="tag is-success">✓</span>{/if}
  34. </div>
  35. </div>
  36. <div class="box">
  37. <h3 class="title">SV-Wahl</h3>
  38. <div class="field">
  39. <label class="checkbox">
  40. <input type="checkbox" bind:checked={sv_anzeigen}>
  41. SV-Seite anzeigen
  42. </label>
  43. </div>
  44. <div class="field is-horizontal">
  45. <div class="field-body">
  46. <div class="field">
  47. <p class="control is-expanded has-icons-left">
  48. <label class="label is-small">Beginn der SV-Wahl</label>
  49. <input type="datetime-local" bind:value={wahlbeginn_sv} class="input is-small">
  50. </p>
  51. </div>
  52. <div class="field">
  53. <p class="control is-expanded has-icons-left">
  54. <label class="label is-small">Ende der SV-Wahl</label>
  55. <input type="datetime-local" bind:value={wahlende_sv} class="input is-small">
  56. </p>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="field">
  61. <p class="control is-expanded has-icons-left">
  62. <label class="label is-small">Datum der ersten Schulkonferenz</label>
  63. <input type="datetime-local" bind:value={erste_schuko} class="input is-small">
  64. </p>
  65. </div>
  66. <div class="field">
  67. <button class="is-small button is-default" on:click={changeDate_sv}> Wahlzeitraum ändern </button>
  68. {#if check_sv}<span class="tag is-success">✓</span>{/if}
  69. </div>
  70. </div>
  71. <div class="box">
  72. <h3 class="title">Datenbank zurücksetzen</h3>
  73. <div class="field">
  74. <button class="button is-danger" on:click={db_reset}>Die Datenbank vollständig zurücksetzen</button>
  75. {#if check_db}<span class="tag is-success">✓</span>{/if}
  76. </div>
  77. </div>
  78. <script>
  79. export let schueler, privat, einstellungen = {}
  80. let check_sv, check_prowo, check_db
  81. const { Pool } = R('pg')
  82. const pool = new Pool({ connectionString: privat.mein_bk_db})
  83. let sv_anzeigen = einstellungen.sv_anzeigen
  84. let prowo_anzeigen = einstellungen.prowo_anzeigen
  85. let wahlbeginn_prowo = setDateTime(einstellungen.wahlbeginn_prowo)
  86. let wahlende_prowo = setDateTime(einstellungen.wahlende_prowo)
  87. let thema_prowo = einstellungen.thema_prowo || ''
  88. let wahlbeginn_sv = setDateTime(einstellungen.wahlbeginn_sv)
  89. let wahlende_sv = setDateTime(einstellungen.wahlende_sv)
  90. let erste_schuko = setDateTime(einstellungen.erste_schuko)
  91. $: pool.query(`UPDATE einstellungen SET prowo_anzeigen=$1`, [prowo_anzeigen])
  92. $: pool.query(`UPDATE einstellungen SET sv_anzeigen=$1`, [sv_anzeigen])
  93. const changeDate_prowo = async _ => {
  94. const query = `UPDATE einstellungen
  95. SET wahlbeginn_prowo=$1, wahlende_prowo=$2, thema_prowo=$3
  96. RETURNING wahlbeginn_prowo, wahlende_prowo, thema_prowo`
  97. const values = [new Date(wahlbeginn_prowo), new Date(wahlende_prowo), thema_prowo]
  98. try {
  99. const res = await pool.query(query, values)
  100. const data = res.rows[0]
  101. console.log(res)
  102. einstellungen.wahlbeginn_prowo = data.wahlbeginn_prowo
  103. einstellungen.wahlende_prowo = data.wahlende_prowo
  104. einstellungen.thema_prowo = data.thema_prowo
  105. einstellungen = einstellungen
  106. check_prowo = true
  107. } catch(err) {
  108. console.log(err.stack)
  109. }
  110. }
  111. const changeDate_sv = async _ => {
  112. const query = `UPDATE einstellungen
  113. SET wahlbeginn_sv=$1, wahlende_sv=$2, erste_schuko=$3
  114. RETURNING wahlbeginn_sv, wahlende_sv, erste_schuko`
  115. const values=[new Date(wahlbeginn_sv), new Date(wahlende_sv), new Date(erste_schuko)]
  116. try {
  117. const res = await pool.query(query, values)
  118. const data = res.rows[0]
  119. einstellungen.wahlbeginn_sv = data.wahlbeginn_sv
  120. einstellungen.wahlende_sv = data.wahlende_sv
  121. einstellungen.erste_schuko = data.erste_schuko
  122. einstellungen = einstellungen
  123. check_sv = true
  124. } catch(err) {
  125. console.log(err.stack)
  126. }
  127. }
  128. const db_reset = async _ => {
  129. const query = `BEGIN;
  130. DELETE FROM schueler;
  131. DELETE FROM wahlen;
  132. DELETE FROM klassen;
  133. DELETE FROM lehrer;
  134. DELETE FROM sprecher;
  135. DELETE FROM schuko;
  136. DELETE FROM verbindungslehrer;
  137. DELETE FROM wlan;
  138. DELETE FROM infos;
  139. COMMIT;`
  140. // DELETE FROM projekte,
  141. // DELETE FROM einstellungen,
  142. try {
  143. const res = await pool.query(query)
  144. check_db = true
  145. } catch(err) {
  146. console.log(err.stack)
  147. }
  148. }
  149. function setDateTime (date) {
  150. if (!date) return
  151. const d = new Date(date)
  152. return d.toISOString().replace('Z','')
  153. };
  154. </script>