Skip to content

Commit fd099ee

Browse files
committed
feat: add filter by department
1 parent 4fdafa4 commit fd099ee

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

components/ClassesFilters.vue

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@
2727
@input="$emit('college:change', $event)"
2828
></v-select>
2929
</v-col>
30+
31+
<v-col class="d-flex" cols="12" sm="4">
32+
<v-select
33+
v-model="selectedDepartments"
34+
:items="allDepartments"
35+
item-text="name"
36+
item-value="abbrv"
37+
label="Departments"
38+
return-object
39+
:disabled="!selectedCollege"
40+
@input="$emit('department:change', $event)"
41+
chips
42+
multiple
43+
></v-select>
44+
</v-col>
45+
3046
</v-row>
3147
</v-container>
3248
</v-card-actions>
@@ -40,12 +56,14 @@ export default {
4056
colleges : { type: Array, default: () => [] },
4157
loading: { type: Boolean, default: false },
4258
genders: {type: Array, default: () => []},
59+
allDepartments: {type: Array, default: () => []},
4360
},
44-
emits: ['major:change', 'semsters:change', 'department:change'],
61+
emits: ['gender:change', 'college:change', 'department:change'],
4562
data() {
4663
return {
4764
selectedGender: null, /* "male" or "female" */
48-
selectedCollege: null,
65+
selectedCollege: null,
66+
selectedDepartments: [],
4967
}
5068
},
5169
computed: {},

pages/index.vue

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
<ClassesFilters
1010
@college:change="collegeChange($event)"
1111
@gender:change="genderChange($event)"
12+
@department:change="selectedDepartments = $event"
1213
:colleges="colleges"
1314
:genders="genders"
15+
:allDepartments="allDepartments"
1416
/>
1517
<ClassesList
1618
:loading="loadingClasses"
@@ -58,12 +60,23 @@ export default {
5860
loadingClasses: false,
5961
snackbarText: '',
6062
snackbarActive: false,
63+
selectedDepartments: [],
6164
}
6265
},
6366
computed: {
67+
allDepartments(){
68+
// with duplicates
69+
let departments = this.rawClasses.map((a)=> a.department);
70+
// without dups
71+
let unique = [...new Set(departments)];
72+
return unique;
73+
},
6474
filteredClasses() {
6575
// it no longer filters, this naming is due to historic reasons
66-
let filtered = this.rawClasses.map((clas) =>
76+
let filtered = this.rawClasses.filter(clas =>
77+
this.selectedDepartments.includes(clas.department)
78+
)
79+
filtered = filtered.map((clas) =>
6780
findConflicts(clas, this.selectedClasses)
6881
)
6982
filtered = filtered.map(buttonOptions)

0 commit comments

Comments
 (0)