Divecalc User's Guide

23.8.2017
Arto Huusko <armihu@gmail.com>

Table of Contents


Introduction to Divecalc

Diving Concepts in Divecalc

In Divecalc a diving competition that is composed of several events is managed as a single entity.

The competition is divided into one or more events where the participants of the competition compete as divers. Each diver has a dive list that the diver executes in the event. Each participant may compete in more than one event in the competition. Judges are assigned to the events to award the scores.

The participants and judges belong to teams that can be either countries or diving clubs.

Events that are dived simultaneously can be grouped into event groups. Events that are in an event group are dived so that the first round of the first event is dived first, then the first round from the second event in the group. When the first round of all events in the group is done, the second round of the first event is dived, and so on.

When an event is competed in several phases, for example first a preliminary and then a final, all phases appear as separate events. First the event for the preliminary phase is competed, and after that the event for the final phase can be created and competed.

Competition Files

All information of a diving competition is stored in a competition file.

The competition file is stored normally on your computer and the file can be managed just like any other file.

For example, you can transfer it to another computer using an USB stick, email, and the file can be opened on the other computer using Divecalc in the same way as on the original computer.

Divecalc competition files have the file name extension .div.

Using Divecalc

Title Screen

When Divecalc starts, the Divecalc title screen is presented first. From this screen it is possible to load and continue a previously created competition, to start a new competition, start reading this manual, or edit Divecalc configuration.

The screen also lists recently opened competition files. A competition can be loaded simply by clicking the name of the competition.

All the functions of the title screen are also available in menu bar that is visible at the top of the window. The menu bar is accessible always in Divecalc, so it is not necessary to use the title screen.

Staring a New Competition

A new competition can be started from the New Competition action in the title screen or in the File menu.

Saving a Competition

Competition can be saved at any time with the Save Competition action in the File menu or in the competition action bar (see Competition Screen).

When Save Competition is used for the first time after starting a new competition, the of the competition file is asked first. After saving the competition once, the same file is used when the competition is saved again.

If for the competition needs to be saved to a different file, the Save Competition As... action in the File menu can be used. When this is used, the name of the competition file is asked again. After the competition is saved like this, the new file name will be used when Save Competition is activated again.

By default, Divecalc saves the competition file automatically when dive lists or competition results are changed. Automatic saving saves the competition to the same file that is used when the competition is saved using Save Competition.

Loading a Competition

A competition can be loaded from a file by using the Load Competition action in the title screen or in the File menu. When the action is selected, a file selection dialog is opened. Once the competition file is selected, it is loaded in to Divecalc.

Competition Screen

When a new competition is started or a competition is loaded from a file, the competition screen is displayed.

The competition screen is divided into two areas. On the left is the competition action bar that is always visible in the competition screen. On the right side of the screen is the competition data area

The competition data area is divided into several tabs. Each tab contains a data screen that displays and allows editing a part of the competition. The data screens can be opened from the actions in the competition action bar or from actions in an already open data screen. When an action is activated, a new tab is opened in the competition data area, and the data screen is displayed in the tab. A data screen can be closed at any time by clicking on the red X next to the tab title.

Each data screen is divided into an action bar at the top of the screen and the data display below it. The action bar contains actions specific to the data that is displayed on the screen.

Navigating a Competition

All data and functions of the competition except the divers can be accessed directly from the competition action bar on the left side of the competition screen. The buttons in the action bar allow both editing already existing data and creating new entries to the competition. Some of the buttons are not used to access any particular competition data but they are used to do actions on the competition.

Teams

Teams participating in the competition are managed with the Teams button in the competition action bar.

When the button is clicked, a list of the teams already entered in the competition is displayed, and below the list is a button that can be used to enter a new team into the competition. When the name of a team on the list is double clicked, the team is opened for viewing or editing as a tab in the competition data area.

When a new team is entered, a dialog showing new team choices is presented. The dialog allows to enter a nationality, some previously created team, or a new, empty team.

Participants

Participants participating in the competition are managed with the Participants button in the competition action bar.

When the button is clicked, a list of the participants already entered in the competition is displayed, and below the list is a button that can be used to enter a new participant into the competition. When the name of a participant on the list is double clicked, the participant is opened for viewing or editing as a tab in the competition data area.

Judges

Judges available in the competition are managed with the Judges button in the competition action bar.

When the button is clicked, a list of the judges already entered in the competition is displayed, and below the list is a button that can be used to add a new judge into the competition. When the name of a judget on the list is double clicked, the judge is opened for viewing or editing as a tab in the competition data area.

Assignment of judges to events is managed in the data screen of each event in the competition.

Events

The events competed in the competition are managed with the Events button in the competition action bar.

