MyCalendar is a Google chrome extension that launches on the UW class schedule page and converts a user's registered courses into a calendar (.ics) file. With MyCalendar, students don't have to manually create a calendar event with the details of a course (time, recurrence, location, etc.) for all their courses every quarter.
- Download your course schedule as an .ics file, which can be imported into any calendar app.
- Works for any academic quarter
- Calendar events are removed on holidays
- Download a separate .ics file with all the section times for a class you’re registered for.
- Change your preferences of the plugin, including which courses the .ics files include.
- Note: if a course appears as "To be arranged" for its time and date on your schedule, its checkboxes will be disabled on the plugin.
- Include a link to each course location on the UW map.
- Install Chrome v112
- Open the Github Repository and navigate to Releases; click on Final Release
- Select "Source Code" and download the .zip
- Unzip the file and place MyCalendar/ into your desired location; DO NOT REMOVE OR MOVE THE FOLDER
- Open Chrome and navigate to chrome://extensions/
- In the upper right corner, enable developer mode
- In the upper left corner, click "load unpacked" and select
MyCalendar/src
- Navigate to your Class Schedule
- Note: If you are not on your Class Schedule, the popup will say "Loading... Please ensure you've navigated to your Class Schedule"
- In the upper right corner of your browser, click on the extension
- Select the courses you would like to include in your .ics file(s)
- Schedule: Checking this box will include the scheduled meeting times for this course in a calendar file titled "schedule.ics"
- Additional Sections: Checking this box will include all the available sections (regardless if you are registered for it) for this course in a calendar file titled "sections.ics"
- To include a UW campus map link for the building of each calendar event, check "Include UW Map link"
- If you check "Save Changes", your preferece will be saved for any time you use MyCalendar
- Click the download button
- Import your .ics file(s) to the calendar application of your choice
- Note you must follow the steps in this order exactly. Failure to do so may result in undefined behavior
Known bugs will be reported as issues. To report a bug, create a new issue in the repository with the label bug. Follow the template provided.
- src/popup: main execution thread
- src/scripts: content script
There's no need to build the Chrome extension because it's loaded as unpacked into Chrome.
- install Node.js and ensure
npmis also installed - install Chrome v112
- use MacOS/Linux OS
cd test
npm i
./setup.sh
npm test
For each function you wish to unit test, add the [relative path] [function name] to test.config. Note you may only add unit tests for functions which don't reference chrome or document directly. Afterwards, open unit.test.js and import the function name using require(). Finally, follow Mocha's documentation with describe() and it() to add new unit tests using assert(). Note, we don't offer support for any other types of tests.
Complete the following before opening a pull request:
- Update the version number in
manifest.json- First Number: Tracks major changes
- Second Number: Tracks minor changes
- Third Number: Tracks patches or bug fixes
- Conduct functional testing in the browser to ensure no errors return upon opening the extension.
