...
Purple requires i18n., gray are for backwards compatibility.
RuleSection
07 Physical Fouls
Property | Type | Description |
---|---|---|
id | uuid | |
seasonId | id | 2024-25 |
officeId | id | Hockey Canada |
name | string | Physical Fouls |
code | text | 7 |
order | number | Display sort order |
...
Property | Type | Description |
---|---|---|
id | uuid | |
seasonId | id | 2024-25 |
officeId | id | Hockey Canada |
name | string | Head Contact |
code | string | 7.6 |
sectionId | id | Physical Fouls |
order | number | Display sort order |
RuleOption
This is a container that represents the options the scorekeeper can select.
...
Property | Type | Description |
---|---|---|
id | uuid | |
seasonId | id | 2024-25 |
officeId | id | Hockey Canada |
ruleId | id | 7.6 Head Contact (07 Physical Fouls) |
name | string | Display name |
description | string | Optional text to help describe the scenario this option is used for |
parentId | id | Allows overriding a parent option by a lower office |
order | number | Display sort order |
RuleOptionMember
These are the effective infractions upon selecting the option. Order is significant and allows for sequencing penalties as consecutive (e.g., major = 0, GM = 1) or parallel (same order) for start times
...
When creating a penalty, you’re presented with a list of rules and then select an option. That option then results in one or many penalties that are linked to an infraction.
InfractionType
Minor, Major, Match, Misconduct, Game Misconduct, Gross Misconduct, Game Ejection
...
Typical examples are 3x Stick Infraction → Game Ejection or 2x Misconduct → Game Ejection.
InfractionAccumulation
This acts as a grouping that defines the count of the member infractions necessary and what the resulting infraction is.
Property | Type | Description |
---|---|---|
id | uuid | |
seasonId | id | 2023-24 |
officeId | id | Hockey Canada |
name | string | Stick Infractions |
count | number | 3 |
infractionId | id | Resulting infraction when accumulation reached 4.8 (b) |
isReplacement | boolean | Whether the accumulation acts as a replacement infraction or not e.g., 2nd yellow → Yellow/Red Card |
InfractionAccumulationMember
These are the list of infractions that are part of the accumulation group. Order is not significant; any member infraction counts towards the accumulation group.
...
Yellow are new properties, red are deprecated.
GamePenalty
Instances of an infraction in a game are called penalties. This is a scoresheet artifact.
Property | Type | Description |
---|---|---|
id | uuid | |
gameId | id | |
teamId | id | |
participantId | id | |
servedById | id | |
isInjured | boolean | Necessary for suspensions |
Time | ||
gameTime | GameTime | Time of infraction |
startTime | GameTime | Time the penalty started to be served |
endTime | GameTime | Time the penalty ceased to be served |
isEnded | boolean | Whether or not the penalty was ended |
Infraction | ||
infractionId | id | |
optionId | id | Link penalties part of the same option group when creating instead of trying to reverse them as we currently do |
accumulationId | id | Link penalties that were created by an accumulation rule |
Legacy infraction options (deprecated) | ||
infraction | string | Infraction “id” which is something like “head-contact” in the rulebook |
duration | string | Duration “id” which is something like “minor” in the rulebook |
code | string | Infraction “code” |
Penalties are consisted linked if they have the same participantId
, gameTime
and optionId
or have an accumulationId
that matches.
...
The /meta API should return all applicable infraction, infraction option and accumulation entities.
...
Administration
A new Rulebook office tab will be added that will show rules, infractions, options and accumulations as individual cards. Each card would have a filter to show effective offices, but editing is disabled if the office doesn’t match.
...
types
sections
rules
infractions
options
members
accumulations
members
lineupLimits / pitcherLimits
Penalty Management
Legend for the examples given below
A being a match penalty (from the rule option)
B being a game misconduct penalty (from the rule option)
C being a game ejection (from accumulation rule)
Linked Penalties: Bundle of penalties created off of a choicerule option. This includes accumulation penalties caused by the choice. (Ex. choice rule option (from an accumulation rule).
Ex. rule option resulted in A, B, C → A, B, C would get returned)
First Linked Penalty: First penalty in the linked penalties. (
Ex. a choice rule option resulted in A, B, C for penalties,
passing the penalty A → A would get returned
passing C → A would get returned)
Subsequent Linked Penalties: Penalties after the first one in the linked penalties. (
Ex. a choice rule option resulted in A, B, C for penalties,
passing penalty A → B, C would get returned
passing penalty C → B, C would get returned)
Adding a penalty
Pick a choice → results in a bundle of linked penaltiesrule option → Results in a bundle of linked penalties (an accumulation infraction might get added if an accumulation rule is fulfilled)
Editing a penalty
First penalty in the linked penalties → Fully editable (can change choicerule option, participant, start time, off time) and deletable.
Changing the choice rule option will remove all linked penalties and create the new penalties based off of the new choicerule option.
Changing the participant / start time / off time will change for all the linked penalties
Deleting the penalty will automatically delete subsequent penalties alsopenalties (this includes the accumulation penalties)
Subsequent penalties in the linked penalties → Partially editable (can change only the off start time) and deletable only if its an accumulation penalty.
Changing the off start time will not affect the other penalties. (it might recalculate the offset
Deleting any of the subsequent penalties, to checkpenalty that isn’t an accumulation will automatically delete subsequent penalties (this includes the accumulation penalties)
Deleting an accumulation penalty will always only delete the one penalty