When the button is clicked, a list of the events already in the competition is displayed, and below the list is a button that can be used to add a new event into the competition. When the name of an event on the list is double clicked, the event is opened for viewing or editing as a tab in the competition data area.

In addition to the properties of the event, the divers that compete in the event, the start list, and the judges that are assigned to the event are managed as a part of the event.

Divers and Dive Lists

The divers that compete in the events are not directly accessible from the competition acton bar but they are managed separately in the data screen of each event. An event must be first accessed using the Events button in the competition action bar, after which the divers of the selected event can be managed. The divers are managed in the Divers tab visible on the right in the event data screen.

Event Groups

The event groups managed with the Event Groups button in the competition action bar.

When the button is clicked, a list of the event groups already in the competition is displayed, and below the list is a button that can be used to add a new event group into the competition. When the name of an event group on the list is double clicked, the event group is opened for viewing or editing as a tab in the competition data area.

Schedule

The competition schedule editor can be accessed with the Schedule button in the competition action bar. The schedule editor allows viewing and editing of the start and end time of the events in the competition. Additional schedule entries such as award ceremonies can also be managed in the schedule editor.

Results Input

Results are entered in the results input screen that is activated using the Results Input button in the competition action bar.

Printing

Printing screen is activated using the Print button in the competition action bar.

Basic Configuration

Divecalc configuration editor is activated using the Settings action in the title screen or in the File menu.

The configuration editor is divided into tabs. The first tab contains the basic configuration entries that are discussed here. The other configuration options are discussed in later chapters.

The basic settings of Divecalc are:

Printing Configuration

Printing is configured on the Printing tab in the configuration editor.

Printing configuration allows adding image files, for example club logos, to Divecalc's default printers.

Printing configuration also makes it possible to define custom report layouts. Preparing the layout, however, is a technical task that requires knowledge of XML and XSLT technologies. Custom layouts are described in detail in report.txt.


Organizing a Competition

Starting a New Competition

A new competition can be start by using the New Competition action in the Divecalc title screen.

After the new competition has been created, the basic properties of the competition can be entered on the Competition Properties screen: competition name, place and date.

The Web Id is used in the competition web address when the Divecalc Web Result Service is used. This should be an abbreviated name of the competition where only numbers, letters a to z and - and _ can be used (due to limitations of internet addresses). The name should also be internationally unique, in case two competitions are running at the same time.

Note: once you have set the Web Id and started sending live results to the web, do not change the Web Id. If it is changed, the old competition data before the change will remain available in the web and will not be updated.

The competition file can be created with the Save Competition action in the competition action bar on the left side of the screen. On the first time the action asks for the name of the file, and on the following saves, and when the competition is saved automatically, the same file is used.

Entering the Competition Program

After the competition has been created the competition program can be entered into the competition. This means creating the events that are dived in the competition. The start times and end times for the events can be also entered, and optionally other competition program entries such as award ceremonies can be entered.

Entering the Events

Events can be added to the competition by clicking on the Events button in the competition action bar. Clicking on the button displays the list of the events that are already in the competition. A new event can be added by clicking on the Create New Event button below the list. This action displays the New Event dialog on the screen.

The format of the event to be added is entered first in the New Event dialog. The dialog has the following options for choosing the event format:

After choosing the correct options, clicking the OK button adds the event to the competition and the data screen of the event is then displayed.

The event properties, schedule, divers and judges can be edited on the data screen of the event. The ruleset and the series that were selected in the New Event dialog can be changed on the data screen even after the event has been created and, if necessary, they can be corrected even during competition.

At this point, when entering the competition program to the new competition, the correct competition type for the event should be selected on the data screen. Competition type determines in how many phases (preliminary, final, etc.) the event is competed, and what are the rules for qualifying from one phase to another. Competition type can be changed with the Competition Type button on the left side of the event data screen.

The start time of the event may be also entered, if it is known in advance at this point.

Editing the Schedule

After the events have been entered, the competition schedule can be entered. Most likely only preliminary times can be entered, unless the number of participants is already known.

The competition schedule editor is opened with the Schedule action in the competition action bar. The list of all events as well as other entries such as award ceremonies is shown on the schedule data screen in chronological order. The start and end times of the events can be edited on the screen, and the other entries can be managed using the actions on the right side of the screen.

Competition Invitation

When the competition invitations are sent to the participating teams, the Divecalc competition file with the competition program can be attached to the invitiation.

This allows the teams to review the program with Divecalc. The teams can also enter their participants to the competition using Divecalc and then send the filled competition file back to the organiser. This way the competition organiser can import the participation entries of teams directly into the competition and the organiser does not have to enter the participants of all teams manually.

Note: Divecalc is free for all teams to use for the purpose of entering participants into competition files.

Entering Teams, Participants and Judges

