← Back to editor

ITTG — Help

ITTG is a school timetable editor + CP-SAT solver. This page walks through every visible feature: where to click, and what it solves for you.

HEADER 📂 Open / Download / Upload… · 💾 Save · Save As…

Access
Top header. Open / Download / Upload…, Save, Save As…. The most-recently-edited file auto-opens on every page load.
Good for
All file movement happens through one dialog. Open / Download / Upload… shows a searchable, recency-sorted list of every JSON on the server with size + "X min/h/d ago" timestamps; the currently-open file is highlighted. From there: click a row → Open to load it, click the row's button to download that exact file to disk, or click ⬆ Upload in the dialog toolbar to push a local .json file onto the server. Save persists the current editor state to the open file. Save As… prompts for a new filename (default: current name + " - copy") so you can branch without overwriting the original.

HEADER 🗓 Days & Hours

Access
Header → Days & Hours.
Good for
Defines the timetable grid (days of the week + periods per day). Every other view sizes off these two lists, so adding or removing a day instantly reshapes class/teacher/room grids.

TABS Years · Teachers · Subjects · Rooms · Schedule

Access
Five tabs immediately under the header.
Good for
Years: drill the year → group → subgroup tree, edit activities. Teachers: searchable flat list. Subjects: room rules & lastOfDay flags. Rooms: capacity & allowed-subject lists. Schedule: pick a saved run and view/export it.

YEARS TAB Cohorts & activities

