Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 12 Next »

Canvas uses JavaScript ES5 for scripting. Nearly all JavaScript objects and functions that are supported in ES5 are available for use in Canvas scripts. For a complete list of supported features, see the ES5 specification: https://262.ecma-international.org/5.1/ .

Canvas provides a set of utility functions for interacting with the project and with the Xpanel device.

For example, the datalog object includes the functions start, stop, and addRow. These can be accessed in a script using datalog.start, datalog.stop, and datalog.addRow, respectively.

Below is a list of the built-in functions provided by Canvas.

alarm

Provides a way to interact with Gateway alarms.

Function Name

Description

Arguments

Returns

alarm.createAllCsv(enum storageType)

Creates a CSV file of all alarms in the specified location.

enum storageType: see the Storage section below.

undefined

alarm.createCsv(string label, Storage type)

Creates a CSV file of all alarms with the specified label in the specified location.

string label: the name of an alarm label to use as a filter.

Storage type: see the Storage section below.

undefined

datalog

Provides a way to interact with Gateway data log models.

Function Name

Description

Arguments

Returns

datalog.start(string modelName)

Causes the specified logging model to begin logging.

string modelName: the name of the data log model to target.

undefined

datalog.stop(string modelName)

Causes the specified logging model to stop logging.

string modelName: the name of the data log model to target.

undefined

datalog.addRow(string modelName)

Adds a single row to the specified logging model.

string modelName: the name of the data log model to target.

undefined

datalog.createCsv(string modelName, enum storageType)

Creates a CSV file of the specified logging model in the specified location.

string modelName: the name of the data log model to target.

enum storageType: see the Storage section below.

undefined

datalog.createCsvForRange(string modelName, Date start, Date end, enum storageType)

Creates a CSV file of the specified logging model, in the specified location, within some time bound.

string modelName: the name of the data log model to target.

Date start: a JavaScript Date object specifying the beginning of the time range.

Date stop: a JavaScript Date object specifying the end of the time range.

enum storageType: see the Storage section below.

undefined

keyboard

Allows for sending keyboard events and bringing up keyboard popups for inputting values.

Function Name

Description

Arguments

Returns

keyboard.sendKeyEvent(keyCode)

Simulates a keyboard press for integer code keyCode. See here for a list of supported key codes (provided in hexadecimal format). Note that certain key codes may not work on all platforms.

Text Field objects will receive key events sent by this function.

Example:

keyboard.sendKeyEvent(0x48); // H
keyboard.sendKeyEvent(0x45); // E
keyboard.sendKeyEvent(0x4c); // L
keyboard.sendKeyEvent(0x4c); // L
keyboard.sendKeyEvent(0x4f); // O
keyboard.sendKeyEvent(0x01000004); // Return
// 'H' 'E' 'L' 'L' 'O' <Return>

keyCode: a number indicating which key to simulate. May be either hexadecimal or decimal. For example,
keyboard.sendKeyCode(0x20)
is the same as
keyboard.sendKeyCode(0x32).

undefined

keyboard.launchKeypad(tagName, properties)

Creates a popup numeric keypad that will set a tag to the user input value. Only accepts valid floating-point numbers.

Note: This function does not wait for user input, nor does it return the entered value. The rest of the script will be executed immediately.

tagName: the name of the tag to set.

object properties (optional): an object specifying optional properties to be used for the popup. See the properties section below for details.

undefined

keyboard.launchKeyboard(tagName, properties)

Creates a popup keyboard that will set a tag to the user input value.

Note: This function does not wait for user input, nor does it return the entered value. The rest of the script will be executed immediately.

tagName: the name of the tag to set.

object properties (optional): an object specifying optional properties to be used for the popup. See the properties section below for details.

undefined

properties

For keyboard.launchKeypad and keyboard.launchKeyboard, the properties argument is a JavaScript object that supports the following properties:

Property

Description

header

Sets the header.

subheader

Sets the subheader.

x

Sets the x position on the screen.

y

Sets the y position on the screen.

format