New teams, participants and judges can be entered into the competition with the Teams, Participants and Judges actions. They all function in the same way as the Events action: clicking on the button displays a list of already entered entries, and below the list is a button that allows creating new entries.

Entering Participants and Dive Lists to Events

New divers can be entered to events on the data screen of the events. The Add New Diver action on the Divers tab on the right side of the event data screen adds a new, empty diver to the event and then displays the data screen for the diver.

On the diver data screen the participant must be selected first. This is done by clicking on the arrow button in the Diver button on the left side of the screen. Clicking on the button displays a list of the participants in the competition. A participant is selected by double clicking on the name of a participant.

After the participant has been selected the dive list may be entered on the right side of the screen.

When the diver data screen is closed (by clicking on the red X in the tab), the diver information is checked. If there are errors, the diver data screen will not close immediately, and the problem is shown on the screen. The errors may be either corrected at this point, or the diver data screen may be closed anyway despite despite errors, if the red X button on the tab is clicked again.

Divers that have errors are coloured red in the diver list on the event data screen.

It is possible to change the degree of difficulty of a dive manually. When this is done, the DD is shown in yellow color on the screen. The DD can be changed back to the computed DD by clearing the DD and pressing enter.

Importing Participants and Dive Lists

Teams, judges, participants and dive lists can be imported to a competition from another competition file with the Import Participants action in the competition action bar.

Start Lists

Event start lists can be set or drawn on the data screen of the events. The buttons Draw Start List and Set Start List in the Divers tab can be used to manage the start list. Draw Start List will set a random start list for the event. Clicking on the Set Start List allows the start list to be set to specific order. The order of the divers can be done by clicking on a diver's name and then dragging the diver with the mouse to the correct position.

By default the diver list shows the divers sorted alphabetically. The start list of an event can be reviewed by changing the display from Show Divers button.

Entering Judges to Events

The judges can be entered to events on the data screen of the events in the Judges tab on the right side of the screen.

A judge is selected by clicking on the arrow button next to the judge. Clicking on the button displays a list of the judges in the competition. A judge is selected by double clicking on the name of a judge.

If two judge panels are used, the panel is selected with the Panel button. In addition to selecting the judges for the panels, the rounds on which the panels judge must be also set by clicking on the arrow button next to the On Rounds button. This opens a small window where the rounds can be selected.

Checking Events

The divers, start list and judge settings of individual events can be checked with the Check Event button in the action bar on the data screen of the events. Before results input for an event can be started, the event must have a start list and valid judge settings. Divecalc does not absolutely require that the dive lists are correct, but Divecalc will warn about errors in them.

All events of the competition can be checked with the Check Events action in the competition action bar.


Results Input and Result Displays

Results input and control of result display devices is done in the results input screen. The results input screen is accessed with the Results Input button in the competition action bar.

Before using external judge awards input or result display devices, the devices must be configured. Result device configuration is done in the Device Manager tab in the Divecalc configuration editor (see Basic Configuration). Device configuration is explained in Result Device Configuration.

Using Results Input Screen

Basic Operations

Selecting an Event

The event whose results are being entered in selected from the Event drop-down list at the top of the screen. Only one event at a time can be active in the results input screen.

Selecting a Diver

In normal conditions the results input screen always shows the diver who is next to dive in the active event.

However, a different diver can be selected, for example, to change an award, if a wrong award was entered or a judge wants to change her award.

Any diver of the active event can be selected at any time from the Diver drop-down list.

Selecting a Dive

In normal conditions the results input screen always shows the next dive of the active diver.

If the awards of an already executed dive need to be reviewed or corrected, the dive can be selected at any time from the Round drop-down list.

Selecting the Next Diver

The Next Diver button always moves the results input screen to the diver whose turn to dive is next.

The button does not activate the next diver from the start list. For example: the next diver to dive is diver number 5. But the awards for diver number 1 needs to be corrected, so diver number 1 has been selected using the Diver drop-down list. After the corrections have been made, the Next Diver button can be clicked, and the results input screen moves back to diver number 5 (not diver number 2).

Controlling Result Devices

Results input and display devices are controlled through the Device Control button. Clicking on the button opens a menu of choices.

The Connect menu is always visible and devices can be connected to Divecalc through it. The menu displays all configured devices that are not yet connected.

When a device has been connected the menu displayed by Device Control contains a separate menu entry for the connected device. Through this menu it is possible to send commands to the device and disconnect the device. Some devices also have Open Device Control entry in the menu. This will open a separate device specific control window that typically displays status information about the device and may contain further controls.

When devices are connected, the buttons Accept Awards, Next Diver and Request Awards may send automatically commands to the devices. This means, for example, that it is not necessary to manually use Device Control button in order to show the awards of a dive on a result display. Instead, when Accept Awards is clicked, the awards are automatically shown on the connected displays.