Access
Years tab → click a node in the tree on the left. Use + Year, + Group, + Subgroup to grow the tree.
Good for
Each cohort has its own activity list. A group inherits everything from its year (year-level activities show as read-only "Inherited" rows below the group's own).

ACTIVITY + Class (single activity)

A real activity row from year 8.a (subject · teachers · ×/wk · 🏠 home room · 🕐 pin · ↗ move).

Access
Cohort editor → + Class.
Good for
A single weekly subject the whole cohort takes together. Pick subject, set ×/wk (lessons per week), pick teachers, optionally pin to specific slots.

ACTIVITY + Optional

Access
Cohort editor → + Optional.
Good for
An elective that only a subset of students attends. Doesn't count against the cohort's weekly-hours minimum, and multiple optionals may share the same slot (students pick one).

ACTIVITY + Split & "Parallel sets"

Access
Cohort editor → + Split. Inside, add sets/lanes; toggle parallel.
Good for
Block where the cohort divides into parallel groups. Parallel ON (default): every lane runs in the same time slot (e.g. I. idegen nyelv, where the whole class picks one language and all lessons happen together). Parallel OFF: lanes scheduled independently — useful for optional tagozat blocks.

ACTIVITY + Linked (cohort-level link)

Access
Cohort editor → + Linked. Pick a target lesson from another cohort.
Good for
Making one physical lesson cover two cohorts. The linker cohort produces no own lesson — it just joins the target lesson at solve-time via extra_student_sets. Same effect as the split-internal "🔗 + Linked" but applied to the whole cohort.

ACTIVITY ↗ Move activity

Access
Per activity row, the icon next to . Also on every split-subject lane — same icon inside a set lets you move just that lane elsewhere.
Good for
Retargeting at two granularities. Whole activity: pick Cohorts (retargets studentSetId) or Splits (folds the activity in as a new set; single/optional only). Single lane of a split: pick another set (the lane splices into that set, possibly across splits) or a cohort (extracted as a standalone single activity). All lists are closeness-sorted from the source cohort.

TEACHERS TAB Teachers list

Click a row to expand: qualified subjects, weight, compulsory hours, tutor class, extra work.

Access
Teachers tab. Click a row to expand the per-teacher editor.
Good for
Edit name, qualified subjects, weight, compulsory hours, tutor cohort (tutorClass), and per-teacher scheduling preferences. The "Sched h/wk" column shows the teacher's current assigned hours so you can spot over/under-load at a glance.

ANYWHERE Availability matrix (🚫)

Access
🚫 button on the detail panel of any teacher, cohort (year/group/subgroup), subject, or room. Right-click any cell to toggle a hard block (red — never scheduled); click again to clear. For graded soft preferences type a number into the cell: positive = soft avoid, negative = soft prefer, 0/blank = available, X = hard block (same as right-click).
Good for
Hard-block periods when the entity can't be scheduled — half-time staff, weekly meetings, lunch-block holds, building-closed slots, subject not offered on Monday morning, etc. The yellow banner at the top of the dialog highlights the right-click shortcut so colleagues find it without reading the small-print legend.

Teacher availability

Group / cohort availability

Subject availability

TEACHERS TAB Extra (non-teaching) work

Access
Teacher detail panel → Extra work rows.
Good for
Hours counted toward the teacher's load that aren't lessons: prep, mentoring (előkészítő, tehetséggondozó), admin. Affects the target-hour scoring without consuming a timetable slot.

SUBJECTS TAB Subjects & rooms

Expanded subject panel showing preferred rooms (green) and disallowed rooms (red).

Access
Subjects tab → click a subject. Two chip lists: Preferred rooms (green) and Disallowed rooms (red).
Good for
Preferred = soft score bonus when the lesson lands in one of those rooms. Disallowed = hard block.

SUBJECTS TAB "Preferred rooms are the only ones allowed (hard)"

Access
Subject detail panel, checkbox below the room chips.
Good for
OFF (default): preferred is a hint; any room is still allowed. ON: every room NOT in the preferred list becomes implicitly disallowed — the preferred list turns into a strict whitelist. Use ON for lab subjects (Kémia must run in the chem lab).

ACTIVITY 🏠 Home-room links

Access
Activity room picker → 🏠 options at the top of the dropdown. Picking one stores homeRoomOf instead of a literal roomId.
Good for
The activity follows the cohort's home room. If the cohort gets a new home room later, every linked activity moves automatically — no chasing stale roomId values after the annual roll-forward.

ACTIVITY 🕐 Pin to specific slots

Access
🕐 button on each activity / split-subject row. Add one or more (day, period) pins.
Good for
Fix an activity to a specific time. The solver treats pins as hard — refuses to place the lesson anywhere else. Use for staff meetings, school assembly, sport day, mandated late-afternoon electives.

ACTIVITY 🔗 Same teacher as another activity

Access
Teacher cell → 🔗 dropdown. Pick another activity from the closeness-sorted list.
Good for
Force two activities to share a teacher (e.g. tagozat in 9.a and 9.b must have the same instructor). The linked cell becomes read-only — the linked activity is the source of truth. Different from sameAs (which merges the lessons; sameTeacherAs keeps two lessons but with the same teacher).

ACTIVITY 🌙 Last class of day

Access
Activity row → 🌙 checkbox.
Good for
Forces this activity to land at or after every non-optional lesson for the same cohort that day. Pair with Optional so students who don't take the elective can leave early.

HEADER 🧠 SAT Match

Access
Header → 🧠 SAT Match. Confirm modal warns about overwrite.
Good for
CP-SAT optimal teacher-to-activity assignment. Honours qualifications, tutor preference, soft-keep, load balance. Hard-locked (🔒) assignments are NEVER overwritten. Use Settings → SAT Match for the "fill empty slots only" mode.

SCHEDULE TAB 🎲 Multistart

Access
Schedule tab → 🎲 Multistart. Tune iterations / threads / s/yr in ⚙ Settings.
Good for
Full timetable solve. Sequential iterations, each with a fresh seed. Tick 🧠 vary teachers in ⚙ Settings if you also want a fresh SAT teacher-match per iteration — it's off by default so the matcher only runs when you ask. Lowest-objective final wins. Each iteration appears in the Run dropdown as it completes — you can inspect partial results while later iterations are still running.

SCHEDULE TAB 🔄 Improve & 🧮 Rescore

Access
Schedule toolbar, with a run selected.
Good for
Improve re-runs the solver warm-hinted from the selected run — same parameters, often finds a marginally better placement. Rescore recomputes the objective under current ⚙ weights without re-solving (useful when you've tweaked weights and want to compare runs apples-to-apples).

SCHEDULE TAB Views, CSV / JSON / XLSX, Print

Schedule view for the cohort, with placements from the chosen run.

Access
Schedule view bar.
Good for
Six views: Class · Teacher · Room · All classes matrix · All teachers matrix · Teacher assignments tree. ⬇ CSV exports the current view. ⬇ JSON exports the raw schedule.json. ⬇ XLSX writes an 8-sheet workbook. 🖨 Print generates a multi-page PDF.

HEADER 🔍 Compare two files

Access
Header → 🔍 Compare. Pick file A and B, click Compare.
Good for
Side-by-side diff of teacherIds and perWeek across every activity. Rows highlighted when teachers or hours differ; "only in A" / "only in B" tags for activities present only in one file. Useful after the annual migration to verify the roll forward.

HEADERPre-solve warnings pill

Access
Header. Hidden when there's nothing to flag, yellow for soft issues, red for hard errors. Click to see the list.
Good for
Catches obvious infeasibilities before the solver wastes time: cohort overflow, subject with no rooms left after disallow, teacher unqualified for an assigned subject, no candidate teacher for a subject, duplicate pins. Refreshed live on every edit.

ACTIVITY 🔒 Locked teacher assignments

Access
Teacher cell → 🔒 checkbox. By default, picking a teacher auto-locks the cell.
Good for
Tells SAT Match to leave this slot alone. Manually-curated teacher choices stay; only unlocked slots are subject to re-assignment. Uncheck 🔒 to let the matcher reconsider that slot in the next run.

HEADER ↶ Undo · ↷ Redo · 📜 History

Access
Three buttons in the header between Save As… and the SAT-match cluster. Keyboard: Ctrl+Z undo, Ctrl+Shift+Z or Ctrl+Y redo. Shortcuts pass through to native field-level undo when typing inside an input.
Good for
Every edit you make this session is snapshotted automatically — renames, additions, deletions, activity edits, room/teacher attachments, etc. rewinds one step; replays. 📜 History opens a modal listing every snapshot with a timestamp and a one-line description ("+ teacher Almásy Anna", "rename activity", "− 1 subject", etc.) — click any row to jump directly to that moment in the session. Up to 100 snapshots are kept (oldest fall off). Snapshots don't survive a page refresh; they're per-session only.

HEADER 🌐 Language picker

Access
Header → 🌐 dropdown (EN · HU · DE · FR).
Good for
Switches every label across the SPA — re-renders on the fly. Print output and XLSX exports respect the current language.