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
npm
is 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.