The commands that are sent to each device depends on the configuration of each device.

Results Input

Divecalc supports two modes of results input: manual and automatic.

In the manual input mode the computer operator enters the judges' awards to Divecalc by hand when the judges show their scores.

In the automatic input mode each judge inputs their own award individually. The judges use a separate device that sends the award to Divecalc. The computer operator only controls when awards are requested from the judges, and then accepts the awards after the judges have entered them.

In both modes Divecalc automatically calculates the sum, result and total points of the dive and updates the current standings of the divers.

Manual Results Input

In manual results input the computer operator is responsible for controlling the current diver in Divecalc and entering the judges' awards for the correct diver when the judges show their awards and they are announced.

At the beginning of the event, the event must be first selected in the results input screen. When the first diver is announced, the Next Diver button must be clicked once. After this, the procedure presented below is followed for the duration of the event.

Note that all actions are performed using the keyboard only, there is no need to use the mouse at all. The "click" action referred to in the list below can be accomplished by pressing the Enter key on the keyboard. Pressing Enter activates the action of the button that is surrounded with a blue border.

  1. When the diver begins her dive, the Request Awards button is clicked. This activates the award entry field of the first judge.

  2. When the judges show the awards, the awards are entered to the award fields. After entering an award, pressing Enter moves to the next judge.

    If a judge awards a half mark for a dive, it is not possible to enter the award as, for example, 5.5 or 7.5. Instead, the half mark is entered by using one of the following symbols (the operator can choose the best and quickest way depending on the keyboard):

  3. After all awards have been entered, the penalty entry fields are activated. If the referee does not order any penalties the default values can be accepted simply by pressing Enter for each field. Otherwise the penalties are entered like the awards.

  4. After the penalties have been entered the Accept Awards button is clicked. The awards are stored and the results are calculated at this point.

    Note: if the awards are not accepted, they are not stored in Divecalc. Changing to another diver without accepting the awards causes the awards to be lost.

  5. After the awards have been accepted the Next Diver button is clicked, and this procedure starts from the beginning for the next diver.

    Note: if a result display is in use, a short delay between clicking Accept Awards and Next Diver should be held in order to keep the scores visible on the display. The length of the delay should be discussed with the referee of the competition.

Automatic Results Input

In automatic results input the computer operator is responsible for controlling the current diver and requesting that the judges enter their awards. The operator does not need to enter the awards manually.

Automatic results input mode is activated when ever a device that can be used to request awards is connected through the Device Control button.

In automatic results input mode the beginning of the event is the same as in the manual mode: the event must be first selected, and Next Diver button must be clicked once. After this, results input follows the following procedure. Note that, like in manual results input, all actions can be performed by using the keyboard.

  1. When the diver begins her dive, the Request Awards button is clicked. This sends the award request to judges, and the controls in the results input screen are disabled.

    Note: the Request Awards button changes to Abort Request. In case there is some problem with the awards input from the judges, the request can be aborted with that button. This allows for manual entry of the awards, or requesting the award from an individual judge (this can be accomplised through the Device Control button).

    Note: if Request Awards button is clicked again after the awards have been received, the previous awards are forgotten. If only one judge wants to change her award, the award can be requested individually from that judge through the Device Control button. The Request Awards button should not be used in this case, because then all judges have to enter their awards again.

  2. When all of the judges have entered their awards and they are visible in Divecalc, the results input screen controls are activated again.

  3. If necessary, enter penalties manually like in manual results input mode.

  4. After the penalties have been entered and the referee has reviewed the scores, the Accept Awards button is clicked. The awards are stored and the results are calculated at this point.

  5. After the awards have been accepted the Next Diver button is clicked, and this procedure starts from the beginning for the next diver.

    Note: if a result display is in use, a short delay between clicking Accept Awards and Next Diver should be held in order to keep the scores visible on the display. The length of the delay should be discussed with the referee of the competition.

Aborting or Disqualifying Divers

If a diver ends competing prematurely, for example due to injury, or a diver is disqualified from the event, the diver needs to marked as such in Divecalc.

This is done by first selecting the correct diver in the results input screen. The diver information screen is then opened by clicking on the Edit Diver button. In the diver information screen, the diver can be marked as aborted or disqualified by clicking on either the Aborted or the Disqualified checkbox.

Automatic Results Input Devices

Divecalc currently supports only Divecalc's own automatic results input system. It is possible to implement support for other systems, provided that documentation for the system is available.

Divecalc Web Judge Pad

Divecalc Web Judge Pad is a judge award input system that is implemented using standard, off-the-shelf devices that have reliable local area network connectivity (for example over WiFi), touch screen and web browser capabilities. The devices can be for example smart phones, tablets or laptops.

Each judge uses a device that is running a web browser that is connected to Divecalc.

