11import { createEffect , createSignal , For , onMount , Show } from "solid-js" ;
2- import { createStore } from "solid-js/store" ;
32import toast , { Toaster } from "solid-toast" ;
4-
53import "./App.scss" ;
64
5+ import type { Course } from "./utils/types" ;
6+ import { courseMAX , courseMIN } from "./utils/types" ;
7+ import { openLink , get_courses } from "./utils/backend" ;
78import {
8- Course ,
9- openLink ,
10- checkCourseExists ,
11- courseMAX ,
12- courseMIN ,
13- get_courses ,
14- } from "./utils" ;
15-
16- const [ courses , setCourses ] = createStore < Course [ ] > ( [
17- // {
18- // id: 1,
19- // courseNum: 21135,
20- // seatAvailable: false,
21- // waitlistAvailable: false,
22- // },
23- // {
24- // id: 2,
25- // courseNum: 25587,
26- // seatAvailable: false,
27- // waitlistAvailable: false,
28- // },
29- // {
30- // id: 3,
31- // courseNum: 27395,
32- // seatAvailable: false,
33- // waitlistAvailable: false,
34- // },
35- // {
36- // id: 4,
37- // courseNum: 24649,
38- // seatAvailable: false,
39- // waitlistAvailable: false,
40- // },
41- ] ) ;
42-
43- const [ newCourse , setNewCourse ] = createSignal ( 0 ) ;
44-
45- const addCourse = async ( ) => {
46- if ( newCourse ( ) > courseMAX || newCourse ( ) < courseMIN ) {
47- toast . error ( "Course value not in range" ) ;
48- return ;
49- }
50-
51- const courseExists = await checkCourseExists ( newCourse ( ) ) ;
52-
53- console . log ( courseExists ) ;
54-
55- if ( ! courseExists ) {
56- toast . error ( "Course CRN doesn't exist" ) ;
57- return ;
58- }
59-
60- const isInList = courses . some (
61- ( course : any ) => course . courseNum == newCourse ( )
62- ) ;
63-
64- if ( isInList ) {
65- toast . error ( "Course already in your list" ) ;
66- return ;
67- }
68-
69- setCourses ( [
70- ...courses ,
71- {
72- courseNum : newCourse ( ) ,
73- seatAvailable : false ,
74- waitlistAvailable : false ,
75- valid : true ,
76- } ,
77- ] ) ;
78- } ;
9+ addCourse ,
10+ saveCourses ,
11+ courses ,
12+ setCourses ,
13+ } from "./utils/dataManagement" ;
7914
8015const App = ( ) => {
8116 const [ data , setData ] = createSignal ( "No data fetched!" ) ;
17+ const [ newCourse , setNewCourse ] = createSignal ( 0 ) ;
8218
8319 onMount ( ( ) => {
8420 const localStorageItems : string = localStorage . getItem ( "courses" ) || "" ;
@@ -88,54 +24,6 @@ const App = () => {
8824 }
8925 } ) ;
9026
91- const saveCourses = async ( ) => {
92- console . log ( courses ) ;
93- const loadToast = toast . loading ( "Saving courses..." ) ;
94-
95- if ( courses . length == 0 ) {
96- toast . error ( "No courses to save/fetch!" ) ;
97- return false ;
98- }
99-
100- await checkCoursesValid ( ) . then ( ( ) => {
101- localStorage . setItem ( "courses" , JSON . stringify ( courses ) ) ;
102- } ) ;
103-
104- toast . success ( "Course CRNs saved!" ) ;
105- console . log ( "Course CRNs saved!" ) ;
106- toast . remove ( loadToast ) ;
107-
108- return true ;
109- } ;
110-
111- const checkCoursesValid = async ( ) => {
112- let invalidCourses : number [ ] = [ ] ;
113- let validCourses : number [ ] = [ ] ;
114-
115- console . log ( courses ) ;
116-
117- for ( let i = 0 ; i < courses . length ; i ++ ) {
118- const courseExists = await checkCourseExists ( courses [ i ] . courseNum ) ;
119- if ( ! courseExists ) {
120- invalidCourses . push ( i ) ;
121- console . log ( `Course CRN ${ courses [ i ] . courseNum } is invalid!` ) ;
122- } else {
123- validCourses . push ( i ) ;
124- console . log ( `Course CRN ${ courses [ i ] . courseNum } is valid!` ) ;
125- }
126- }
127-
128- for ( let i = 0 ; i < invalidCourses . length ; i ++ ) {
129- console . log ( invalidCourses [ i ] ) ;
130- setCourses ( invalidCourses [ i ] , { valid : false } ) ;
131- }
132-
133- for ( let i = 0 ; i < validCourses . length ; i ++ ) {
134- console . log ( validCourses [ i ] ) ;
135- setCourses ( validCourses [ i ] , { valid : true } ) ;
136- }
137- } ;
138-
13927 const getData = async ( ) => {
14028 if ( ! ( await saveCourses ( ) ) ) {
14129 return ;
@@ -152,7 +40,6 @@ const App = () => {
15240 return el . courseNum ;
15341 } ) ;
15442
155- console . log ( courseArr ) ;
15643 setData ( await get_courses ( courseArr ) ) ;
15744
15845 toast . remove ( loadToast ) ;
@@ -207,7 +94,13 @@ const App = () => {
20794 min = { courseMIN }
20895 max = { courseMAX }
20996 />
210- < button onClick = { addCourse } > & #10133 Add Course </ button >
97+ < button
98+ onClick = { ( ) => {
99+ addCourse ( newCourse ( ) ) ;
100+ } }
101+ >
102+ & #10133 Add Course
103+ </ button >
211104 </ div >
212105 < button type = "button" onClick = { saveCourses } >
213106 Save Courses
0 commit comments