aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/ActionBar.vue35
-rw-r--r--src/components/EditorLists.vue15
-rw-r--r--src/components/FileUpload.vue13
-rw-r--r--src/components/List.vue13
4 files changed, 41 insertions, 35 deletions
diff --git a/src/components/ActionBar.vue b/src/components/ActionBar.vue
index e50c791..bfe3cdb 100644
--- a/src/components/ActionBar.vue
+++ b/src/components/ActionBar.vue
@@ -11,40 +11,33 @@
</div>
</template>
-<script>
+<script lang="ts">
+import { defineComponent } from 'vue';
import FileUpload from '@/components/FileUpload.vue';
import { parseLabFile, parsePtSchedule } from '@/features/parser';
import UIButton from '@/components/UIButton.vue';
+import PeerTeacher from '@/models/PeerTeacher';
-export default {
+export default defineComponent({
name: 'ActionBar',
components: {
FileUpload,
UIButton,
},
methods: {
- handleLabChange(files) {
- parseLabFile(files[0])
- .then((data) => {
- this.$store.commit('importLabs', data);
- })
- .catch((error) => {
- console.error(error);
- });
+ async handleLabChange(files: File[]) {
+ const data = await parseLabFile(files[0]);
+ this.$store.commit('importLabs', data);
},
- handlePtChange(files) {
- const result = [];
- const promises = [];
+ async handlePtChange(files: File[]) {
+ const promises: Promise<PeerTeacher>[] = [];
files.forEach((file) => {
- const p = parsePtSchedule(file).then((data) => result.push(data));
- promises.push(p);
+ promises.push(parsePtSchedule(file));
});
- Promise.all(promises)
- .then(() => {
- this.$store.commit('addPeerTeachers', result);
- });
+ const result = await Promise.all(promises);
+ this.$store.commit('addPeerTeachers', result);
},
save() {
const database = {
@@ -64,7 +57,7 @@ export default {
const url = window.URL.createObjectURL(blob);
anchor.href = url;
anchor.download = 'pt-db.json';
- anchor.style = 'display: none';
+ anchor.style.display = 'none';
document.body.appendChild(anchor);
anchor.click();
@@ -72,7 +65,7 @@ export default {
window.URL.revokeObjectURL(url);
},
},
-};
+});
</script>
<style>
diff --git a/src/components/EditorLists.vue b/src/components/EditorLists.vue
index 60c965c..76f8cd1 100644
--- a/src/components/EditorLists.vue
+++ b/src/components/EditorLists.vue
@@ -2,25 +2,28 @@
<div id="editor-lists">
<div class="column">
<h3 class="column-header">Peer Teachers</h3>
- <List :items="peerTeachers" @selection-changed="handlePtClick" #default="pt">
+ <List
+ :items="peerTeachers"
+ @selection-changed="handlePtClick"
+ #default="{ item: { id, name } }">
<span class="list-item">
- {{ pt.item.name }} <button @click.stop="deletePeerTeacher(pt.item.id)">x</button>
+ {{ name }} <button @click.stop="deletePeerTeacher(id)">x</button>
</span>
</List>
</div>
<div class="column">
<h3 class="column-header">Labs</h3>
- <List :items="compatibleLabs" #default="lab">
+ <List :items="compatibleLabs" #default="{ item: { fullInfo, id } }">
<span class="list-item">
- {{ lab.item.fullInfo }} <button @click.stop="assignLab(lab.item.id)">+</button>
+ {{ fullInfo }} <button @click.stop="assignLab(id)">+</button>
</span>
</List>
</div>
<div class="column">
<h3 class="column-header">{{ this.selectedPeerTeacher.name }}</h3>
- <List :items="selectedPeerTeacherAssignments" #default="lab">
+ <List :items="selectedPeerTeacherAssignments" #default="{ item: { fullInfo, id } }">
<span class="list-item">
- {{ lab.item.fullInfo }} <button @click.stop="unassignLab(lab.item.id)">x</button>
+ {{ fullInfo }} <button @click.stop="unassignLab(id)">x</button>
</span>
</List>
</div>
diff --git a/src/components/FileUpload.vue b/src/components/FileUpload.vue
index fe3ef1e..082fc9d 100644
--- a/src/components/FileUpload.vue
+++ b/src/components/FileUpload.vue
@@ -9,11 +9,16 @@
</label>
</template>
-<script>
-export default {
+<script lang="ts">
+import { defineComponent } from 'vue';
+
+export default defineComponent({
name: 'FileUpload',
props: {
- accept: String,
+ accept: {
+ type: String,
+ required: false,
+ },
multiple: {
type: Boolean,
default: false,
@@ -22,7 +27,7 @@ export default {
emits: {
fileChanged: null,
},
-};
+});
</script>
<style scoped>
diff --git a/src/components/List.vue b/src/components/List.vue
index f1ef690..4732a9e 100644
--- a/src/components/List.vue
+++ b/src/components/List.vue
@@ -9,16 +9,21 @@
</ul>
</template>
-<script>
-export default {
+<script lang="ts">
+import { defineComponent } from 'vue';
+
+export default defineComponent({
name: 'List',
props: {
- items: Array,
+ items: {
+ type: Array,
+ default: [] as any[],
+ },
},
emits: {
selectionChanged: null,
},
-};
+});
</script>
<style scoped>