Before the beginning of an event the results input screen in Divecalc must be first connected to a Divecalc Web Judge Pad configuration. After this the web browser on each judges' device must be started and connected to Divecalc. The address is http://<ip.address.of.divecalc.computer>:<port number>/. The address can be found in Divecalc from the results input screen by clicking Device Control, selecting the web judge pad device, and selecting Open Device Control.

Once the judge application loads in the web browser, Divecalc password and the number of the judge must be entered first. After this the device may be handed over to the judge.

During competition the following procedure is followed by the judge using the input device:

  1. At the beginning of the event the name of the judge is displayed.

  2. Before a diver starts her dive the name, team and dive of the diver is displayed.

  3. After the dive the judge may input the award.

  4. Before the award is sent to Divecalc a confirmation of the award is asked from the judge. The judge may enter another award, or the award can be confirmed, and it is then sent to Divecalc.

  5. When the awards have been accepted in Divecalc by the operator, the awards are shown to the judge again.

Divecalc Mobile Judge Pad

Divecalc Mobile Judge Pad is a wireless judge award input system that is implemented using standard, off-the-shelf mobile devices that have reliable WiFi and touch screen capabilities.

Each judge uses a mobile device that is running a separate program called Divecalc Judge Pad. Divecalc and the mobile devices communicate with each other over a WiFi network.

Before the beginning of an event the results input screen in Divecalc must be first connected to a Divecalc Mobile Judge Pad configuration. After this the Divecalc Judge Pad software on each mobile device must be started and connected to Divecalc.

In the Judge Pad software, the local Internet address of the Divecalc computer must be entered first, and then the number of the judge who will use the mobile device. After this the device connects to Divecalc, and the device may be handed over to the judge.

During competition the following procedure is followed by the judge using the input device:

  1. At the beginning of the event the name of the judge is displayed.

  2. Before a diver starts her dive the name, team and dive of the diver is displayed.

  3. After the dive the judge may input the award.

  4. Before the award is sent to Divecalc a confirmation of the award is asked from the judge. The judge may enter another award, or the award can be confirmed, and it is then sent to Divecalc.

  5. When the awards have been accepted in Divecalc by the operator, the awards are shown to the judge again.

Divecalc Judge Pad for mobile devices can be downloaded from http://divecalc.net/divecalc/download.html.

Displaying Results

Result List

A list of the results of an event can be opened by clicking on the Show Results button in the results input screen. The list is updated automatically when the results of the event change.

This result list can be kept open on the screen during the competition. The list can be used either by the operator, or it can be used with a separate monitor or a video projector to display the results to the audience.

Result Feed Web Server

The results can be made available over HTTP in JSON or XML format via a built in web server when using Result Feed Web Server device. This makes it possible to customize Divecalc's output using external software that can access the data.

The simplest use case is to display results in a web browser by combining the XML data with an XML stylesheet (XSLT), but result feed web server is not limited to this functionality. Another possibility to leverage web browsers is to build a javascript application that reads the JSON data from Divecalc and displays the results on a web page.

When a result feed web server is activated in a competition the following URLs are made available from Divecalc:

The port number is configured in the result feed device settings in Divecalc.

Both XML and JSON URL also accept query parameter ?since=timestamp, where timestamp is the number of milliseconds since 1.1.1970 UTC. If there has been no change in the data since the provided timestamp an empty response is returned.

The JSON and XML formats are described in detail in resultfeed.txt.

Please contact the author for more details.

Divecalc Display

The results can be displayed on external displays with a separate program called Divecalc Display. To show results, the Divecalc Display program is started on the computer where the result display needs to be shown, and then Divecalc is connected to the Divecalc Display program. If remote computers are used, the computers need to be connected to each other over the network.

Divecalc can be connected to several Divecalc Displays at the same time, and also several Divecalc Display programs can be used on a single computer at the same time.

When connected, Divecalc sends data to the display program which shows it inside a window on the computer's screen. This window can then be displayed on a LED display or, for example, it can be displayed using a video projector.

If a LED display is available, the manufacturer of the LED display has provided a separate program that is used to display a portion of the computer's screen on the display.

The external display can be used to display various information about the event: start list, results, next dive, and the awards for the last dive.

Divecalc Web Result Service

Live results from the competition can be published on Divecalc web site.

When Divecalc is connected to the Divecalc Web Result Service from the results input screen, a single page displaying the results for the last dive and current standings of the event is updated on the web. When viewed, the web page refreshes itself automatically in order to show the next dive to the viewer.

The live results web page can be found from address http://divecalc.net/divecalc/live/. There is a separate web page for each running competition. The name of the competition web page comes from the Web Id field in the Competition Properties screen.

Logging Results

Results can be logged to a suitable printer, text file, or a remote computer over the network.

