|
1 | 1 | <script> |
2 | 2 | export let invigilatorID; |
3 | 3 | export let dayIndex; |
4 | | - import { invigilations, refetchInvigilator, fetchInvigilations } from "../../stores/invigilation.js"; |
| 4 | +
|
| 5 | + import { onMount } from "svelte"; |
| 6 | + import { |
| 7 | + invigilations, |
| 8 | + refetchInvigilator, |
| 9 | + fetchInvigilations |
| 10 | + } from "../../stores/invigilation.js"; |
5 | 11 | let invigilator; |
6 | 12 | let want; |
7 | 13 | let can; |
8 | 14 | let notAvailable; |
| 15 | + let alreadyEnough; |
9 | 16 | let draggable; |
10 | 17 |
|
11 | | - refetchInvigilator.subscribe(id => { |
12 | | - if (id === invigilatorID) { |
13 | | - fetchInvigilations() |
14 | | - } |
15 | | - }) |
| 18 | + $: { |
| 19 | + invigilator = $invigilations[1].find(i => i.invigilatorID == invigilatorID); |
| 20 | + setInvigilatorDetails(invigilator, dayIndex); |
| 21 | + } |
16 | 22 |
|
17 | | - invigilations.subscribe(is => { |
18 | | - invigilator = is[1].find(i => i.invigilatorID == invigilatorID); |
| 23 | + function setInvigilatorDetails(invigilator) { |
19 | 24 | want = |
20 | 25 | invigilator !== null && |
21 | 26 | invigilator !== undefined && |
22 | | - (invigilator.invigilatorWantDays.includes(dayIndex) |
23 | | - || invigilator.invigilatorInvigilationDays.includes(dayIndex)) |
24 | | - ; |
25 | | - can = !want && |
| 27 | + (invigilator.invigilatorWantDays.includes(dayIndex) || |
| 28 | + invigilator.invigilatorInvigilationDays.includes(dayIndex)); |
| 29 | + can = |
| 30 | + !want && |
26 | 31 | invigilator !== null && |
27 | 32 | invigilator !== undefined && |
28 | 33 | invigilator.invigilatorCanDays.includes(dayIndex); |
29 | | - notAvailable = |
30 | | - (!want && !can) || |
| 34 | + notAvailable = !want && !can; |
| 35 | + alreadyEnough = |
31 | 36 | invigilator.invigilatorMinutesTodo - |
32 | 37 | invigilator.invigilatorsMinutesPlanned < |
33 | | - 0; |
| 38 | + 0; |
34 | 39 | draggable = !notAvailable; |
| 40 | + } |
| 41 | +
|
| 42 | + refetchInvigilator.subscribe(id => { |
| 43 | + if (id === invigilatorID) { |
| 44 | + fetchInvigilations(); |
| 45 | + } |
| 46 | + }); |
| 47 | +
|
| 48 | + invigilations.subscribe(is => { |
| 49 | + invigilator = is[1].find(i => i.invigilatorID == invigilatorID); |
| 50 | + setInvigilatorDetails(invigilator); |
35 | 51 | }); |
36 | 52 |
|
37 | 53 | let dragged = false; |
|
64 | 80 | .can { |
65 | 81 | background-color: yellow; |
66 | 82 | } |
| 83 | + .alreadyEnough { |
| 84 | + background-color: orange; |
| 85 | + } |
67 | 86 | .notAvailable { |
68 | 87 | background-color: grey; |
69 | 88 | color: darkgrey; |
|
85 | 104 | class:dragged |
86 | 105 | class:want |
87 | 106 | class:can |
| 107 | + class:alreadyEnough |
88 | 108 | class:notAvailable |
89 | 109 | on:dragstart={dragStart} |
90 | 110 | on:dragend={dragEnd}> |
91 | | - <td> {invigilator.invigilatorName} </td> |
| 111 | + <td>{invigilator.invigilatorName} </td> |
92 | 112 | <td class="right"> |
93 | 113 | {invigilator.invigilatorMinutesTodo - invigilator.invigilatorsMinutesPlanned} |
94 | 114 |
|
|
0 commit comments