Using expressions

Using expressions

Introduction

For some entity type attributes an expression can be set that determines whether or not a condition is true based on the attribute values e.g. to determine whether values are valid. The expression format is based on the Magma JavaScript APIarrow-up-right.

Examples

The following expression returns true when the value of attribute 'myAttributeName' of an entity only contains alphanumberic characters:

$('myStringAttributeName').matches(/^[a-z0-9]+$/i).value()

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:

$('myIntAttributeName').gt(3).and($('myIntAttributeName').lt(6)).value()

Chaining operations

Numerical operations

Operator

Parameters

Example

Description

plus

Number

$('height').plus(100).value()

height + 100

pow

Number

$('height').pow(100).value()

height ^ 100

times

Number

$('height').times(100).value()

height * 100

div

Number

$('height').div(100).value()

height / 100

gt

Number

$('height').gt(100).value()

height > 100

lt

Number

$('height').lt(100).value()

height < 100

ge

Number

$('height').ge(100).value()

height >= 100

le

Number

$('height').le(100).value()

height <= 100

Binary operations

Operator

Parameters

Example

Description

eq

Number

$('height').eq(100).value()

height === 100

matches

Regex

$('name').matches(/^[a-z0-9]+$/i).value()

name is alphanumerical

isNull

-

$('height').isNull().value()

height === null

not

-

$('hasEars').not().value()

!hasEars

or

Expression

$('male').or($('female')).value()

male

female

and

Expression

$('female').and($('pregnant')).value()

female && pregnant

Unit operations

Operator

Parameters

Example

Description

unit

Unit

$('height').unit('cm')

Sets the current value unit to cm

toUnit

Unit

$('height').unit('m').toUnit('cm').value()

Converts the current value based on the change in units

Other

Operator

Parameters

Example

Description

age

-

$('dateOfBirth').age().value()

Returns the age based on the date of birth and the current year

map

Object

$('data').map({0:1, 1:2}).value()

Maps categories to each other

group

Array

$('age').group([18, 35, 50, 75]).value()

Produces left-inclusive ranges with the given boundaries, i.e. (-∞, 18), [18, 35), [35, 50), [50, 75), [75, +∞) and then returns the interval that the attribute value is in, i.el '18-35'

attr

String

$('person').attr('name').value()

Returns the value of an attribute of a reference

Terminal operations

Operator

Parameters

Example

Description

value

-

$('height').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