MagmaScript expressions (mapping service)
Using MagmaScript expressions
Introduction
In the mapping service, MagmaScript is used to define the mapping algorithms. The expression format is based on the Magma JavaScript API.
Examples
The following expression returns true when the value of attribute 'myAttributeName' of an entity only contains alphanumberic characters:
In this example:
'$(...)' is the selector
'myStringAttributeName' is an attribute name
'matches' is a chaining operation
'value' is a terminal operation
Chaining operations allows you to express complex expressions:
Chaining operations
Numerical operations
Operator | Parameters | Example | Description |
---|---|---|---|
plus | Number |
| height + 100 |
pow | Number |
| height ^ 100 |
times | Number |
| height * 100 |
div | Number |
| height / 100 |
gt | Number |
| height > 100 |
lt | Number |
| height < 100 |
ge | Number |
| height >= 100 |
le | Number |
| height <= 100 |
Binary operations
Operator | Parameters | Example | Description |
---|---|---|---|
eq | Number |
| height === 100 |
matches | Regex |
| name is alphanumerical |
isNull | - |
| height === null |
not | - |
| !hasEars |
or | Expression |
| male |
and | Expression |
| female && pregnant |
Unit operations
Operator | Parameters | Example | Description |
---|---|---|---|
unit | Unit |
| Sets the current value unit to cm |
toUnit | Unit |
| Converts the current value based on the change in units |
Other
Operator | Parameters | Example | Description |
---|---|---|---|
age | - |
| Returns the age based on the date of birth and the current year |
map | Object |
| Maps categories to each other |
group | Array |
| Produces left-inclusive ranges with the given boundaries, i.e. |
attr | String |
| Returns the value of an attribute of a reference |
Terminal operations
Operator | Parameters | Example | Description |
---|---|---|---|
value | - |
| JavaScript value |
Special case: reference types
If an attribute is a reference type (MREF, XREF, CATEGORICAL, CATEGORICAL_MREF) you can use the 'attr' operation, to access the values of different columns in the row being referenced. E.g. $('cookie').attr('name').value()
gives you the value of the name column inside the table being referenced by the cookie column. See below for a more detailed example.
Imagine table A referencing table B.
Table A has 2 columns: id, cookie. Table B has 3 columns: id, name, tastiness.
The cookie column in table A references table B.
Table A
id | cookie |
---|---|
A | 1 |
Table B
id | name | tastiness |
---|---|---|
1 | Chocolate chip | 9/10 |
Expressions allow you to do the following
In the following case, we have Table A which has multiple references to Table B e.g. an MREF
Table A
id | cookie |
---|---|
A | 1,2,3 |
Table B
id | name | tastiness |
---|---|---|
1 | Chocolate chip | 9/10 |
2 | Strawberry cookie | 10/10 |
3 | Banana cookie | 7/10 |
Last updated