When awards are accepted, the awards are written to the log as simple text. If a remote computer is used for logging, it must be configured so that it can accept text from the network and then display, store or forward it further.

Result Device Configuration

Result Input and Display devices are configured in the Device Manager tab in Divecalc configuration editor. The configuration editor is accessed by using the Settings action in the title screen or in the File menu.

Basic Operations

Adding and Removing Devices

New devices can be configured by clicking on the Add New Device button.

When a new device is added, the type or the driver of the device is asked first. The driver of a device can not be changed later, but it is of course possible to remove a device and create a new one with a different driver.

Configurations can be removed by selecting a configuration and clicking on the Remove Device button.

Configuring a Device

When a new device is created, the editor for the configuration of that device is displayed on the right side of the window.

The configuration of already created devices can be opened by clicking on the name of a device on the device list on the left side of the window.

Common Configuration

The top part of the configuration editor is always the same regardless of the driver of the device. This area is used to configure the name of the device (displayed in the Device Control menu of the results input screen) and the automatic actions that should be executed with the device in the results input screen.

The operator must always use the Request Awards, Accept Awards and Next Diver actions in the results input screen. For each device different Display Actions can be attached to those Results Input Action actions the operator does. For example, a result display can be configured to display the awards of a dive every time Accept Awards is clicked.

Device Configuration

Below the common configuration part is the area where driver specific device configuration settings are visible.

IO Configuration

Most devices may be connected to Divecalc in different ways, and how they are connected is configured in the IO Settings tab.

If a driver uses always the same connection system the IO Settings is not visible, and any connection related settinsg are displyed in the driver's settings.

Device Groups

Device groups can be created by clicking on the Add New Device Group button. Devices can be added or removed from the group by using the checkboxes that are visible when the group is selected in the device manager.

Device groups can be used to simplify connecting the results input screen to the devices. If several devices are used in the competition, they all can be added to a device group. When the devices need to be connected when the results input is started, they can be all connected simply by connecting the group.

Drivers

Divecalc Display
Common Settings

Display should be configured so that Display Awards display action is attached to input action Accept Awards, and Present Dive display action is attached to input action Next Diver.

Device Settings IO Settings

Divecalc Display is used over the network (TCP/IP). The address of the computer and the network port used by Divecalc Display program must be entered here.

If Divecalc Display is used on the same computer where Divecalc is, the address of the computer is localhost.

Note:: if Divecalc Display is used on the same computer where Divecalc is, and Divecalc Mobile Judge Pad shall be used also, configure Divecalc Display to use some other port than 17475, because that port is reserved for Divecalc Mobile Judge Pad.

Divecalc Web Judge Pad
Device Settings
Divecalc Mobile Judge Pad
Common Settings

Judge Pad should be configured so that Display Awards display action is attached to input action Accept Awards, and Present Dive display action is attached to input action Next Diver.

Device Settings
Divecalc Web Result Service
Common Settings

Live result should be configured so that Display Awards display action is attached to input action Accept Awards.

Device Settings
Result Feed
Common Settings

Result feed should be configured so that Display Awards display action is attached to input action Accept Awards, and Present Dive display action is attached to input action Next Diver.

Device Settings

The JSON and XML formats are described in resultfeed.txt. The legacy text format is described in dcfeed.txt.

IO Settings

Result feed can be sent to a file or to a remote computer.

Result Feed Web Server
Common Settings

Result feed should be configured so that Display Awards display action is attached to input action Accept Awards, and Present Dive display action is attached to input action Next Diver.

Device Settings

The JSON and XML formats are described in resultfeed.txt.

Result Log
Common Settings

Result log should be configured so that Display Awards display action is attached to input action Accept Awards.

Device Settings IO Settings

Result log can be sent to a file or to a remote computer. The result log can also be sent to a printer by configuring it to log to file and setting the file name to PRN or, for example, LPT1.

Competing Several Events at a Time

Divecalc supports two modes of competing more than one event at a time. The first mode is intended for smaller competitions where the events are short, and can thus be competed at the same time using the same facilities. The second is intended for bigger competitions where big events can be competed at the same time using different facilities.

Using Event Groups

Event groups can be used to execute two or more events at the same in such manner that one round from each event is competed in turns. When a round from one event is finished, the same round of the next event is competed. Once the round is finished in all the events of the group, the next round of the first event is started.

In the results input screen event groups are processed automatically and the operator does not need to handle event groups in any way. When the competition starts, the operator selects the first event of the event group for results input. After that, at the end of a round, the results input screen automatically switches to the next event in the event group. Once all events have finished the round, the results input screen switches to the next round of the first event.

Competing Events in Parallel

Divecalc also supports executing two or more events in parallel using different facilities.

