nusmodifications / nusmodifications/nusmods

Add ability to save multiple timetables

Open
#3,961 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request timetable
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.