Custom Client-side Functions
The use of custom functions is available within the following entities and JavaScript attributes:
Entity |
Attributes |
---|---|
Entity Form |
Before Events, After Events |
Entity Form Section |
After Events, After Section Save |
Custom Form |
After Generate Events |
Entity View |
After Generate Js |
HtmlWidget |
JavaScript |
To use a custom function in a JavaScript field, import the client script library by using the importClientScript
method in the following format: ebs.importClientScript("");
Put the cursor between the two quotation marks (“|”) and press CTRL+SPACE. You will be suggested the available client script libraries.
Choose the client script library that defines the custom function that you want to use:
Example:
var myLib = ebs.importClientScript("myLibrary");
For usability purposes and to avoid calling the wrong methods and attributes, starting with 18.1.9, when creating script libraries and scripts you can use the ‘$m’ mechanism as follows:
- To transform text in entity_name string, type $m.entity_name and then press the TAB key.
- To transform text in in attribute_name string, type $m.entity_name.attribute_name and then press the TAB key.
- To transform text in relationship_name string, type $m.entity_name.relationship_name and then press the TAB key.
The TypeScript definition of client script library declares a specific function; therefore, the Monaco editor will suggest the function name after you type the variable name
Example:
console.log(myLib.capitalize("aWord"));
If you’re using Chrome, open the entity where the code will be run and by using the Developer tools > Console, check that the custom function returns the expected result.
Example: Print the word “AWord”.
Code execution
When retrieved, the code is transformed using the module pattern:
INPUT
var c1 = 1;
function A()
{
return c1;
}
var c2 = 2;
function B()
{
var y = function C()
{
};
return c2;
}
OUTPUT
//# sourceURL=clientScriptLib_myScript.js;
(function(){
var $export = {};
var c1 = 1;
$export.A = function ()
{
return c1;
};
var c2 = 2;
$export.B = function ()
{
var y = function C()
{
};
return c2;
};
return $export;
}());
If the module pattern is detected in the INPUT, then no transformation occurs.