For each event that is competed simultaneously, a different computer with Divecalc installed is needed. On each computer there is a separate copy of the competition file, and the events are competed normally just as if they were the only event being competed at the time.

When the events are finished, the results that are stored in the separate competition files need to be merged to a single competition file. After that the results for all events are again in a single file. The results for an event can be loaded from a different file with the Import Results action on the event data screen.

Below is a step-by-step list that demonstrates competing two events in parallel.

  1. There are two computers, COMPUTER-A and COMPUTER-B.

  2. There is a single copy of the competition file, competition.div on COMPUTER-A.

    The competition file contains two events, Men, 1 meter and Women, 3 meters.

  3. The results for Men, 1 meter shall be entered on COMPUTER-A and the results for Women, 3 meters shall be entered on COMPUTER-B.

  4. A copy of competition.div is made to a new file named competition-B.div. This file is copied to COMPUTER-B.

  5. The events are competed normally.

  6. After the events have been finished, competition-B.div is copied back to COMPUTER-A.

  7. On COMPUTER-A, the information for Women, 3 meters is opened. At this point, on COMPUTER-A, Women, 3 meters does not contain any results.

  8. The Import Results action is activated. A file selection dialog opens, and the file competition-B.div copied back from COMPUTER-B is selected.

  9. After this action COMPUTER-A has the results for both Men, 1 meter and Women, 3 meters.

  10. Save the competition on COMPUTER-A. Now competition.div on COMPUTER-A contains the results for both Men, 1 meter and Women, 3 meters.

If more events are to be competed in parallel again, start the list from the top again.

In order for Import Results to work, the events need to have exactly the same divers in them. That is, if a new diver is added on COMPUTER-B or a diver is removed, those steps need to be duplicated on COMPUTER-A before importing the results. For this reason it is simplest if divers are not removed, but they are marked as aborted instead.


Rules

Divecalc ships with a set of ready to use diving rulesets, especially the latest FINA rules. In addition to FINA rules, Divecalc contains some local rules.

Divecalc also provides an editor that makes it possible to create own rules in Divecalc. The ruleset editor can be started from the Rules action in Divecalc title screen or from the File menu.

Own rules are stored in the competition file, when they are used, and the rules that are found in a competition file are automatically available in any Divecalc installation, when such competition is loaded. In other words, when new rules are created for a competition, the rules can be made available for other users simply by sending a competition file for them.

One ruleset contains rules for several different series. The ruleset editor displays all properties of a series being edited on the screen, and tooltips of the property editors explain the property in more detail.

Dive list validation of the rules is defined for the basic cases (rules matching normal FINA rules) by the properties. More complex dive list validation rules can be defined with a set of expressions, more or less like those that can be used in a spreadsheet. Each dive list is validated against each expression, and if any expression is false, the dive list is not valid.

Dive List Validation Rules

Data Types

The following data types are available:

Every array is also an object, and as such the following elements are available in every array object with the . operator (the functions are explained in more detail in the function section below):

Every string is also an object, and as such the following elements are available in every string object with the . operator (the functions are explained in more detail in the function section below):

Operators

The following numeric operators are available:

The following logical operators are available (allowed on true/false values):

The following comparison operators are available:

Context

Every expression is evaluated in a context, where there are various named values available.

this

In every context is always a value named this. The value of this depends on the context, and can change when calling a function, for example. The value of this in various function contexts is explained in the function description section below.

If this is an object, its properties can be accessed either using the complete form, for example this.something, but also with a shorter form: .something.

dives

The dive list being validated is available with the name dives. The value is an array, and the number of the elements in the array is the number of the dives. Each element of the array is an object with the following properties:

Other Names

Other names available are listed below.

Functions

Global Functions

The functions available as global names are listed below.

array

Creates new array.

Parameters: variable number of parameters.

Returns: a new array that contains the parameter values as elements.

for

Creates new array from the results of evaluating an expression repeatedly by iterating an array and providing the elements of the array for computation.

Parameters:

  1. An array that is iterated.

  2. Initial value for the evaluation.

  3. An embedded expression that is evaluated for each element of the array in the first parameter. For each evaluation, the value of this is an array with two elements. The first element of the array is the result of the previous evaluation (or the initial value for the first evaluation) and the second element is the value for the array in the first parameter.

Returns: the result of the evaluation for the last element of the array.

Example: compute multiplication of the elements of an array:

for(array(1, 2, 3, 4), 1, {this[0] * this[1]})
if

Selects one of the values based on true/false selection.

Parameters:

  1. A boolean value.

  2. An embedded expression that is evaluated if the first parameter is true.

  3. An embeddeed expression that is evaluated if the first parameter is false.

Returns: the value of the second or the third parameter, depending on the value of the first parameter.

integer

Converts a value, for example a string to a number. Fails if the value can not be converted to a number.

