Macro Scheduler
For a multi-day meet, we have two pages that work together. The Macro Scheduler is where you insert your events, primarily grouped together as blocks into a timeline. Most of the blocks are sized to fill the approximate amount of time you will need, based on the anticipated number of athletes you entered on the Rounds page. Here you can set the broad day, order and approximate placement of events to accommodate that number.
Later, the Micro/Daily Scheduler is then where the detailed operational scheduling is made for each day of a multi-day meet.
Use it to answer questions such as:
- Exactly when does this block start?
- How many heats or flights does it contain?
- Which divisions compete in which order?
- How much time is allowed between heats?
- Which hurdle transitions are required?
- Which facility is being used?
- How do the individual heats or flights fit together?
Who should use this page?
Use Micro/Daily after a multi-day meet has been laid out on the Macro Scheduler.
A normal one-day meet should generally use Schedule instead.
One operational schedule
Macro and Micro do not create independent schedules.
Micro edits the same operational schedule blocks used by Macro and later publishing.
A change made in Micro should therefore remain visible when the same block is viewed elsewhere.
Day navigation
Each meet day has its own tab.
Select the appropriate day to inspect or edit that day's detailed schedule.
The page may contain:
- Day 1
- Day 2
- Day 3
- Additional days as required
Overview and Facilities
Two principal views are available:
- Overview
- ⊞ Facilities
Overview
Displays the day's Track and Field blocks in a compact operating schedule.
Facilities
Displays the field schedule by individual physical facility.
This is useful for checking whether each pit, ring, runway, or cage has a workable independent timeline.
Macro →
The top navigation includes a direct return to the Macro Scheduler.
Use Macro when the problem is large-scale placement.
Use Micro when the problem is detailed timing inside the established structure.
LIVE and LOCKED
Each day may display:
- ● LIVE
- ● LOCKED
A LIVE day remains available for schedule derivation and ripple.
A LOCKED day is intended to preserve authored daily detail rather than allowing it to be freely regenerated.
The exact lock/unlock workflow should be confirmed as the feature is finalized.
Per-day timing
Each day contains timing settings specific to that day.
These include:
- First track event
- First field event
- Fixed
- First call
- Check-in
- Warmup
The first Track and Field event values are displayed from the current schedule.
Fixed
Controls whether the day's timing should be treated as fixed.
A fixed schedule preserves explicit time anchors.
First call
Sets the day's advance time for first-call notifications.
Check-in
Sets the day's standard check-in advance.
Warmup
Sets the day's field warm-up allowance.
Meet-level settings
Micro also displays meet-wide scheduling settings that are shared with the other planning pages.
These include:
- Heat gap
- Hurdle transition
- Recall warm-up
- Field-flight seeding
- Auto-ripple
- Heat sizing
These values are not independent Micro-only copies.
For example, the Heat gap is the same meet-level value used by Rounds.
ANTICIPATED and REAL
The Heat sizing control determines whether the operating heat structure is based on:
- Planning estimates
- Actual current registrations
Use ANTICIPATED while building the schedule before registration is complete.
Use REAL when the meet is ready to execute from actual entries.
The display may show both planned and actual counts even while one is serving as the sizing authority.
Blocks
Each scheduled event appears as a detailed block.
A block may display:
- Event name
- Competition round
- Division/gender composition
- Athlete counts
- Facility
- Start time
- Duration
- Heat or flight count
- Combined-event parent
- Hurdle configuration
- Throwing implement information
- Warnings
Event naming
Internal event-family identifiers are converted to user-facing event names for display.
Combined-event components may also display their parent combined event.
Examples:
- DEC · 100
- HEP · HJ
- PENT · SP
The component remains a real operational event at a real facility.
Round labels
The event name may include its competition round.
Examples:
- 100 Prelims
- 200 Semifinal
- 1500 Final
Round identity should remain visible because it materially affects the schedule and athlete flow.
Division composition
The block shows the divisions and genders competing within it.
The composition may include:
- Anticipated athletes
- Real athletes
- Heat count
- Capacity
- Combined/ganged divisions
This makes the detailed schedule explain how the total block was constructed.
Combining divisions
Where permitted, the Meet Director may combine selected divisions into the same heat.
A human-created combination is an explicit operational decision.
Torunit should not silently separate it later unless the Meet Director deliberately removes the combination.
Unganging
A previously combined race may be separated back into individual divisions.
This changes the heat math and may regenerate dependent block calculations.
Borderline heat size
If a division lies just beyond the normal capacity, Torunit may ask the Meet Director whether to:
- Combine into one larger heat
- Split into two heats
This decision should persist once made.
Heat breakdown
A block can expose its internal heat schedule.
The detailed rows may contain:
- Heat number
- Division or group
- Athlete count
- Start time
- Approximate duration
Individual heat start times may be edited.
Editing a heat time
Changing a heat's start time establishes a deliberate detailed timing decision.
Later dependent rows should ripple from the change rather than silently reverting the edited heat.
Field flights
Field blocks may contain one or more flights.
The server-generated flight plan determines:
- Flight sizes
- Warm-up
- Competition start
- Duration
- Seeding range
- Final-attempt cut
Micro displays that authoritative flight plan rather than inventing a separate browser calculation.
Facilities view
Facilities view groups field blocks by actual competition resource.
A facility may report:
- clear
- empty
- one or more collisions
Blocks may be moved between compatible facilities.
A time change or facility move is saved back to the same operational block.
Facility ripple
When a block time changes on a facility, later blocks on that same facility may be re-flowed.
The edited block remains the anchor.
Dependent later events are moved to the next available five-minute boundary.
The purpose is to model a real meet:
- Fall behind → later events move later
- Gain time → later events may move earlier
- Human anchor → stays where the Meet Director put it
Warm-up warnings
Field events require enough transition and warm-up time between competitions on the same facility.
Micro checks the sequence and may flag a block when it begins before the prior event has released enough time.
Combined events may require a larger minimum handling interval.
Hurdle configuration
Hurdle blocks display the actual configurations required by their participating divisions.
A block may contain multiple hurdle groups requiring different:
- Distance
- Height
- Spacing
- Setup
Torunit may include:
- Initial setup
- Between-format transitions
- Teardown
as part of the block's real duration.
Hurdle order
When no human order has been specified, Torunit may use the operational order supplied by the barrier-data service.
If the Meet Director explicitly changes the division order, the saved human order becomes authoritative.
Block settings gear
Select the ⚙ in a block header to open:
Block settings
The settings system operates at three levels:
- Block
- Division
- Heat
A lower-level setting may override an inherited higher-level setting.
Leaving an override blank means:
inherit
Block-level settings
Block-level values apply to the block unless overridden at the division or heat level.
Available preferences may include:
- Division order
- Capacity
- Heat duration
- Gap after
- Transition before
- Transition after
Division order
The Meet Director may define the order in which the divisions inside the block compete.
This human-authored order overrides automatic ordering.
Divisions not explicitly listed should remain present after the explicitly ordered divisions rather than disappearing.
Capacity
Defines the maximum number of athletes per heat for the applicable scope.
A division may inherit the block capacity or define its own capacity.
Changing capacity recalculates the number of heats from the actual athlete count.
Heat duration
Sets the expected duration for the applicable heat or scope.
A blank value inherits the parent value.
Gap after
Sets additional time after the applicable block, division, or heat.
Transition before
Adds operational transition time before the selected scope.
Possible uses include equipment changes or other preparation requirements.
Transition after
Adds transition time after the selected scope.
Division-level settings
Each division inside the block may have its own settings.
A division-level value overrides the block value for that division.
If the division field is blank, it inherits the block value.
Heat-level settings
Individual heats may also have specific overrides.
This is the most granular level.
A heat may therefore use a different:
- Capacity
- Duration
- Gap
- Transition
without changing every other heat in the block.
Inherited values
The settings dialog displays the effective inherited value alongside blank override fields.
This allows the Meet Director to understand what will happen without duplicating the same number at every level.
The intended hierarchy is:
Meet / calculated default → Block → Division → Heat
A child uses the nearest explicit value above it unless the child supplies its own override.
Saving block settings
The Block Settings dialog has its own Save action.
Settings are stored using the block's permanent block UID rather than its position in the current schedule.
This is important because a block may move without becoming a different competition block.
After settings save successfully, the current implementation reloads the page so the schedule can be rebuilt using the new effective values.
Schedule items
Non-competition items such as ceremonies or breaks may be inserted into a day's Track or Field sequence.
These become part of the operational timeline.
Holding
Unplaced blocks remain visible in Holding.
For combined-event chains, the first actionable component is emphasized so the Meet Director knows where to begin.
A later dependent component should not need to be independently placed when its chain can be derived from the lead event.
Current implementation notes
The following items should be reviewed as Torunit development continues:
- Verify every Block / Division / Heat setting displays the real inherited value and that the calculation engine consumes that same value.
- Verify block-level capacity changes correctly recalculate each division separately rather than combining athlete totals before heat calculation.
- Verify division-level capacity always overrides the block capacity only for that division.
- Verify heat-level overrides survive save/reload and later Macro movement.
- Verify manual division order remains authoritative after regeneration and that hurdle transitions ripple from that human order.
- Continue validating hurdle/barrier transitions against real hurdle-format data rather than generic placeholders.
- Verify Facilities and Overview always remain synchronized after time or facility edits.
- Verify individual heat edits ripple only dependent later rows.
- Verify ANTICIPATED → REAL switching never destroys human placement or detailed settings.
- Verify field flights always use the server-authored flight plan and are never independently re-derived by the browser.
- Confirm the LIVE / LOCKED workflow and expose an understandable user control if locking is intended for normal Meet Directors.
- Verify all unplaced blocks remain visible in Holding and no save/regeneration path silently discards a GDE.