svwahl.svelte 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <div class="columns">
  2. <div class="column is-two-thirds">
  3. {#each Object.entries(schueler) as [klasse, schuelers]}
  4. <h3 class="title">{klasse}</h3>
  5. <table class="table is-striped">
  6. <thead>
  7. <tr>
  8. <th>Name</th>
  9. <th>Vorname</th>
  10. <th>Wahlstatus</th>
  11. </tr>
  12. </thead>
  13. <tbody>
  14. {#each schuelers as s,i}
  15. <tr>
  16. <td>{s.Name}</td>
  17. <td>{s.Vorname}</td>
  18. <td class:has-background-success={s.schuko||s.sprecher}>
  19. Schuko: <input checked={s.schuko} type="checkbox" on:click={()=>check_aktiv(s, 'schuko')}>
  20. Sprecher: <input checked={s.sprecher} type="checkbox" on:click={()=>check_aktiv(s, 'sprecher')}>
  21. gewählt: <input checked={s.gewaehlt} type="checkbox" on:click={()=>check_aktiv(s, 'gewaehlt')}>
  22. wählbar: <input checked={s.waehlbar} type="checkbox" on:click={()=>check_aktiv(s, 'waehlbar')}>
  23. </td>
  24. </tr>
  25. {/each}
  26. </tbody>
  27. </table>
  28. {/each}
  29. </div>
  30. </div>
  31. <script>
  32. export let schueler, privat, einstellungen = {}
  33. const { Pool } = R('pg')
  34. const pool = new Pool({ connectionString: privat.mein_bk_db})
  35. const check_aktiv = async (s, art) => {
  36. console.log(s)
  37. const query = `INSERT INTO schueler(id, ${art}, vorname, klasse)
  38. VALUES($1, $2, $3, $4)
  39. ON CONFLICT (id) DO
  40. UPDATE SET ${art}=$2
  41. WHERE schueler.id=$1
  42. RETURNING ${art}`
  43. const values=[s.id, !s[art], s.Vorname, s.Klasse]
  44. try {
  45. const res = await pool.query(query, values)
  46. console.log(res)
  47. const data = res.rows[0]
  48. s[art] = data[art]
  49. schueler = schueler
  50. } catch(err) {
  51. console.log(err.stack)
  52. }
  53. }
  54. </script>