Parameters:

  1. The value that is converted.

Returns: the parameter as integer.

seq

Produce a new array with sequential numbers.

Parameters:

  1. The first value of the array.

  2. Step size: how much the next value is incremented from the previous value.

  3. The number where the array stops (inclusive).

Returns: an array with the specified numbers.

Example: produce array with values 3, 7, 11 and 15.

seq(3, 4, 16)
string

Converts a value, for example a number to a string.

Parameters:

  1. The value that is converted.

Returns: the value converted to a integer.

Math Functions

The functions available in the math object are listed below.

min

Select minimum value from two values.

Parameters:

  1. Value 1.

  2. Value 2.

Returns: the value that is smaller than the other.

max

Select maximum value from two values.

Parameters:

  1. Value 1.

  2. Value 2.

Returns: the value that is greater than the other.

sum

Compute sum of an array of numbers.

Parameters: either one parameter that is an array of numbers, or any number of parameters, each of which is a number.

Returns: the sum.

Array Functions

The functions of array objects are listed below.

append

Creates a new array with the contents of this array followed by the parameters.

Parameters: zero or more parameters. If there is only one parameter, and it is an array, then the contents of that array is appended, instead of the array.

Returns: a new array that starts with the elements from this array, followed by the parameters as new elements.

distinct

Create a new array whose elements are those that are distinct in this array.

Parameters: zero or one parameter. If there are no parameters, then "naturally" distinct elements are selected. If there is one parameter, then that parameter must be an embedded expression that is evaluated to produce a new value that identifies the distinctness of the array element. The value of this for the embedded expression is the array element.

Returns a new array that contains the elements that are distinct in this array.

Example: select distinct dives from the dive list, disregarding dive position.

dives.distinct({.dive[1:.dive.length - 1]})
filter

Create a new array whose elements are elements of this array that match an expression.

One parameter that is an embedded expression that must return true or false. When the expression is evaluated, this is the element from this array.

Returns: an array with the elements for which the parameter expression evaluates to true.

Example: select all dives in group 2.

dives.filter({.details.group = 2})
indexOf

Find index of element in this array.

One parameter that specifies the element to locate.

Returns the index or 0 if the element is not found in the array.

lastIndexOf

Find last index of element in this array.

One parameter that specifies the element to locate.

Returns the index or 0 if the element is not found in the array.

select

Create a new array where the elements are computed based on the elements of this array.

One parameter that specifies the embedded expression that is used to compute one element of the new array based on one element of this array. When the expression is evaluated, this is one element of this array.

Returns the new array.

For example, select the dive numbers from the dive list objects:

dives.select({.dive})
sort

Create a new array where the elements of this array are sorted in specified order.

One parameter that specifies the embedded expression that is used to compare two elements of this array. When the expression is evaluated, this is an array with two elements that must be compared. The expression must return a number. If the first element is to be sorted before the second, the return value must be negative. If the first element is to be sorted after the second, the return value must be positive. If the order between the two elements is not relevant, the return value must be zero.

If no parameter is specified, the elements are sorted according to their natural order.

New array where there elements of this array are sorted.

String Functions

The functions of string objects are listed below.

The functions filter, append, indexOf, lastIndexOf, select and distinct work the same way as with arrays.

startsWith

Tests does this string start with the specified string.

One parameter: the string that prefix of this string is compared to.

Returns true if this string starts with the parameter string, otherwise false.

endsWith

Tests does this string end with the specified string.

One parameter: the string that suffix of this string is compared to.

Returns true if this string ends with the parameter string, otherwise false.

contains

Tests does this string contain the specified string.

One parameter: the string that this string is compared to.

Returns true if this string contains the parameter string, otherwise false.

matches

Tests does this string match a regular expession.

One parameter: the regular expression (string) this string is tested against.

Returns true if this string matches the regular expression.

replace

Replace all occurences of specified substring in this string with another string.

Two parameters: the substring to replace and the replacement string.

Returns the replaced string.

replaceAll

Replace all substrings in this string that match specified regular expression with another string.

Two parameters: the regular expression to find substrings and the replacement string.

Returns the replaced string.

replaceFirst

Replace first substring in this string that matches specified regular expression with another string.

Two parameters: the regular expression to find substrings and the replacement string.

Returns the replaced string.

Examples

Dive 3 must be 201B
dives[3].dive = "201B"
Dive 1 and 2 must be the same but in different position
(dives[1].dive[1:-1] = dives[2].dive[1:-1]) & (dives[1].details.position != dives[2].details.position)
Dive list must contain two forwards dives
dives.filter({.details.direction = 1}).length = 2
All twisting dives must have same number of somersaults
dives.filter({.details.twists > 0}) .select({.details.somersaults}) .distinct().length < 2