Sets the initialized numeric format. Having a hexadecimal format enables the hexadecimal keys.

min

Sets the minimum value the keypad will accept.

max

Sets the maximum value the keypad will accept.

Below is an example of using the properties object in a script:

keyboard.launchKeypad("MyTag");
keyboard.launchKeypad("MyTag", {"x": 100, "y": 200, "format": "HH"});

keyboard.launchKeyboard("OtherTag");
keyboard.launchKeyboard("OtherTag", {"header": "Setting OtherTag", "x": 100, "y": 200});

notification

Provides a way to interact with the notifications system.

Function Name

Description

Arguments

Returns

notification.send(string msg, int dismissInterval = -1)

Sends a popup notification to the screen using the specified string.

string msg: the string to display.

int dismissInterval (optional): the approximate number of seconds to wait before automatically dismissing the notification. A value of less than zero means to stay in the notification system indefinitely. Default -1.

0

Examples:

notification.send("This notification will dismiss itself after a few seconds.", 3000);
notification.send("This notification won't automatically dismiss.");

schedule

Provides a way to enable and disable schedules.

Function Name

Description

Arguments

Returns

schedule.isEnabled(string title)

Returns whether or not schedule title is enabled.

string title: the name of the schedule to check.

true if the schedule is enabled, otherwise false.

schedule.setEnable(string title, bool enable)

Enables schedule title if enable is true; otherwise turns schedule off.

string title: the name of the schedule to check.

bool enable: whether to enable (true) or disable (false) the specified schedule.

undefined

system

Provides a way to interact with the runtime application.

Function Name

Description

Arguments

Returns

system.importScript(string scriptName)

Executes a script in the current project named scriptName on the current thread. Any variables and functions declared in the target script will become accessible in the calling script.

Note: The calling script will not continue to execute until the target script finishes executing.

string scriptName: the name of the script to execute.

The value of the last expression of the specified script. For example, if the external script “myScript“ contains the following:

notification.send("In external script...");
7;

then system.importScript("myScript"); would return 7.

This can be used to pass information from the target script to the calling script.

system.runScript(scriptName)

Executes a script in the current project named scriptName.

Note: The target script will run on a separate thread. Execution of the calling script will immediately continue. The target script will not be able to access any variables defined in the calling script, and vice-versa. tag.read and tag.write are the recommended method of communication between script threads.

In most cases, it is recommended that you use system.importScript instead of system.runScript.

string scriptName: the name of the script to execute.

undefined

system.openConfig()

Opens the runtime config (3 touch) menu.

N/A

undefined

system.openXpanelManager()

Opens the Xpanel Control Center (desktop).

Note: This function does nothing in the simulator.

N/A

undefined

system.setLanguage(string language)

Sets the language used by the runtime translation feature.

string language: the name of the language to use. This should be one of the column names defined in the Translation Editor window.

undefined

system.login(string username, string password)

Immediately logs in as the specified user for the runtime IAM feature.

Note: Do not store user passwords using tags that can be accessed by other devices or by non-authorized users.

string username: the name of the IAM user to log in.

string password: the password for the specified user. If the user does not have a password, you may omit this argument or use an empty string "".

true if the user was successfully logged in, false otherwise.

Note: a return value of false typically indicates that the provided password was incorrect.

system.openLoginWindow(properties)

Opens the built-in dialog for logging in a user for the IAM system.

Note: This function does not wait for user input, nor does it return whether the user was logged in. The rest of the script will be executed immediately.

object properties (optional): an object specifying optional properties to be used for the popup. See the properties section below for details.

undefined

system.openAuthWindow(properties)

Opens the built-in dialog for authenticating a user. The user will be required to re-enter their password.

If no user is specified, the current user will be used instead. If no user is logged in, the function will return false.

Note: This function blocks the event loop. The calling script will not continue executing until the dialog is closed.

object properties: an object specifying optional properties to be used for the popup. See the properties section below for details.

true if the user is successfully logged in, false otherwise.

system.logout()

Logs out the current user from the IAM system.

N/A

undefined

