JSVariable

Overview

JSVariable represents script variables in the Solution Model. It allows defining variables with specific types, default values, and scope, offering flexibility for use in forms, global contexts, and dynamic scenarios. Variables can be configured with types like TEXT, INTEGER, NUMBER, DATETIME, or MEDIA. ## Functionality

JSVariable provides constants for specifying the variable type. Properties like defaultValue, name, and variableType allow precise control over the variable's configuration. The defaultValue property can accept expressions such as dates, numbers, or text, enabling dynamic initialization. Methods like getScopeName and getUUID facilitate metadata access, such as identifying the variable's scope or its unique identifier.

Examples demonstrate how to create variables dynamically, assign default values, and use them in various scopes. Variables can also be modified to change their type or default behavior.

Variables can alternatively be created and managed using the Variable Editor.

Constants Summarized

Type
Name
Summary

Constant to be used when the type of a variable needs to be specified.

Constant to be used when the type of a variable needs to be specified.

Constant to be used when the type of a variable needs to be specified.

Constant to be used when the type of a variable needs to be specified.

Constant to be used when the type of a variable needs to be specified.

Properties Summarized

Type
Name
Summary

The default value of the variable.

The name of the variable.

The type of the variable.

Methods Summarized

Type
Name
Summary

Get scope name

Returns the UUID of the variable

Constants Detailed

DATETIME

Constant to be used when the type of a variable needs to be specified.

Type Number

Sample

var dateVar = solutionModel.newGlobalVariable('globals', 'gDate', JSVariable.DATETIME);
dateVar.defaultValue = 'now';
application.output(scopes.globals.gDate); // Prints the current date and time.

INTEGER

Constant to be used when the type of a variable needs to be specified.

Type Number

Sample

var intVar = solutionModel.newGlobalVariable('globals', 'gInt', JSVariable.INTEGER);
intVar.defaultValue = 997;
application.output(scopes.globals.gInt); // Prints 997

MEDIA

Constant to be used when the type of a variable needs to be specified.

Type Number

Sample

var mediaVar = solutionModel.newGlobalVariable('globals', 'gMedia', JSVariable.MEDIA);
mediaVar.defaultValue = 'new Array(1, 2, 3, 4)';
application.output(scopes.globals.gMedia); // Prints out the array with four elements.

NUMBER

Constant to be used when the type of a variable needs to be specified.

Type Number

Sample

var numberVar = solutionModel.newGlobalVariable('globals', 'gNumber', JSVariable.NUMBER);
numberVar.defaultValue = 192.334;
application.output(scopes.globals.gNumber); // Prints 192.334

TEXT

Constant to be used when the type of a variable needs to be specified.

Type Number

Sample

var txtVar = solutionModel.newGlobalVariable('globals', 'gText', JSVariable.TEXT);
txtVar.defaultValue = '"some text"'; // Use two pairs of quotes if you want to assign a String as default value.
application.output(scopes.globals.gText); // Prints 'some text' (without quotes).

Properties Detailed

defaultValue

The default value of the variable.

It is interpreted as a JS expression.

For form variables, setting this property via solutionModel requires the form instances to be destroyed (history.remove("formName")). If you want to use a default value for a newly created variable create the variable using the 3 parameter version newVariable(name,type,defaultValue).

For INTEGER variables it can be an integer constant, like 10 for example. For NUMBER variables it can be a real constant, like 22.41. For DATETIME variables it can be "now", or a JS expression like "new Date()". For TEXT variables it can be any string surrounded with quotes, like "'some text'".

Type String

Sample

var intVar = solutionModel.newGlobalVariable('globals', 'gInt', JSVariable.INTEGER);
intVar.defaultValue = 997;
application.output(scopes.globals.gInt); // Prints 997
var numberVar = solutionModel.newGlobalVariable('globals', 'gNumber', JSVariable.NUMBER);
numberVar.defaultValue = 192.334;
application.output(scopes.globals.gNumber); // Prints 192.334
var dateVar = solutionModel.newGlobalVariable('globals', 'gDate', JSVariable.DATETIME);
dateVar.defaultValue = 'now';
application.output(scopes.globals.gDate); // Prints the current date and time.
var txtVar = solutionModel.newGlobalVariable('globals', 'gText', JSVariable.TEXT);
txtVar.defaultValue = '"some text"'; // Use two pairs of quotes if you want to assign a String as default value.
application.output(scopes.globals.gText); // Prints 'some text' (without quotes).
var mediaVar = solutionModel.newGlobalVariable('globals', 'gMedia', JSVariable.MEDIA);
mediaVar.defaultValue = 'new Array(1, 2, 3, 4)';
application.output(scopes.globals.gMedia); // Prints out the array with four elements.

name

The name of the variable.

Type String

Sample

var gVar = solutionModel.newGlobalVariable('globals', 'gtext', JSVariable.TEXT);
gVar.name = 'anotherName';
gVar.defaultValue = '"default text"';
// The next two lines will print the same output.
application.output(scopes.globals[gVar.name]);
application.output(scopes.globals.anotherName);

variableType

The type of the variable. Can be one of: TEXT, INTEGER, NUMBER, DATETIME or MEDIA.

Type Number

Sample

var g = solutionModel.newGlobalVariable('globals', 'gtext',JSVariable.TEXT);
scopes.globals.gtext = 'some text';
g.variableType = JSVariable.DATETIME;
scopes.globals.gtext = 'another text'; // This will raise an error now, because the variable is not longer of type text.

Methods Detailed

getScopeName()

Get scope name

Returns: String

Sample

var globalVariables = solutionModel.getGlobalVariables();
for (var i in globalVariables)
	application.output(globalVariables[i].name + ' is defined in scope ' + globalVariables[i].getScopeName());

getUUID()

Returns the UUID of the variable

Returns: UUID

Sample

var dateVar = solutionModel.newGlobalVariable('globals', 'gDate', JSVariable.DATETIME);
application.output(dateVar.getUUID().toString());

Last updated