Divecalc and this manual are Copyright (C) 1995-2017 Arto Huusko. All rights are reserved.
Divecalc uses FreeHEP VectorGraphics library. FreeHEP license is available in file licenses/FreeHEP.txt.
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.
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.
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.
A new competition can be started from the New Competition action in the title screen or in the File menu.
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.
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.
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.
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.
TeamsTeams 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.
ParticipantsParticipants 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.
JudgesJudges 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.
EventsThe 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 ListsThe 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 GroupsThe 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.
ScheduleThe 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 InputResults are entered in the results input screen that is activated using the Results Input button in the competition action bar.
PrintingPrinting screen is activated using the Print button in the competition action bar.
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:
This option controls what language Divecalc uses. If the language is changed, Divecalc needs to be restarted before the language changes.
This option controls how person names are displayed in Divecalc.
Alternative dive position characters can be used to speed up dive number entry if a number pad is available on the keyboard. The dive positions A, B, C and D can be mapped for example to /, *, - and + so that only the number pad of the keyboard can be used to enter a dive number.
If this option is turned on Divecalc saves the competition every time results or a dive list are changed. If this option is turned off Divecalc never saves the competition automatically. The competition is saved only when the Save Competition action is explicitly activated.
If this option is turned on the result list stays always on top of all other windows on the monitor.
See Result List.
If this option is turned Divecalc automatically checks on startup if a newer version of Divecalc is available.
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.
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.
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.
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:
Whether the new event should be a synchronized diving event, a team event or a normal event.
What rules should be used in the event. The selected ruleset also decides the set of available series and event types.
The age group, gender, height and dive list format that dived in the event.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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 DiverIn 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 DiveIn 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 DiverThe 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).
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.
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.
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.
When the diver begins her dive, the Request Awards button is clicked. This activates the award entry field of the first judge.
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):
Dot: .
Comma: ,
Dash: -
Plus: +
Accent: `
Quote: '
Half: ½
Duplicate the preceding mark. For example, entering 66 means 6.5 and 11 means 1.5.
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.
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.
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.
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.
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.
When all of the judges have entered their awards and they are visible in Divecalc, the results input screen controls are activated again.
If necessary, enter penalties manually like in manual results input mode.
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.
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.
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.
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 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:
At the beginning of the event the name of the judge is displayed.
Before a diver starts her dive the name, team and dive of the diver is displayed.
After the dive the judge may input the award.
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.
When the awards have been accepted in Divecalc by the operator, the awards are shown to the judge again.
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:
At the beginning of the event the name of the judge is displayed.
Before a diver starts her dive the name, team and dive of the diver is displayed.
After the dive the judge may input the award.
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.
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.
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.
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:
Divecalc icon
Divecalc result feed data in XML format.
Divecalc result feed data in JSON format.
Any files in the configured additional resource directory.
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.
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.
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.
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 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.
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.
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 ConfigurationThe 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 ConfigurationBelow the common configuration part is the area where driver specific device configuration settings are visible.
IO ConfigurationMost 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 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.
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 SettingsThe number of characters that can be displayed on the screen.
Note: changing the number here does not change the size of the actual screen displayed by Divecalc Display program. This only changes how much data Divecalc will send to the screen. In other words: Divecalc Display program must be first sized to suitable size, and then that size is configured to Divecalc.
The number of lines that can be displayed on the screen.
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.
The number of the network port where Divecalc listens for connection requests from the judge devices.
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 SettingsThe number of the network port where Divecalc listens for connection requests from the mobile devices. This should not be changed.
Live result should be configured so that Display Awards display action is attached to input action Accept Awards.
Device SettingsThe address of the Divecalc Web Result Service application. The default value should not be changed.
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 SettingsThe format used to write the data: JSON, XML or text.
The character that is written after each transmission to separate transmissions from each other.
The JSON and XML formats are described in resultfeed.txt. The legacy text format is described in dcfeed.txt.
IO SettingsResult feed can be sent to a file or to a remote computer.
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 SettingsThe TCP port on which the device's HTTP server listens for requests on the computer.
The name of a local filesystem directory whose files are made availabl
through the device's HTTP server under path /app/
. This can be
used to publish an XML stylesheet or result feed web application from the
Divecalc computer.
If configured to greater than 0 then the device's HTTP server automatically adds HTTP refresh header. This causes web browsers to automatically reload the data after the delay configured here. The value is expressed in seconds.
If this is configured the contents is added to the XML result feed
data with the xml-stylesheet
processing instruction.
This can be used to display the status data in human readable format
directly in web browser just by loading the XML data URL.
The JSON and XML formats are described in resultfeed.txt.
Result log should be configured so that Display Awards display action is attached to input action Accept Awards.
Device SettingsIf not checked only judges' awards will be logged. If checked, judges' awards and the computed result will be logged.
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.
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.
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.
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.
There are two computers, COMPUTER-A and COMPUTER-B.
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.
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.
A copy of competition.div is made to a new file named competition-B.div. This file is copied to COMPUTER-B.
The events are competed normally.
After the events have been finished, competition-B.div is copied back to COMPUTER-A.
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.
The Import Results action is activated. A file selection dialog opens, and the file competition-B.div copied back from COMPUTER-B is selected.
After this action COMPUTER-A has the results for both Men, 1 meter and Women, 3 meters.
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.
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.
The following data types are available:
Numbers are expressed simply as numbers, for example 1 is one.
Boolean values true and false.
Arrays contain a set of values in an order. New arrays can be created with the array function. For example: array(1, 2, 3)
Array elements are accessed with brackets. If only one values is given inside the brackets, then the array element at the specified numeric position is returned. First position is one. For example: array(5, 6, 7)[1] returns the value 5.
A subset of the array can be accessed by giving two numbers separated by .. or :.
The .. version returns all elements starting from the first given position and ending at the second position (inclusive). If the second number is not given, all elements starting from the given position are returned. If the second number is negative, it specifies the end position from the end. For example -1 means that the last element is not included.
In the : the first number is the first position and the second number is the number of elements to return.
For example: array(10, 20, 30)[2..3] returns an array containing 20 and 30. array(10, 20, 30)[2:2] is the same.
Strings are arrays of characters. A new string is defined enclosed in quotation marks, for example "example".
Objects contain a set of named values. New objects can not be created. Object elements are accessed with . followed by the name of the element.
Expressions. Expressions can be embedded in expressions using braces. Embedded expressions are not evaluated immediately, but later. These are useful with many functions as parameters. For example: {1 + 2}
Functions. Several builtin functions are available, own functions can not be created. A function is invoked with (). If the function takes one or more parameters, the parameter expressions are inserted inside the parantheses, delimited with a comma. For example: func(a, b).
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):
empty: true if length is zero, otherwise false.
length: number of elements in the array.
reverse: an array with the elements of the array in the reverse order.
append: function.
distinct: function.
filter: function.
indexOf: function.
lastIndexOf: function.
select: function.
sort: function.
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):
empty: true if length is zero, otherwise false.
length: number of elements in the array.
lowerCase: the string in lower case letters.
upperCase: the string in upper case letters.
reverse: a string with the characters of the string in the reverse order.
append: function.
contains: function.
distinct: function.
endsWith: function.
filter: function.
indexOf: function.
lastIndexOf: function.
matches: function.
replace: function.
replaceAll: function.
replaceFirst: function.
select: function.
startsWith: function.
The following numeric operators are available:
+: sum
-: substraction, negation
*: multiplication
/: division
/: division
%: modulus
&: binary and
|: binary or
^: binary exclusive or
~: binary not
<<: shift left
>>: shift right
The following logical operators are available (allowed on true/false values):
&: logical and
|: logical or
^: logical exclusive or
!: logical not
The following comparison operators are available:
>: greater than
<: less than
>=: greater or equal than
<=: less or equal than
=: equal
!=: not equal
Every expression is evaluated in a context, where there are various named values available.
thisIn 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
.
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:
index: the position of the dive on the dive list, starting from number 1.
dive: the dive number as a string.
details: the details of the dive. An object with the following properties.
group: dive group, number between 1 and 6. If the dive is not a standard FINA dive, then this is 0.
direction: dive direction, number between 1 and 4. If the dive is not a standard FINA dive, then this is 0.
position: dive position, string with value A, B, C or D. If the dive is not a standard FINA dive, then this is not defined.
somersaults: number of somersaults, number between 0 and 11. If the dive is not a standard FINA dive, then this is 0.
twists: number of twists, number between 0 and 9. If the dive is not a standard FINA dive, then this is 0.
armstand: true if the dive is an armstand dive, otherwise false. If the dive is not a standard FINA dive, then this is false.
flying: true if the dive is a flying dive, otherwise false. If the dive is not a standard FINA dive, then this is false.
head: true if the dive enters water head first, otherwise false. If the dive is not a standard FINA dive, then this is false.
dd: degree of difficulty, multiplied by 10.
height: the dive height. Number 1, 3, 5, 7 or 10.
dd: degree of difficulty multiplied by 10.
diver: in team events this indicates which diver executes the dive. Does not support team syncro. Number, starts from 0.
diver1: in team events this indicates which diver is the other diver when two divers execute. Number.
diver2: in team events this indicates which diver is the other diver when two divers execute. Number.
diver1Gender: gender of diver 1. String, either "MALE" or "FEMALE".
diver2Gender: gender of diver 2. String, either "MALE" or "FEMALE".
diver1Age: age of diver 1 in years. Integer. Negative if diver birth year is not set.
diver2Age: age of diver 2 in years. Integer. Negative if diver birth year is not set.
syncro: in team events this indicates if the dive is a syncro dive. Boolean.
dive2: in synchronized events, the dive number of the second diver.
details2: in synchronized events, the dive details of the second diver.
height2: in synchronized events, the height of the dive of the second diver.
Other names available are listed below.
array: function.
for: function.
if: function.
integer: function.
math: an object containing numeric functions and constants.
ceil: function.
floor: function.
max: function.
min: function.
sum: function.
seq: function.
string: function.
The functions available as global names are listed below.
arrayCreates new array.
Parameters: variable number of parameters.
Returns: a new array that contains the parameter values as elements.
forCreates new array from the results of evaluating an expression repeatedly by iterating an array and providing the elements of the array for computation.
Parameters:
An array that is iterated.
Initial value for the evaluation.
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:
Selects one of the values based on true/false selection.
Parameters:
A boolean value.
An embedded expression that is evaluated if the first parameter is true.
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.
integerConverts a value, for example a string to a number. Fails if the value can not be converted to a number.
Parameters:
The value that is converted.
Returns: the parameter as integer.
seqProduce a new array with sequential numbers.
Parameters:
The first value of the array.
Step size: how much the next value is incremented from the previous value.
The number where the array stops (inclusive).
Returns: an array with the specified numbers.
Example: produce array with values 3, 7, 11 and 15.
Converts a value, for example a number to a string.
Parameters:
The value that is converted.
Returns: the value converted to a integer.
The functions available in the math object are listed below.
minSelect minimum value from two values.
Parameters:
Value 1.
Value 2.
Returns: the value that is smaller than the other.
maxSelect maximum value from two values.
Parameters:
Value 1.
Value 2.
Returns: the value that is greater than the other.
sumCompute 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.
The functions of array objects are listed below.
appendCreates 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.
distinctCreate 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.
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.
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.
lastIndexOfFind 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.
selectCreate 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:
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.
The functions of string objects are listed below.
The functions filter, append, indexOf, lastIndexOf, select and distinct work the same way as with arrays.
startsWithTests 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.
endsWithTests 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.
containsTests 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.
matchesTests 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.
replaceReplace 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.
replaceAllReplace 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.
replaceFirstReplace 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.