Skip to content

Commit b811cff

Browse files
committed
make things not in 3 files
1 parent dcb3b23 commit b811cff

File tree

6 files changed

+108
-145
lines changed

6 files changed

+108
-145
lines changed

src-tauri/src/main.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,7 @@ fn get_courses(courses: String) -> String {
128128
}
129129

130130
return format!(
131-
"Course(s) {:?} has a free spot. \n
132-
Course {:?} has a free waitlist slot.",
131+
"Course(s) {:?} has/have a free spot. Course(s) {:?} has/have a free waitlist slot.",
133132
free_courses[0], free_courses[1]
134133
);
135134
}

src/App.tsx

Lines changed: 16 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,20 @@
11
import { createEffect, createSignal, For, onMount, Show } from "solid-js";
2-
import { createStore } from "solid-js/store";
32
import toast, { Toaster } from "solid-toast";
4-
53
import "./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";
78
import {
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

8015
const 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

src/components/courseTag.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component } from "solid-js";
2-
import { Course } from "../utils";
2+
import { Course } from "../utils/backend";
33

44
export const courseTag = (course: Course) => {
55
return (

src/utils.ts renamed to src/utils/backend.ts

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,26 @@
11
import { invoke } from "@tauri-apps/api/tauri";
22
import { open } from "@tauri-apps/api/shell";
33

4-
export const courseMIN = 10000;
5-
export const courseMAX = 99999;
6-
7-
export type Course = {
8-
courseNum: number;
9-
seatAvailable: boolean;
10-
waitlistAvailable: boolean;
11-
valid: boolean;
12-
};
4+
import { courseMIN, courseMAX } from "./types";
135

146
const existingCourses: number[] = [];
157
const nonExistingCourses: number[] = [];
168

179
export const checkCourseExists = async (
1810
courseNumber: number
1911
): Promise<boolean> => {
20-
const startTime = performance.now();
21-
2212
if (
2313
nonExistingCourses.includes(courseNumber) ||
2414
courseNumber > courseMAX ||
2515
courseNumber < courseMIN
2616
) {
27-
console.log("Doesn't exist or not in bounds");
2817
return false;
2918
}
3019

3120
if (existingCourses.includes(courseNumber)) {
32-
console.log("Exists");
3321
return true;
3422
}
3523

36-
console.log("invoke");
37-
3824
const exists: boolean = await invoke("check_course_exists", {
3925
courseId: courseNumber,
4026
});
@@ -47,10 +33,6 @@ export const checkCourseExists = async (
4733
console.log("Existing: " + existingCourses);
4834
console.log("Non existing: " + nonExistingCourses);
4935

50-
const endTime = performance.now();
51-
52-
console.log("TTE: " + (endTime - startTime) + "ms");
53-
5436
return exists;
5537
};
5638

src/utils/dataManagement.ts

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { createStore } from "solid-js/store";
2+
import toast from "solid-toast";
3+
import { Course, courseMAX, courseMIN } from "./types";
4+
import { checkCourseExists } from "./backend";
5+
6+
export const [courses, setCourses] = createStore<Course[]>([]);
7+
8+
export const addCourse = async (courseCRN: number) => {
9+
if (courseCRN > courseMAX || courseCRN < courseMIN) {
10+
toast.error("Course value not in range");
11+
return;
12+
}
13+
14+
const courseExists = await checkCourseExists(courseCRN);
15+
16+
if (!courseExists) {
17+
toast.error("Course CRN doesn't exist");
18+
return;
19+
}
20+
21+
const isInList = courses.some((course: any) => course.courseNum == courseCRN);
22+
23+
if (isInList) {
24+
toast.error("Course already in your list");
25+
return;
26+
}
27+
28+
setCourses([
29+
...courses,
30+
{
31+
courseNum: courseCRN,
32+
seatAvailable: false,
33+
waitlistAvailable: false,
34+
valid: true,
35+
},
36+
]);
37+
};
38+
39+
export const saveCourses = async () => {
40+
const loadToast = toast.loading("Saving courses...");
41+
42+
if (courses.length == 0) {
43+
toast.error("No courses to save/fetch!");
44+
return false;
45+
}
46+
47+
await checkCoursesValid().then(() => {
48+
localStorage.setItem("courses", JSON.stringify(courses));
49+
});
50+
51+
toast.success("Course CRNs saved!");
52+
console.log("Course CRNs saved!");
53+
toast.remove(loadToast);
54+
55+
return true;
56+
};
57+
58+
const checkCoursesValid = async () => {
59+
let invalidCourses: number[] = [];
60+
let validCourses: number[] = [];
61+
62+
for (let i = 0; i < courses.length; i++) {
63+
const courseExists = await checkCourseExists(courses[i].courseNum);
64+
if (!courseExists) {
65+
invalidCourses.push(i);
66+
console.log(`Course CRN ${courses[i].courseNum} is invalid!`);
67+
} else {
68+
validCourses.push(i);
69+
console.log(`Course CRN ${courses[i].courseNum} is valid!`);
70+
}
71+
}
72+
73+
for (let i = 0; i < invalidCourses.length; i++) {
74+
setCourses(invalidCourses[i], { valid: false });
75+
}
76+
77+
for (let i = 0; i < validCourses.length; i++) {
78+
setCourses(validCourses[i], { valid: true });
79+
}
80+
};

src/utils/types.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export const courseMIN = 10000;
2+
export const courseMAX = 99999;
3+
4+
export type Course = {
5+
courseNum: number;
6+
seatAvailable: boolean;
7+
waitlistAvailable: boolean;
8+
valid: boolean;
9+
};

0 commit comments

Comments
 (0)