fix: lege tabellen bevatten boodschap

This commit is contained in:
laurejablonski 2025-05-10 11:10:36 +02:00
parent aedb47247c
commit 3c3f28497e
4 changed files with 184 additions and 176 deletions

View file

@ -6,6 +6,46 @@ h1 {
padding-left: 1%; padding-left: 1%;
} }
.empty-message {
text-align: center;
font-size: 20px;
}
.header {
font-weight: bold !important;
background-color: #0e6942;
color: white;
padding: 10px;
}
table thead th:first-child {
border-top-left-radius: 10px;
}
.table thead th:last-child {
border-top-right-radius: 10px;
}
.table tbody tr:nth-child(odd) {
background-color: white;
}
.table tbody tr:nth-child(even) {
background-color: #f6faf2;
}
td,
th {
border-bottom: 1px solid #0e6942;
border-top: 1px solid #0e6942;
}
.table {
width: 90%;
padding-top: 10px;
border-collapse: collapse;
}
@media screen and (max-width: 850px) { @media screen and (max-width: 850px) {
h1 { h1 {
text-align: center; text-align: center;

View file

@ -13,7 +13,7 @@
import { useCreateTeacherInvitationMutation } from "@/queries/teacher-invitations"; import { useCreateTeacherInvitationMutation } from "@/queries/teacher-invitations";
import type { TeacherInvitationData } from "@dwengo-1/common/interfaces/teacher-invitation"; import type { TeacherInvitationData } from "@dwengo-1/common/interfaces/teacher-invitation";
import { useDisplay } from "vuetify"; import { useDisplay } from "vuetify";
import '../../assets/common.css' import "../../assets/common.css";
const { t } = useI18n(); const { t } = useI18n();
@ -212,19 +212,34 @@
<th class="header"></th> <th class="header"></th>
</tr> </tr>
</thead> </thead>
<tbody>
<tbody v-if="studentsResponse.data.students.length">
<tr <tr
v-for="s in studentsResponse.data.students as StudentDTO[]" v-for="s in studentsResponse.data.students as StudentDTO[]"
:key="s.id" :key="s.id"
> >
<td> <td>{{ s.firstName + " " + s.lastName }}</td>
{{ s.firstName + " " + s.lastName }}
</td>
<td> <td>
<v-btn @click="showPopup(s)">{{ t("remove") }}</v-btn> <v-btn @click="showPopup(s)">{{ t("remove") }}</v-btn>
</td> </td>
</tr> </tr>
</tbody> </tbody>
<tbody v-else>
<tr>
<td
colspan="2"
class="empty-message"
>
<v-icon
icon="mdi-information-outline"
size="small"
>
</v-icon>
{{ t("no-students-found") }}
</td>
</tr>
</tbody>
</v-table> </v-table>
</v-col> </v-col>
<using-query-result <using-query-result
@ -243,7 +258,7 @@
<th class="header">{{ t("accept") + "/" + t("reject") }}</th> <th class="header">{{ t("accept") + "/" + t("reject") }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody v-if="joinRequests.data.joinRequests.length">
<tr <tr
v-for="jr in joinRequests.data.joinRequests as ClassJoinRequestDTO[]" v-for="jr in joinRequests.data.joinRequests as ClassJoinRequestDTO[]"
:key="(jr.class, jr.requester, jr.status)" :key="(jr.class, jr.requester, jr.status)"
@ -288,6 +303,21 @@
</td> </td>
</tr> </tr>
</tbody> </tbody>
<tbody v-else>
<tr>
<td
colspan="2"
class="empty-message"
>
<v-icon
icon="mdi-information-outline"
size="small"
>
</v-icon>
{{ t("no-join-requests-found") }}
</td>
</tr>
</tbody>
</v-table> </v-table>
</v-col> </v-col>
</using-query-result> </using-query-result>
@ -357,41 +387,6 @@
</main> </main>
</template> </template>
<style scoped> <style scoped>
.header {
font-weight: bold !important;
background-color: #0e6942;
color: white;
padding: 10px;
}
table thead th:first-child {
border-top-left-radius: 10px;
}
.table thead th:last-child {
border-top-right-radius: 10px;
}
.table tbody tr:nth-child(odd) {
background-color: white;
}
.table tbody tr:nth-child(even) {
background-color: #f6faf2;
}
td,
th {
border-bottom: 1px solid #0e6942;
border-top: 1px solid #0e6942;
}
.table {
width: 90%;
padding-top: 10px;
border-collapse: collapse;
}
h2 { h2 {
color: #0e6942; color: #0e6942;
font-size: 30px; font-size: 30px;
@ -411,7 +406,6 @@
} }
@media screen and (max-width: 800px) { @media screen and (max-width: 800px) {
.join { .join {
text-align: center; text-align: center;
align-items: center; align-items: center;

View file

@ -12,7 +12,7 @@
import { useClassStudentsQuery, useClassTeachersQuery } from "@/queries/classes"; import { useClassStudentsQuery, useClassTeachersQuery } from "@/queries/classes";
import type { StudentsResponse } from "@/controllers/students"; import type { StudentsResponse } from "@/controllers/students";
import type { TeachersResponse } from "@/controllers/teachers"; import type { TeachersResponse } from "@/controllers/teachers";
import '../../assets/common.css' import "../../assets/common.css";
const { t } = useI18n(); const { t } = useI18n();
@ -162,7 +162,7 @@
<th class="header">{{ t("members") }}</th> <th class="header">{{ t("members") }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody v-if="classResponse.data.classes.length">
<tr <tr
v-for="c in classResponse.data.classes as ClassDTO[]" v-for="c in classResponse.data.classes as ClassDTO[]"
:key="c.id" :key="c.id"
@ -182,6 +182,21 @@
</td> </td>
</tr> </tr>
</tbody> </tbody>
<tbody v-else>
<tr>
<td
colspan="3"
class="empty-message"
>
<v-icon
icon="mdi-information-outline"
size="small"
>
</v-icon>
{{ t("no-classes-found") }}
</td>
</tr>
</tbody>
</v-table> </v-table>
</v-col> </v-col>
</v-row> </v-row>
@ -272,41 +287,6 @@
</main> </main>
</template> </template>
<style scoped> <style scoped>
.header {
font-weight: bold !important;
background-color: #0e6942;
color: white;
padding: 10px;
}
table thead th:first-child {
border-top-left-radius: 10px;
}
.table thead th:last-child {
border-top-right-radius: 10px;
}
.table tbody tr:nth-child(odd) {
background-color: white;
}
.table tbody tr:nth-child(even) {
background-color: #f6faf2;
}
td,
th {
border-bottom: 1px solid #0e6942;
border-top: 1px solid #0e6942;
}
.table {
width: 90%;
padding-top: 10px;
border-collapse: collapse;
}
h2 { h2 {
color: #0e6942; color: #0e6942;
font-size: 30px; font-size: 30px;

View file

@ -15,7 +15,7 @@
useTeacherInvitationsReceivedQuery, useTeacherInvitationsReceivedQuery,
} from "@/queries/teacher-invitations"; } from "@/queries/teacher-invitations";
import { useDisplay } from "vuetify"; import { useDisplay } from "vuetify";
import '../../assets/common.css' import "../../assets/common.css";
const { t } = useI18n(); const { t } = useI18n();
@ -213,7 +213,7 @@
<th class="header">{{ t("members") }}</th> <th class="header">{{ t("members") }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody v-if="classesResponse.data.classes.length">
<tr <tr
v-for="c in classesResponse.data.classes as ClassDTO[]" v-for="c in classesResponse.data.classes as ClassDTO[]"
:key="c.id" :key="c.id"
@ -240,6 +240,21 @@
<td>{{ c.students.length }}</td> <td>{{ c.students.length }}</td>
</tr> </tr>
</tbody> </tbody>
<tbody v-else>
<tr>
<td
colspan="3"
class="empty-message"
>
<v-icon
icon="mdi-information-outline"
size="small"
>
</v-icon>
{{ t("no-classes-found") }}
</td>
</tr>
</tbody>
</v-table> </v-table>
</v-col> </v-col>
<v-col <v-col
@ -343,6 +358,7 @@
:query-result="allClassesQuery" :query-result="allClassesQuery"
v-slot="classesResponse: { data: ClassesResponse }" v-slot="classesResponse: { data: ClassesResponse }"
> >
<template v-if="invitationsResponse.data.invitations.length">
<tr <tr
v-for="i in invitationsResponse.data.invitations as TeacherInvitationDTO[]" v-for="i in invitationsResponse.data.invitations as TeacherInvitationDTO[]"
:key="i.classId" :key="i.classId"
@ -356,7 +372,9 @@
</td> </td>
<td> <td>
{{ {{
(i.sender as TeacherDTO).firstName + " " + (i.sender as TeacherDTO).lastName (i.sender as TeacherDTO).firstName +
" " +
(i.sender as TeacherDTO).lastName
}} }}
</td> </td>
<td class="text-right"> <td class="text-right">
@ -398,6 +416,22 @@
></span> ></span>
</td> </td>
</tr> </tr>
</template>
<template v-else>
<tr>
<td
colspan="3"
class="empty-message"
>
<v-icon
icon="mdi-information-outline"
size="small"
>
</v-icon>
{{ t("no-invitations-found") }}
</td>
</tr>
</template>
</using-query-result> </using-query-result>
</using-query-result> </using-query-result>
</tbody> </tbody>
@ -450,41 +484,6 @@
</main> </main>
</template> </template>
<style scoped> <style scoped>
.header {
font-weight: bold !important;
background-color: #0e6942;
color: white;
padding: 10px;
}
table thead th:first-child {
border-top-left-radius: 10px;
}
.table thead th:last-child {
border-top-right-radius: 10px;
}
.table tbody tr:nth-child(odd) {
background-color: white;
}
.table tbody tr:nth-child(even) {
background-color: #f6faf2;
}
td,
th {
border-bottom: 1px solid #0e6942;
border-top: 1px solid #0e6942;
}
.table {
width: 90%;
padding-top: 10px;
border-collapse: collapse;
}
h2 { h2 {
color: #0e6942; color: #0e6942;
font-size: 30px; font-size: 30px;
@ -503,7 +502,6 @@
} }
@media screen and (max-width: 850px) { @media screen and (max-width: 850px) {
.join { .join {
text-align: center; text-align: center;
align-items: center; align-items: center;
@ -526,10 +524,6 @@
flex-direction: column !important; flex-direction: column !important;
} }
.table {
width: 100%;
}
.responsive-col { .responsive-col {
max-width: 100% !important; max-width: 100% !important;
flex-basis: 100% !important; flex-basis: 100% !important;