|
@@ -1,28 +1,56 @@
|
|
|
-{#each Object.entries(schueler) as [klasse, schueler]}
|
|
|
- <h3 class="title">{klasse}</h3>
|
|
|
- <table class="table is-striped">
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th><abbr title="hashid">ID</abbr></th>
|
|
|
- <th>Name</th>
|
|
|
- <th>Vorname</th>
|
|
|
- <th>Projektwahl</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {#each schueler as s}
|
|
|
- <tr>
|
|
|
- <td>{s.hashid}</td>
|
|
|
- <td>{s.Name}</td>
|
|
|
- <td>{s.Vorname}</td>
|
|
|
- <td class={'has-background-'+wahl(s)} on:click={() => modalset(s)} style="cursor: pointer">
|
|
|
- {`Woche: ${s.woche || '–'} Mo/Di: ${s.mo_di || '–'} Mi/Do ${s.mi_do || '–'}`}
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- {/each}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
-{/each}
|
|
|
+<div class="columns">
|
|
|
+ <div class="column is-two-thirds">
|
|
|
+ {#each Object.entries(schueler) as [klasse, schuelers]}
|
|
|
+ <h3 class="title">{klasse}</h3>
|
|
|
+ <table class="table is-striped">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>ID</th>
|
|
|
+ <th>Name</th>
|
|
|
+ <th>Vorname</th>
|
|
|
+ <th>Projektwahl</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ {#each schuelers as s}
|
|
|
+ <tr>
|
|
|
+ <td>{s.hashid}</td>
|
|
|
+ <td>{s.Name}</td>
|
|
|
+ <td>{s.Vorname}</td>
|
|
|
+ <td class={'has-background-'+wahl(s)} on:click={() => modalset(s)} style="cursor: pointer">
|
|
|
+ {`Woche: ${s.woche == null ? '–' : s.woche} Mo/Di: ${s.mo_di == null ? '–' : s.mo_di} Mi/Do ${s.mi_do == null ? '–' : s.mi_do}`}
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ {/each}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ {/each}
|
|
|
+ </div>
|
|
|
+ <div class="column">
|
|
|
+ <h3 class="title">Klassen</h3>
|
|
|
+ <table class="table is-striped">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>Klasse</th>
|
|
|
+ <th>Woche</th>
|
|
|
+ <th>Mo/Di</th>
|
|
|
+ <th>Mi/Do</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ {#each klassen as k,i}
|
|
|
+ <tr>
|
|
|
+ <td>{k.klasse}</td>
|
|
|
+ <td class={`has-text-${k.abwesenheit === 0 ? 'danger':'success'}`} style="cursor: pointer;" on:click={() => switcher(i,0)}>{k.abwesenheit === 0 ? '✘':'✔'}</td>
|
|
|
+ <td class={`has-text-${k.abwesenheit === 1 ? 'danger':'success'}`} style="cursor: pointer;">{k.abwesenheit === 1 ? '✔':'✘'}</td>
|
|
|
+ <td class={`has-text-${k.abwesenheit === 2 ? 'danger':'success'}`} style="cursor: pointer;">{k.abwesenheit === 2 ? '✔':'✘'}</td>
|
|
|
+ </tr>
|
|
|
+ {/each}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
+
|
|
|
{#if modal_s}
|
|
|
<div class="modal" class:is-active={modal}>
|
|
|
<div class="modal-background"></div>
|
|
@@ -95,25 +123,26 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</section>
|
|
|
- <footer class="modal-card-foot background-is-info">
|
|
|
+ <footer class="modal-card-foot">
|
|
|
Änderungen sind sofort wirksam
|
|
|
</footer>
|
|
|
</div>
|
|
|
</div>
|
|
|
{/if}
|
|
|
|
|
|
+{@debug}
|
|
|
<script>
|
|
|
- export let schueler, klasse, privat
|
|
|
- let projekte = [], klassen = [], modal = false, modal_s, selected_woche, selected_mo_di, selected_mi_do
|
|
|
- const modalset = s => {
|
|
|
+ export let schueler, privat
|
|
|
+ let projekte = [];
|
|
|
+ let klassen = [];
|
|
|
+ let modal = false, modal_s, selected_woche, selected_mo_di, selected_mi_do;
|
|
|
+ function modalset (s) {
|
|
|
modal = true
|
|
|
modal_s=s
|
|
|
}
|
|
|
- $: console.log(modal_s)
|
|
|
const { Pool } = R('pg')
|
|
|
const pool = new Pool({ connectionString: privat.mein_bk_db})
|
|
|
import { onMount, onDestroy } from 'svelte';
|
|
|
- onMount(_ => {
|
|
|
pool.query(`SELECT id, titel, leitung, woche, mo_di, mi_do, max_teilnehmer,
|
|
|
(SELECT COUNT(*)
|
|
|
FROM wahlen
|
|
@@ -131,17 +160,13 @@
|
|
|
(err, resp) => projekte = resp.rows)
|
|
|
pool.query(`SELECT * FROM klassen`,
|
|
|
(err, resp) => klassen = resp.rows)
|
|
|
- })
|
|
|
- onDestroy(_ => {
|
|
|
- pool.end()
|
|
|
- })
|
|
|
function wahl (s) {
|
|
|
if (s.woche === s.mo_di && s.woche === s.mi_do) return 'danger'
|
|
|
else if (typeof(s.mo_di) !== typeof(s.mi_do)) return 'warning'
|
|
|
else if ([s.mo_di, s.mi_do, s.woche].includes(0)) return 'info'
|
|
|
else return 'success'
|
|
|
}
|
|
|
- const wahl_aendern = async e => {
|
|
|
+ async function wahl_aendern () {
|
|
|
const text = `INSERT INTO wahlen(schueler_hashid, woche, mo_di, mi_do)
|
|
|
VALUES($1, $2, $3, $4)
|
|
|
ON CONFLICT (schueler_hashid) DO
|
|
@@ -149,11 +174,17 @@
|
|
|
RETURNING *`
|
|
|
const values = [modal_s.hashid, selected_woche, selected_mo_di, selected_mi_do]
|
|
|
try {
|
|
|
- const res = await pool.query(text, values)
|
|
|
- modal_s = Object.assign(modal_s, res.rows[0])
|
|
|
- console.log('modal_s ändert sich:', modal_s)
|
|
|
+ await pool.query(text, values)
|
|
|
} catch(err) {
|
|
|
console.log(err.stack)
|
|
|
}
|
|
|
}
|
|
|
+ let update
|
|
|
+ async function switcher(i, id) {
|
|
|
+ // const klasse = klassen.find(x => x.klasse === k.klasse)
|
|
|
+ // klasse.abwesenheit = k.abwesenheit === null ? 4 : null
|
|
|
+ klassen[i].abwesenheit = id
|
|
|
+ klassen = klassen
|
|
|
+ console.log(klassen)
|
|
|
+ }
|
|
|
</script>
|