+
Import Students
Import a large number of students to a class at once by pasting their names in the text box below, with one
student per line.
diff --git a/app/src/apps/classroom_compliance/MainView.vue b/app/src/apps/classroom_compliance/MainView.vue
index dcdaf4e..05c9074 100644
--- a/app/src/apps/classroom_compliance/MainView.vue
+++ b/app/src/apps/classroom_compliance/MainView.vue
@@ -21,7 +21,7 @@ async function downloadExport() {
}
-
+
diff --git a/app/src/apps/classroom_compliance/StudentEntriesList.vue b/app/src/apps/classroom_compliance/StudentEntriesList.vue
new file mode 100644
index 0000000..9c7823a
--- /dev/null
+++ b/app/src/apps/classroom_compliance/StudentEntriesList.vue
@@ -0,0 +1,33 @@
+
+
+
+
diff --git a/app/src/apps/classroom_compliance/StudentEntryItem.vue b/app/src/apps/classroom_compliance/StudentEntryItem.vue
index f94e1db..09ab503 100644
--- a/app/src/apps/classroom_compliance/StudentEntryItem.vue
+++ b/app/src/apps/classroom_compliance/StudentEntryItem.vue
@@ -1,13 +1,19 @@
-
{{ entry.date }}
+
{{ getFormattedDate() }}
{{ EMOJI_ABSENT }}
{{ EMOJI_PRESENT }}
diff --git a/app/src/apps/classroom_compliance/StudentView.vue b/app/src/apps/classroom_compliance/StudentView.vue
index d473498..f369536 100644
--- a/app/src/apps/classroom_compliance/StudentView.vue
+++ b/app/src/apps/classroom_compliance/StudentView.vue
@@ -4,7 +4,7 @@ import ConfirmDialog from '@/components/ConfirmDialog.vue'
import { useAuthStore } from '@/stores/auth'
import { onMounted, ref, useTemplateRef, type Ref } from 'vue'
import { useRouter } from 'vue-router'
-import StudentEntryItem from '@/apps/classroom_compliance/StudentEntryItem.vue'
+import StudentEntriesList from './StudentEntriesList.vue'
const props = defineProps<{
classId: string
@@ -53,43 +53,51 @@ async function deleteThisStudent() {
}
-
-
-
+
+
+
From
-
- - Internal ID:
- - Removed:
- - Desk number:
-
-
+
diff --git a/app/src/apps/classroom_compliance/entries_table/StudentScoreCell.vue b/app/src/apps/classroom_compliance/entries_table/StudentScoreCell.vue
index f33d7d2..90ffdb5 100644
--- a/app/src/apps/classroom_compliance/entries_table/StudentScoreCell.vue
+++ b/app/src/apps/classroom_compliance/entries_table/StudentScoreCell.vue
@@ -5,9 +5,9 @@ defineProps<{
-
+
{{ (score * 100).toFixed(1) }}%
- No score
+ No score
|
diff --git a/app/src/assets/base.css b/app/src/assets/base.css
index 1cf0291..0aa4088 100644
--- a/app/src/assets/base.css
+++ b/app/src/assets/base.css
@@ -1,6 +1,28 @@
+@font-face {
+ font-family: 'Open Sans';
+ src: url('@/assets/fonts/OpenSans.ttf');
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('@/assets/fonts/OpenSans-Italic.ttf');
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'SourceCodePro';
+ src: url('@/assets/fonts/SourceCodePro.ttf');
+}
+
+@font-face {
+ font-family: 'SourceCodePro';
+ src: url('@/assets/fonts/SourceCodePro-Italic.ttf');
+ font-style: italic;
+}
+
:root {
color-scheme: light dark;
- font-family: sans-serif;
+ font-family: 'Open Sans', sans-serif;
}
.button-bar {
@@ -12,10 +34,46 @@
margin-left: 0.5em;
}
+.align-left {
+ text-align: left;
+}
+
+.align-right {
+ text-align: right;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.centered-content {
+ max-width: 50ch;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+code {
+ font-family: 'SourceCodePro', monospace;
+ color: lime;
+}
+
+.text-mono {
+ font-family: 'SourceCodePro', monospace;
+}
+
label {
display: block;
}
+textarea {
+ font-family: 'SourceCodePro', monospace;
+ font-size: smaller;
+}
+
+button {
+ font-family: 'Open Sans', sans-serif;
+}
+
form > div + div {
margin-top: 0.5em;
}
@@ -25,3 +83,10 @@ form > div + div {
font-style: italic;
margin-top: 0.25em;
}
+
+.app-header {
+ text-align: center;
+}
+.app-header > h1 {
+ margin-bottom: 0.5em;
+}
diff --git a/app/src/assets/fonts/OpenSans-Italic.ttf b/app/src/assets/fonts/OpenSans-Italic.ttf
new file mode 100644
index 0000000..8312b2c
Binary files /dev/null and b/app/src/assets/fonts/OpenSans-Italic.ttf differ
diff --git a/app/src/assets/fonts/OpenSans.ttf b/app/src/assets/fonts/OpenSans.ttf
new file mode 100644
index 0000000..ac587b4
Binary files /dev/null and b/app/src/assets/fonts/OpenSans.ttf differ
diff --git a/app/src/assets/fonts/SourceCodePro-Italic.ttf b/app/src/assets/fonts/SourceCodePro-Italic.ttf
new file mode 100644
index 0000000..d3678bc
Binary files /dev/null and b/app/src/assets/fonts/SourceCodePro-Italic.ttf differ
diff --git a/app/src/assets/fonts/SourceCodePro.ttf b/app/src/assets/fonts/SourceCodePro.ttf
new file mode 100644
index 0000000..19bb671
Binary files /dev/null and b/app/src/assets/fonts/SourceCodePro.ttf differ
diff --git a/app/src/components/AppListItem.vue b/app/src/components/AppListItem.vue
new file mode 100644
index 0000000..8632b20
--- /dev/null
+++ b/app/src/components/AppListItem.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/app/src/components/ConfirmDialog.vue b/app/src/components/ConfirmDialog.vue
index 0bd520d..e255f6d 100644
--- a/app/src/components/ConfirmDialog.vue
+++ b/app/src/components/ConfirmDialog.vue
@@ -36,20 +36,10 @@ defineExpose({