Skip to content

$calc

This keyword is used to perform basic mathematic operations with numerical values from selected fields. In conjunction with the keyword $var it's possible to reference fields that will be part of the operation.

Installation

cob-cli customize calc

Usage

$calc.[sum|multiply|subtract|divide|diffdays|diffHours|diifMinutes](var.1,var.2,...)
keywordDescription
$calc.sum(var.1,var.2,...)Sum of all values from all variables
$calc.subtract(var.1,var.2)Calculate the difference between two variables
$calc.multiply(var.1,var.2,...)Multiply all values from all variables
$calc.divide(var.1,var.2)Divide the value of variable 1 by variable 2
$calc.diffDays(var.1,var.2)Calculate the number of days between two variables
$calc.diffHours(var.1,var.2)Calculate the number of hours between two variables
$calc.diffMinutes(var.1,var.2)Calculate the number of minutes between two variables

The keyword $calc requires numerical values in the fields asscoiated to the variables. They can be of type:

WARNING

  • Both the sum and the multiply options accept an indeterminate number of arguments:
    • Valid operation: $calc.sum(1, 2, 3, 5, 6, 67, 4567, 567, 567, 567).
    • Another valid operation: $calc.multiply(1, 2, 3, 5, 6, 67, 4567, 567, 567, 567).
  • The remaining operations only accept two arguments. If we add more, the value of a field will be empty.

Defining variables with $var

Besides constant numbers in calc operations, it is also possible to use values of other fields in a calc operation with the use of the keyword $var. This allows the user to see reflected in real time a new result everytime a variable value is changed.

$number(2) $var.meat
$number(2) $var.fish
$number(2) $calc.sum(var.meat,var.fish)

See this example

Scoped $variables

The keyword $var also supports scopes, meaning that you can perform operations using fields of the same $var type.

WARNING

This feature is only supported for the sum and multiply operations.

$number(2) $var.total.meat
$number(2) $var.total.fish
$number(2) $calc.sum(var.total)

WARNING

In the previous example we are using the . as a word separator but if you prefer you can ignore it since we treat the . as any other character meaning that the previous could also be translated to:

$number(2) $var.totalMeat
$number(2) $var.totalFish
$number(2) $calc.sum(var.total)

See this example

previous argument

$calc customization also supports a quick way to reference the previous value. Using the operation argument previous you will be reference the previous field, which can be the parent field or the previous sibling field.

WARNING

The argument previous cannot be applied to the first field of the definition. In a situation where that happen no calculations will be performed on any instance of that definition type.

See this example

Examples

1. Basic usage of $calc

Meat (kg): $var.meat
Fish (kg): $var.fish
Total (kg): $calc.sum(var.meat,var.fish)

2. Using scoped variables in a sum operation

Meat (kg): $var.total.meat
Fish (kg): $var.total.fish
Total (kg): $calc.sum(var.total)

3. Use previous as an argument

VAT (€): $calc.multiply(var.cost,previous)

4. Duplicable variables

$var.fish and $var.meat is part of a duplicable field

5. Calculating differences between dates

Ticket Open: $date $var.open
Ticket Closed: $date $var.closed
Total days opened: $calc.diffDays(var.closed,var.open)d