Skip to content

CourseData

Types

classCourseAssignment

An assignment of a class to a named course within a race.

rescript
type classCourseAssignment = {
  className: string,
  classId: option<string>,
  courseName: option<string>,
  courseFamily: option<string>,
  allowedOnLegs: array<int>,
}

Fields:

  • className: string
  • classId: option&lt;string&gt;
  • courseName: option&lt;string&gt;
  • courseFamily: option&lt;string&gt;
  • allowedOnLegs: array&lt;int&gt;

personCourseAssignment

An assignment of a person to a named course within a race.

rescript
type personCourseAssignment = {
  entryId: option<string>,
  bibNumber: option<string>,
  name: option<string>,
  className: option<string>,
  courseName: option<string>,
  courseFamily: option<string>,
}

Fields:

  • entryId: option&lt;string&gt;
  • bibNumber: option&lt;string&gt;
  • name: option&lt;string&gt;
  • className: option&lt;string&gt;
  • courseName: option&lt;string&gt;
  • courseFamily: option&lt;string&gt;

teamMemberCourseAssignment

An assignment of a relay team member to a named course.

rescript
type teamMemberCourseAssignment = {
  entryId: option<string>,
  bibNumber: option<string>,
  leg: option<int>,
  legOrder: option<int>,
  name: option<string>,
  courseName: option<string>,
  courseFamily: option<string>,
}

Fields:

  • entryId: option&lt;string&gt;
  • bibNumber: option&lt;string&gt;
  • leg: option&lt;int&gt;
  • legOrder: option&lt;int&gt;
  • name: option&lt;string&gt;
  • courseName: option&lt;string&gt;
  • courseFamily: option&lt;string&gt;

teamCourseAssignment

An assignment of a relay team to member-level courses.

rescript
type teamCourseAssignment = {
  bibNumber: option<string>,
  teamName: option<string>,
  className: option<string>,
  teamMemberCourseAssignments: array<
    teamMemberCourseAssignment,
  >,
}

Fields:

  • bibNumber: option&lt;string&gt;
  • teamName: option&lt;string&gt;
  • className: option&lt;string&gt;
  • teamMemberCourseAssignments: array&lt;teamMemberCourseAssignment&gt;

raceCourseData

Course data for a single race in an event.

See: RaceCourseData in the IOF XML 3.0 XSD

rescript
type raceCourseData = {
  raceNumber: option<int>,
  controls: array<IofXml.IofControl.t>,
  courses: array<IofXml.IofCourse.t>,
  classAssignments: array<classCourseAssignment>,
  personAssignments: array<personCourseAssignment>,
  teamAssignments: array<teamCourseAssignment>,
}

Fields:

  • raceNumber: option&lt;int&gt; — The ordinal race number in a multi-race event, starting at 1.
  • controls: array&lt;IofXml.IofControl.t&gt; — Full controls defined for this race.
  • courses: array&lt;IofXml.IofCourse.t&gt;
  • classAssignments: array&lt;classCourseAssignment&gt; — Class-to-course assignments for this race.
  • personAssignments: array&lt;personCourseAssignment&gt; — Person-to-course assignments for this race.
  • teamAssignments: array&lt;teamCourseAssignment&gt; — Team-to-course assignments for this race.

t

Course and control information for an event, used to transfer data from course-setting software to event administration software.

See: CourseData in the IOF XML 3.0 XSD

rescript
type t = {
  event: option<IofXml.IofEvent.t>,
  raceCourseData: array<raceCourseData>,
}

Fields:

  • event: option&lt;IofXml.IofEvent.t&gt;
  • raceCourseData: array&lt;raceCourseData&gt; — Course data per race; one element per race in the event.

resolvedCourseControl

A course-control visit resolved against the full controls defined for a race.

rescript
type resolvedCourseControl = {
  courseControl: IofXml.IofCourse.courseControl,
  controls: array<IofXml.IofControl.t>,
  control: option<IofXml.IofControl.t>,
  effectiveType: option<string>,
}

Fields:

  • courseControl: IofXml.IofCourse.courseControl
  • controls: array&lt;IofXml.IofControl.t&gt; — The matching full control records for all referenced control ids.
  • control: option&lt;IofXml.IofControl.t&gt; — The first matching full control, useful for regular ordered courses.
  • effectiveType: option&lt;string&gt; — CourseControl.type when present, otherwise the first referenced control's type.

Values

parseClassAssignment

rescript
let parseClassAssignment: IofXml.XmlUtils.xmlElement => option<classCourseAssignment>

parsePersonAssignment

rescript
let parsePersonAssignment: IofXml.XmlUtils.xmlElement => option<personCourseAssignment>

parseTeamMemberAssignment

rescript
let parseTeamMemberAssignment: IofXml.XmlUtils.xmlElement => option<
  teamMemberCourseAssignment,
>

parseTeamAssignment

rescript
let parseTeamAssignment: IofXml.XmlUtils.xmlElement => option<teamCourseAssignment>

parseRaceCourseData

rescript
let parseRaceCourseData: (IofXml.XmlUtils.xmlElement, int) => raceCourseData

findRaceControl

rescript
let findRaceControl: (
  array<IofXml.IofControl.t>,
  string,
) => option<IofXml.IofControl.t>

resolveCourseControls

Resolve a course's control-code references to the full race controls.

This helper is generic to IOF CourseData and preserves alternative controls by returning all matches in controls.

rescript
let resolveCourseControls: (
  raceCourseData,
  IofXml.IofCourse.t,
) => array<resolvedCourseControl>

parse

Parse an IOF XML 3.0 CourseData document string into a typed structure.

rescript
let parse: string => result<t, string>

serializeCourseControl

rescript
let serializeCourseControl: IofXml.IofCourse.courseControl => string

serializeCourse

rescript
let serializeCourse: IofXml.IofCourse.t => string

serializeControl

rescript
let serializeControl: IofXml.IofControl.t => string

serializeAssignment

rescript
let serializeAssignment: classCourseAssignment => string

serializePersonAssignment

rescript
let serializePersonAssignment: personCourseAssignment => string

serializeTeamMemberAssignment

rescript
let serializeTeamMemberAssignment: teamMemberCourseAssignment => string

serializeTeamAssignment

rescript
let serializeTeamAssignment: teamCourseAssignment => string

serializeRaceCourseData

rescript
let serializeRaceCourseData: raceCourseData => string

serializeEvent

rescript
let serializeEvent: IofXml.IofEvent.t => string

serialize

Serialize a CourseData structure to an IOF XML 3.0 document string.

rescript
let serialize: t => string