system.hasPermission(string permission)

Checks to see if the current user has the specified permission.

string permission: the name of the permission to check.

true if the current user has the specified permission, false if not.

system.exit()

Closes the current project and the runtime application. The gateway will also be closed if running on the same device.

N/A

undefined

properties

For system.openLoginWindow, the properties argument is a JavaScript object that supports the following properties:

Property

Description

listUsers

Sets whether the username input should be a combo box (true) or a text input box (false).

For openAuthWindow, the properties argument is a JavaScript object that supports the following properties:

Property

Description

username

Sets the desired user to authenticate. If no user is provided, the current user will be used. If no user is logged in, return false immediately.

Examples:

system.openLoginWindow("listUsers": true); // opens the login window with a list of users
system.openAuthWindow("username": "myUser") // opens the authorization window and requests the password for the user "myUser"

page

Allows for manipulation of project pages and the current page.

Function Name

Description

Arguments

Returns

page.open(string name)

Opens the page with name name.

Note: If the specified page is not a popup page, it will replace (close) the current page.

string name: the name of the page to open

undefined

page.openIndex(number index)

Opens the page with index index.

Note: If the specified page is not a popup page, it will replace (close) the current page.

number index: the index of the page to open

undefined

page.close(string name)

Closes the page with name name.

Note: With this function, it is possible to accidentally close all pages in the project. This function should be used primarily for popup pages.

string name: the name of the page to open

undefined

page.closeIndex(number index)

Closes the page with index index.

Note: With this function, it is possible to accidentally close all pages in the project. This function should be used primarily for popup pages.

number index: the index of the page to open

undefined

page.isOpen(string name)

Returns whether a page with name name is open.

string name: the name of the page to open

undefined

page.currentName()

Gets the name of the currently opened page.

N/A

A string containing the name of the currently opened page.

page.currentIndex()

Gets the index of the currently-opened page.

N/A

A number containing the index of the currently opened page.

Examples:

if (currentPage() === "MyPage") {
  openPage("ABasicPopupPage"); // By name
} else {
  openPage(1); // By index
}

Storage

The Storage object allows you to specify a location for saving various data within scripts. Either the numerical value (0, 1, 2, 3) or the enum value (Storage.Invalid, Storage.Local, Storage.Usb, Storage.SdCard) may be used whenever a storageType argument is required.

Note that the specific file path depends on the script being used.

Constant

Value

Description

Storage.Invalid

0

Invalid storage type

Storage.Local

1

The root storage device

Storage.Usb

2

Removable storage device

Storage.SdCard

3

Removable memory card

Examples:

alarm.createCsv("Level 1", Storage.Usb)
datalog.createCsv("model", Storage.Local)

tag

Allows for the manipulation of tags.

Function Name

Description

Arguments

Returns

tag.read(string name)

Gets the current value of the tag with name name.

string name: the name of the tag.

Note: tags in groups can be accessed using the forward slash character /. Example: "Outer Group/Inner Group/Tag Name"

The value of the tag. STRING tags return strings, BOOL tags return booleans, and all numeric tag types return numbers.

tag.write(string name, value)

Sets the value of the tag with name name to value.

string name: the name of the tag.

Note: tags in groups can be accessed using the forward slash character /. Example: "Outer Group/Inner Group/Tag Name"

value: the value to set the tag to. STRING tags expect strings, BOOL tags expect booleans, and all numeric tag types expect numbers.

undefined

Examples:

tag.write("MyTag1", tag.read("MyOtherTag") + 20);

thread

Pauses the script for a specified amount of time. Only affects the calling script’s thread.

Note: The functions provided by this class do not guarantee accuracy. The application may sleep longer than the desired time under heavy load conditions.

Function Name

Description

Arguments

Returns

thread.msleep(number msecs)

Suspends the current thread for msecs milliseconds.

number msecs: the number of milliseconds to sleep for.

undefined

thread.sleep(number secs)

Suspends the current thread for secs seconds.

number secs: the number of seconds to sleep for.

undefined

  • No labels