aboutsummaryrefslogtreecommitdiff
path: root/src/views
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2021-04-13 09:50:37 -0500
committerFurkan Sahin <furkan-dev@proton.me>2021-04-13 09:50:37 -0500
commitb595ffa5efaa76d97fd6d6b79c24af46755cffd4 (patch)
treebf6c6f87c940d89e9743cc20c5d5530ee25ec017 /src/views
parent484c6067af99f5118c8f88280572e68dd2af590e (diff)
Move editor lists to component
Diffstat (limited to 'src/views')
-rw-r--r--src/views/Editor.vue87
1 files changed, 3 insertions, 84 deletions
diff --git a/src/views/Editor.vue b/src/views/Editor.vue
index fd83fb7..b4a2e8e 100644
--- a/src/views/Editor.vue
+++ b/src/views/Editor.vue
@@ -1,30 +1,14 @@
<template>
<div id="home">
<action-bar />
- <div id="editor">
- <div class="column">
- <list :items="peerTeachers" @selection-changed="handlePtClick" #default="pt">
- {{ pt.item.name }} <button @click.stop="deletePeerTeacher(pt.item.id)">X</button>
- </list>
- </div>
- <div class="column">
- <list :items="compatibleLabs" #default="lab">
- {{ lab.item.fullInfo }} <button @click.stop="assignLab(lab.item.id)">+</button>
- </list>
- </div>
- <div class="column">
- <list :items="selectedPeerTeacherAssignments" #default="lab">
- {{ lab.item.fullInfo }} <button @click.stop="unassignLab(lab.item.id)">X</button>
- </list>
- </div>
- </div>
+ <editor-lists :peerTeachers="peerTeachers" :labs="labs" />
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import ActionBar from '@/components/ActionBar.vue';
-import List from '@/components/List.vue';
+import EditorLists from '@/components/EditorLists.vue';
import PeerTeacher from '@/models/PeerTeacher';
import Lab from '@/models/Lab';
@@ -32,7 +16,7 @@ export default defineComponent({
name: 'Editor',
components: {
ActionBar,
- List,
+ EditorLists,
},
computed: {
labs(): Lab[] {
@@ -43,61 +27,6 @@ export default defineComponent({
return Array.from(this.$store.state.peerTeachers.values()).sort((a, b) => a.lastname
.toUpperCase().localeCompare(b.lastname.toUpperCase()));
},
- compatibleLabs(): Lab[] {
- const temp = this.labs.filter((lab) => (!this.selectedPeerTeacher.assignedLabs.has(lab.id)
- && !this.selectedPeerTeacher.conflictsWith(lab.event)));
-
- const currentAssignments = this.selectedPeerTeacherAssignments;
- return temp.filter((lab) => !currentAssignments
- .some((assignedLab) => lab.event.conflictsWith(assignedLab.event)));
- },
- selectedPeerTeacherAssignments(): Lab[] {
- return Array.from(this.selectedPeerTeacher.assignedLabs.values())
- .flatMap((id) => {
- const lab = this.$store.state.labs.get(id);
- return (lab === undefined) ? [] : [lab];
- }).sort((a, b) => {
- if (a.course < b.course) {
- return -1;
- }
- if (b.course < a.course) {
- return 1;
- }
-
- if (a.section < b.section) {
- return -1;
- }
- if (b.section < a.section) {
- return 1;
- }
-
- return 0;
- });
- },
- },
- data() {
- return {
- selectedPeerTeacher: new PeerTeacher(),
- };
- },
- methods: {
- handlePtClick(peerTeacher: PeerTeacher) {
- this.selectedPeerTeacher = peerTeacher;
- },
- deletePeerTeacher(id: number) {
- if (this.selectedPeerTeacher.id === id) {
- this.selectedPeerTeacher = new PeerTeacher();
- }
- this.$store.commit('deletePeerTeacher', id);
- },
- assignLab(id: string) {
- if (this.selectedPeerTeacher.id !== 0) {
- this.selectedPeerTeacher.assignedLabs.add(id);
- }
- },
- unassignLab(id: string) {
- this.selectedPeerTeacher.assignedLabs.delete(id);
- },
},
});
</script>
@@ -106,14 +35,4 @@ export default defineComponent({
#home {
max-height: inherit;
}
-
-#editor {
- display: flex;
- max-height: inherit;
-}
-
-.column {
- flex: 1;
- overflow: auto;
-}
</style>