Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • railVIVID1 railVIVID1
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Graph
    • Compare revisions
  • Issues 58
    • Issues 58
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Tools
  • railVIVID1railVIVID1
  • Issues
  • #36
Closed
Open
Issue created Feb 13, 2015 by Administrator@rootOwner

Handling and displaying operating periods (de: Beachtung und Anzeige der Verkehrstage)

There are multiple possibilities to restrict the operation of certain train parts and/or service at certain operation points to certain days.

#25 describes further handling of operating periods as enhancement.

This tickets describes some basic features. Operating periods are needed for multiple functionality of the viewer:

  1. Filtering of trains in the tabular timetable viewer
  2. Filtering of trains in the graphical timetable viewer
  3. Displaying symbols in the table heading in the tabular timetable viewer (see also #9 (closed))
  4. Displaying notes as footer in the tabular timetable viewer

How to filter the time span of a certain train?

  1. Lookup all train/trainPartSequence/trainPartRef/@ref
  2. At each corresponding train part (trainPart[@id = trainPartRef/@ref]) lookup for @startDate and @endDate
  3. Otherwise (if @startDate and @endDate are not available) lookup for the corresponding operatingPeriod[@id = trainPart/operatingPeriodRef/@ref]. This element is optional and may occur only once.
  4. Look for operatingPeriod/@startDate and operatingPeriod/@endDate for the largest possible time span.
  5. Otherwise (if @startDate and @endDate are not available) look at the corresponding timetablePeriod[@id = operatingPeriod/@timetablePeriodRef]
  6. Look for timetablePeriod/@startDate and timetablePeriod/@endDate for the largest possible time span.
  7. Otherwise (if operatingPeriodRef is not available) lookup for timetablePeriod[@id = trainPart/@timetablePeriodRef]
  8. Look for timetablePeriod/@startDate and timetablePeriod/@endDate for the largest possible time span.
  9. Otherwise (if no trainPart/operatingPeriodRef and no trainPart/@timetablePeriodRef and no trainPart/@startDate and no trainPart/@endDate is available no calender constraints will work for filtering.

How to filter, at which days of the discovered time span the train will be operated?

  1. If operatingPeriod/@bitMask is available, match these binary data to the just discovered dates.
  2. Otherwise (if @bitMask is not available) calculate this for the case, that at minimum one operatingPeriod/operatingDay element is available.
  3. Consider all operatingPeriod/operatingDay elements and add their constraints with operatingDay/@operatingCode as bit mask for the 7 days of the week starting at Monday, rolled out at the period of time between (inclusively) operatingDay/@startDate and operatingDay/@endDate. Assuming, that the operatingDay constraints are disjunctive.
  4. Consider all operatingDay/operatingDayDeviance elements for holiday. In case holidayOffset="0" the operatingCode describes the operation related to the 7 days of week starting with Monday. The applicable holiday are defined in the timetablePeriod[@id = operatingPeriod/@timetablePeriodRef]/holidays/holiday/@holidayDate.
  5. Otherwise (if @bitMask and operatingPeriod/operatingDay are not available) assume a daily service.

Which data is useful for displaying?

  1. Look at operatingPeriod[@id = trainPart/operatingPeriodRef/@ref].
  2. Otherwise (if operatingPeriodRef is not available) assume a daily service and display no symbol and no notes for the train in the tabular timetable viewer.
  3. If there is at minimum one operatingPeriod/specialService element, display operation period notes, but no symbol.
  4. Otherwise (if specialService is not available) look for operatingPeriod/operatingDay. If there is no such element, display operation period notes, but no symbol.
  5. Otherwise (if operatingDay is available) look for more than one operatingPeriod/operatingDay element. If there are more than one of these elements, display operation period notes, but no symbol.
  6. Otherwise (if at maximum one operatingDay element is present) look for operatingDayDeviance/@holidayOffset ne 0. If there are further operatingDayDeviance elements for pre- or post-holiday, display operation period notes, but no symbol.
  7. Otherwise (if only holiday deviances are defined) look for more than one of these definitions. If there is more than one definition for on-holiday deviances, display operation period notes, but no symbol.
  8. Otherwise (if only one operatingDay with at maximum one operatingDayDeviance for a on-holiday is available) deduce typical operation patterns from operatingPeriod/operatingDay/@operatingCode and operatingPeriod/operatingDay/operatingDayDeviance/@operatingCode. See also #9 (closed) for a list of these operation patterns.

This data may be used for displaying symbols in the table heading in the tabular timetable viewer. (see also #9 (closed))

What to display just in case, when no symbol is applicable?

  1. That's the case for all "display operation period notes, but no symbol" hints.
  2. Look for operatingPeriod/@name for the footer of the tabular timetable viewer.
  3. Otherwise (if @name is not available) look for operatingPeriod/@code.
  4. Otherwise (if @code is not available) look for operatingPeriod/@description.
  5. Otherwise (if @description is not available) display a text "irregular operating period, but no name available"

Samples

  • OpenTrack: No operatingPeriods and no timetablePeriods
  • Viriato: operatingPeriods and timetablePeriods, but no operatingDays for "symbols"
  • TPS: operatingPeriods and timetablePeriods and operatingDays and operatingDayDeviances, but no data for "notes"
  • FBS: operatingPeriods and timetablePeriods and operatingDays and operatingDayDeviances
  • IVU: operatingPeriods and timetablePeriods, but no operatingDays for "symbols"
Assignee
Assign to
Time tracking

railML.org e.V. (Registry of Associations: VR 5750) Phone: +49 351 47582911 Altplauen 19h; 01187 Dresden; Germany