nusmodifications / nusmodifications/nusmods
Add ability to save multiple timetables
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 689
- Forks
- 364
- Avg merge
- 7h 5m
- Merged PRs (30d)
- 14
Description
Is your feature request related to a problem? Please describe.
When planning a timetable, we often want to create multiple versions and decide between them. Currently, we can only save a single timetable in NUSMods.
Describe the solution you'd like
As mentioned in #3727, a scrollable panel could be added to the timetable page, displaying several timetable slots. Each slot would contain a user-defined name (default-generated if none is specified) and the module codes of the modules added to that slot. Clicking each slot would render the corresponding timetable. There will always be at least one timetable slot, and the currently selected/default timetable slot will be displayed on the Today page.
Next, we could enhance the "Add to Semester" button by adding more options to the dropdown menu, allowing users to specify which timetable slots they want to add or remove the module from. The dropdown might list each timetable slot name with toggles beside them.
Describe alternatives you've considered
Since the dropdown list with toggles could be unwieldy, a possible alternative is to replace the "Add to Semester" button with an "Add to Timetable" button, which adds the module to a basket of modules. From the Timetable page, the user could select which modules in the basket to add/remove from the currently selected timetable slot. However, this solution is likely more complex, and I haven't figured out how detecting timetable clashes will work in this scenario.
Additional context
I am happy to accept any suggestions/alternatives!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the related issue #3727 and tracing the timetable page, Today page, and “Add to Semester” flow. The scope needs settling before implementation: define how named timetable slots are created and selected, how module membership and clash detection work, and how the selected slot appears on Today.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, react, typescript
- Domain
- frontend, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100