11<template >
22 <div >
3- <!-- <pre> -->
4- <!-- {{ selectedClasses.map((c) => ({ name: c.name, crn: c.crn })) }} -->
5- <!-- {{ selectedClasses }} -->
6- <!-- </pre> -->
73
84 <ClassesCalendar @class:delete =" deleteClass" :classes =" selectedClasses" />
95 <ClassesSelectedStats
106 @class:delete =" deleteClass"
117 :selectedClasses =" selectedClasses"
128 />
139 <ClassesFilters
14- @major:change =" majorChange($event)"
15- @department:change =" departmentChange($event)"
16- @semsters:change =" selectedSemsters = $event"
17- :selectedSemstersProp =" selectedSemsters"
18- :departments =" departments"
19- />
20- <ClassesList
21- :loading =" loadingClasses"
22- :classes =" filteredClasses"
23- @class:action =" classButtonAction($event)"
10+ @college:change =" collegeChange($event)"
11+ @gender:change =" genderChange($event)"
12+ :colleges =" colleges"
13+ :genders =" genders"
2414 />
15+ <Lazy >
16+ <ClassesList
17+ :loading =" loadingClasses"
18+ :classes =" filteredClasses"
19+ @class:action =" classButtonAction($event)"
20+ />
21+ </Lazy >
2522 <snackBar :text =" snackbarText" :active =" snackbarActive" />
2623 </div >
2724</template >
@@ -35,43 +32,30 @@ export default {
3532 mixins: [saveState],
3633 data () {
3734 return {
38- departments: {
39- // THIS SHOULD BE FROM API!!
40- Engineering: [
41- {
42- name: ' Electrical Engineering' ,
43- abbrv: ' EE' ,
44- sems: [... Array (12 ).keys ()].map ((a ) => a + 1 ),
45- },
46- // {
47- // name: 'Mechanical Engineering',
48- // abbrv: 'ME',
49- // sems: [...Array(9).keys()].map((a) => a + 1),
50- // },
51- // {
52- // name: 'Chemical Engineering',
53- // abbrv: 'ChE',
54- // sems: [...Array(9).keys()].map((a) => a + 1),
55- // },
56- // {
57- // name: 'Civil Engineering',
58- // abbrv: 'CE',
59- // sems: [...Array(9).keys()].map((a) => a + 1),
60- // },
61- ],
62- /* 'Computer Science': [
63- * {
64- * name: 'Networking',
65- * abbrv: 'Net',
66- * // TODO: autogenerate key range! (by scrapper)
67- * sems: [...Array(9).keys()].map((a) => a + 1),
68- * },
69- * ], */
70- },
35+ colleges:
36+ [
37+ " الطب البيطيري" ,
38+ " العلوم" ,
39+ " علوم الحاسب وتقنية المعلومات" ,
40+ " الصيدلة الاكلينيكية" ,
41+ " الدراسات التطبيقية وخدمة المجمتع" ,
42+ " الطب" ,
43+ " إدارة الأعمال" ,
44+ " الهندسة" ,
45+ " العلوم الطبية التطبيقية" ,
46+ " العلوم الزراعية والاغذية" ,
47+ " الحقوق" ,
48+ " الاسنان" ,
49+ " مركز اللغة الانجيليزية" ,
50+ // "الدراسات التطبيقية وخدمة المجمتع فرع بقيق"
51+ " الآداب" ,
52+ " التربية" ,
53+ ],
54+
55+ genders: [" Male" , " Female" , " Engineer" ],
7156 rawClasses: [],
72- selectedDepartment: null ,
73- selectedMajor: null ,
74- selectedSemsters: [1 ],
57+ selectedGender: null ,
58+ selectedCollege: null ,
7559 selectedClasses: [],
7660 loadingClasses: false ,
7761 snackbarText: ' ' ,
@@ -80,11 +64,8 @@ export default {
8064 },
8165 computed: {
8266 filteredClasses () {
83- // selected semster (from <ClassesFilters/>
84- let filtered = this .rawClasses .filter ((c ) =>
85- this .selectedSemsters .includes (c .semster_index )
86- )
87- filtered = filtered .map ((clas ) =>
67+ // it no longer filters, this naming is due to historic reasons
68+ let filtered = this .rawClasses .map ((clas ) =>
8869 findConflicts (clas, this .selectedClasses )
8970 )
9071 filtered = filtered .map (buttonOptions)
@@ -96,6 +77,7 @@ export default {
9677 getSaveStateConfig () {
9778 return {
9879 cacheKey: ' index' ,
80+ saveProperties: [' selectedClasses' ],
9981 }
10082 },
10183
@@ -104,24 +86,30 @@ export default {
10486 (c ) => c .code != e .code
10587 )
10688 },
107- majorChange (e ) {
108- this .selectedMajor = e .abbrv
109- this .getCP ()
89+ genderChange (e ) {
90+ this .selectedGender = e .toLowerCase ()
91+ // don't download if college isn't yet selected
92+ if (this .selectedCollege ){
93+ this .getClasses ()
94+ }
11095 },
111- departmentChange (e ) {
112- this .selectedDepartment = e
96+ collegeChange (e ) {
97+ this .selectedCollege = e
98+ // college can only be selected after gender, no need to check for selectedGender
99+ this .getClasses ()
113100 },
114101 // gets Classs for Plan/Major
115- async getCP () {
116- let url = ` /CP/${ this .selectedDepartment } /${ this .selectedMajor } .json`
102+ async getClasses () {
103+ let url = ` /by_college/${ this .selectedGender } /${ this .selectedCollege } .json`
104+ console .log (url)
117105 this .loadingClasses = true
118106 try {
119107 const response = await this .$axios .get (url)
120108 this .rawClasses = response .data
121109 this .loadingClasses = false
122110 } catch (error) {
123111 this .snackbarActive = ! this .snackbarActive
124- this .snackbarText = ` ${ this .selectedDepartment } , ${ this .selectedMajor } Not yet supported !`
112+ this .snackbarText = ` ${ this .selectedGender } , ${ this .selectedCollege } : Error fetching !`
125113 this .loadingClasses = false
126114 this .rawClasses = []
127115 console .log (error) // TODO: handle error
0 commit comments