multiple schedule suppport kinda
This commit is contained in:
@@ -78,6 +78,7 @@ export class CourseCatalogScraper {
|
||||
number,
|
||||
status,
|
||||
isReserved,
|
||||
creditHours: this.getCreditHours(number),
|
||||
schedule: this.getSchedule(row),
|
||||
registerURL: this.getRegisterURL(row),
|
||||
url: this.getURL(row),
|
||||
@@ -112,6 +113,15 @@ export class CourseCatalogScraper {
|
||||
return [courseName, department, number];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets how many credit hours the course is worth
|
||||
* @param number the course number, CS 314H
|
||||
* @return the number of credit hours the course is worth
|
||||
*/
|
||||
getCreditHours(number: string): number {
|
||||
return Number(number.split('')[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scrape the Unique ID from the course catalog table row
|
||||
* @param row the row of the course catalog table
|
||||
|
||||
@@ -37,9 +37,17 @@ export async function queryAggregateDistribution(course: Course): Promise<[Distr
|
||||
F: row.f,
|
||||
};
|
||||
|
||||
const semesters: Semester[] = row.semesters.split(',').map((sem: string) => {
|
||||
// the db file for some reason has duplicate semesters, so we use a set to remove duplicates
|
||||
const rawSemesters = new Set<string>();
|
||||
row.semesters.split(',').forEach((sem: string) => {
|
||||
rawSemesters.add(sem);
|
||||
});
|
||||
|
||||
const semesters: Semester[] = [];
|
||||
|
||||
rawSemesters.forEach((sem: string) => {
|
||||
const [season, year] = sem.split(' ');
|
||||
return { year: parseInt(year, 10), season: season as Semester['season'] };
|
||||
semesters.push({ year: parseInt(year, 10), season: season as Semester['season'] });
|
||||
});
|
||||
|
||||
return [distribution, semesters];
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { isExtensionPopup } from 'chrome-extension-toolkit';
|
||||
|
||||
/**
|
||||
* An enum that represents the different types of pages that we support
|
||||
* a given url/page can correspond to many of these enum values
|
||||
@@ -7,6 +9,7 @@ export enum SiteSupport {
|
||||
COURSE_CATALOG_DETAILS = 'COURSE_CATALOG_DETAILS',
|
||||
UT_PLANNER = 'UT_PLANNER',
|
||||
WAITLIST = 'WAITLIST',
|
||||
EXTENSION_POPUP = 'EXTENSION_POPUP',
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -15,6 +18,9 @@ export enum SiteSupport {
|
||||
* @returns a list of page types that the current page is
|
||||
*/
|
||||
export default function getSiteSupport(url: string): SiteSupport | null {
|
||||
if (isExtensionPopup()) {
|
||||
return SiteSupport.EXTENSION_POPUP;
|
||||
}
|
||||
if (url.includes('utexas.collegescheduler.com')) {
|
||||
return SiteSupport.UT_PLANNER;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user