svwahl.svelte 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. {#if s.info || s.nachname || s.email}
  24. <button class="button is-link tooltip" data-tooltip={`${s.info || ''} – ${s.Vorname} ${s.nachname || ''} – ${s.email || ''}`}>Infotext</button>
  25. {/if}
  26. </td>
  27. </tr>
  28. {/each}
  29. </tbody>
  30. </table>
  31. {/each}
  32. </div>
  33. </div>
  34. <script>
  35. export let schueler, privat, einstellungen = {}
  36. const { Pool } = R('pg')
  37. const pool = new Pool({ connectionString: privat.mein_bk_db})
  38. const check_aktiv = async (s, art) => {
  39. const query = `INSERT INTO schueler(id, ${art}, vorname, klasse)
  40. VALUES($1, $2, $3, $4)
  41. ON CONFLICT (id) DO
  42. UPDATE SET ${art}=$2
  43. WHERE schueler.id=$1
  44. RETURNING ${art}`
  45. const values=[s.id, !s[art], s.Vorname, s.Klasse]
  46. try {
  47. const res = await pool.query(query, values)
  48. const data = res.rows[0]
  49. s[art] = data[art]
  50. schueler = schueler
  51. } catch(err) {
  52. console.log(err.stack)
  53. }
  54. }
  55. </script>
  56. <style>
  57. @import './node_modules/bulma-tooltip/dist/css/bulma-tooltip.min.css';
  58. </style>