Manually editing a saved timetable
Manually editing a saved timetable
Once you've generated a timetable and clicked Save Timetable on the Generate page, it shows up under Saved Timetables and opens into an editor where you can nudge individual lessons around by hand, or hand a locked subset back to the solver for a real re-solve.
Locking and dragging
Every lesson starts locked when you open the editor — shown with an amber ring around the cell. This is deliberate: it means the default state is "nothing changes," and you opt in to editing specific cells rather than opting out of editing everything. Click a cell's lock icon to unlock it; only unlocked cells can be dragged.
Dragging an unlocked lesson onto an empty cell moves it there, keeping its current room. Dragging it onto an occupied cell swaps the two lessons' room and time slot with each other. Every drop is checked on the spot against room capacity, required room tags, teacher availability, department meeting slots, and double-booking of the room/teacher(s)/class group — an invalid drop is rejected with a reason instead of silently applying. Editing only works in the Class Group view (see Viewing by Class / Teacher / Room); switching to Teacher or Room view is read-only.
Lessons sharing the same Block value can't be dragged individually yet — their cells are disabled outright rather than allowed to drift out of sync with their block partners.
Lock All / Unlock All in the header toggle every cell at once — useful for either reviewing the whole grid as fixed (the default) or freeing everything up before a full re-solve.
Save Changes vs. Lock & Re-solve
These do genuinely different things, and it's worth knowing which one you want:
- Save Changes writes whatever's currently on screen straight to the saved timetable, with no solver involved. Because there's no CP-SAT pass to catch a stale assumption, this action re-validates the entire grid against your current data immediately before saving — not just whatever you last dragged — so a conflict introduced by something changed elsewhere in the app since this timetable was saved (a teacher's unavailability edited in another tab, say) is still caught here, not just problems from this editing session.
- Lock & Re-solve queues a real solver request, exactly like Generate,
except every currently-locked cell is pinned to its exact (room, slot) pair as a genuine hard
constraint (labeled
H8on the hard constraints reference page) and every unlocked cell is left for the solver to place freely. This is how you ask "keep most of this timetable as-is, but let the solver figure out where these few unlocked lessons should go" — for example, unlock everything for one teacher whose availability just changed, then re-solve so only their lessons move.
A Lock & Re-solve run polls and reports status the same way Generate does — see When
generation fails if it comes back INFEASIBLE (a common cause
here specifically is having locked two lessons into a combination that's no longer possible, e.g.
after some other constraint changed). When locked cells are part of the problem, they're
outlined in red in the grid, and the result has a button to unlock them all at once (Unlock
the cell involved, or Unlock these N cells); then run Lock & Re-solve again. When the
cause is a combination of settings, the result also lists The smallest fix. It's often
unlocking one particular cell, which is then outlined too. The
Edit links under each message open the lesson, teacher or room concerned in a new tab, so
your unsaved moves and locks here aren't lost. When it completes, you choose Overwrite this saved
timetable, Save as new (keeps the original untouched and creates a second saved timetable),
or Discard the re-solved result entirely.
A locked cell can only be kept where it is if everything it refers to still exists. If its lesson, room or period has been deleted since the timetable was saved (or the lesson's Count / Week lowered), that lock is ignored and the solver is free to move the lesson. The result then says Completed with N warnings, naming each lock that was ignored, so check where those lessons ended up before you overwrite anything.
No undo
There's no undo button and no edit history within a session — a drag or a Save Changes click that you didn't mean to make can't be reversed except by manually dragging things back (or, if you haven't saved yet, by leaving the page without saving and reopening the timetable to get back the last-saved state). If you want a safety net before a round of manual edits, use Save as New after a re-solve, or simply note down what you're about to change first.