AgileApps Support Wiki Pre Release

Difference between revisions of "Post Selection JavaScript"

From AgileApps Support Wiki
imported>Aeric
m (Text replace - 'Designer > Objects' to 'File:GearIcon.png > Customization > Objects')
imported>Aeric
 
(36 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Lookup]] fields have the additional ability for validations using [[JavaScript]].  
===About Post Selection JavaScript===
[[Lookup]] fields can perform additional operations using [[JavaScript]]. The code runs whenever the user selects a target record in an object [[Form]].


:''Compare to [[Form Scripting]] and [[Field Scripting]]''
Post Selection JavaScript is similar in nature to [[Form Scripting]] and [[Field Scripting]], but it provides additional variables that are pertinent to a Lookup field.


Post Selection JavaScript is available in:
=== Working with Post Selection Scripts ===
* {{Typenolink|}}s
Follow these steps to add or change scripting for a Lookup field:
*{{Typenolink}}s:
:* Accounts
:* Documents
:* Templates
:* Contacts
:* Prospects
:* Opportunities
:* Price Books
:* Products
:* Contracts
:* Cases
:* Users
:* Campaigns
:* Projects


=== Editing Lookup Scripts ===
1. Click '''[[File:GearIcon.png]] > Customization > Objects > {object} > Fields'''.<br>
Follow these steps to add or change scripting for a lookup field:
2. Click the name of the [[Lookup]] field.<br>
3. Enter or change the code in '''Post Selection JavaScript'''.<br>
{{Note|To run the JavaScript in the LongJump UI and the legacy AgileApps UI, enter the script in the Legacy UI Script tab. To run the JavaScript in the New AgileApps UI, enter the script in the New UI Script tab.}}<br>
4. Click the '''Save''' button.


# Click '''[[File:GearIcon.png]] > Customization > Objects > {object} > Fields'''
====Lookup Variables====
# Click the name of the [[Lookup]] field.
# Enter or change the code in '''Post Selection JavaScript'''.
# Click the '''Save''' button.
 
===Writing Lookup Scripts===


In the JavaScript code, the following variables are available:  
In the JavaScript code, the following variables are available:  


* <tt>id</tt>: The identifier of the selected record
:* <tt>objectId</tt> - The identifier for the [[Object]]
* <tt>name</tt>: The label of the selected record
:* <tt>id</tt> - The identifier for the selected record
* <tt>window.opener.document.mainForm</tt>: The opener form and its fields
:* <tt>name</tt> - The label of the selected record, as defined by the [[Record Identifier]] configured for the object.


This example displays the label of the selected record.
====Learn More====
:{|
<pre>
alert("You have selected record: " + name);</pre>
|}
===Learn More===
:* [[Field Name|Field Name and Field Value]] syntax
:* [[Field Name|Field Name and Field Value]] syntax
:* Use [[AJAX and REST]] to communicate with the platform in JavaScript code.
:* Use [[AJAX and REST]] to communicate with the platform in JavaScript code.
:* [[Global JavaScript Variables]]
:* [[JavaScript Functions]]
:* [[JavaScript#Accessing_Additional_Lookup_Variables_in_a_Form|Accessing Additional Lookup Variables in a Form]]
:* [[JavaScript#Accessing_Additional_Lookup_Variables_in_a_Form|Accessing Additional Lookup Variables in a Form]]
===Examples===
====Display the Record Locator of the Selected Record====
This example uses the <tt>name</tt> variable to display the record locator of the record.
:<syntaxhighlight lang="javascript" enclose="div">
alert("You have selected record: " + name);
</syntaxhighlight>
====Copy a Field from Another Record====
This code accesses the record targeted by a Lookup, retrieves a field value, and places it into the current form. Here, the current record is an OrderItem. When the user selects the Order the item is part of, this code retrieves the Order number and stores it in the current record.
Here, an AJAX call accesses a platform REST API to retrieve data.
:''Learn more:'' [[AJAX and REST]]
:<syntaxhighlight lang="javascript" enclose="div">
$.ajax({
  type: 'GET',
  url: '/networking/rest/record/'+objectId+'/'+id+'?alt=json',
  async: false,
  dataType: 'json',
  success: function(response) {
    // Get a value from the target record.  Set it in current record.
    var value = response.platform.record.somefieldname;
    setTextFieldValue(_sdForm, "myfieldname", value);
  },
  error: function(xhr) {
    var response = eval( "(" + xhr.responseText + ")" );
    alert(response.platform.message.description);
  }
});
</syntaxhighlight>
;Considerations:
:* The code adds the record ID to the object ID, and uses the [[REST API:record Resource]] to retrieve data from the target record.
:* The resource URL includes the query param <tt>alt=json</tt>, which tells the platform to return the data in the standard JavaScript data format.
:* The <tt>datatype</tt> parameter is set to <tt>json</tt>, as well. That setting tells the JavaScript code how to parse the returned data.
:* Since the code runs in an object [[Form]], the copied data is immediately visible when the lookup is made.
:* The JavaScript is always executed in the context of a [[Form]]. Fields referenced in the JavaScript must be part of any form in which the user can do a Lookup. (Their field properties can be set to "hidden", but they should not be removed from the form.)
:* The JavaScript functions that can be used to set and get form fields are shown below.
===JavaScript Field Type Reference===
{{:JavaScript Field Type Reference}}
<noinclude>
<noinclude>


[[Category:JavaScript]]
[[Category:JavaScript]]
</noinclude>
</noinclude>

Latest revision as of 14:27, 31 August 2020

About Post Selection JavaScript

Lookup fields can perform additional operations using JavaScript. The code runs whenever the user selects a target record in an object Form.

Post Selection JavaScript is similar in nature to Form Scripting and Field Scripting, but it provides additional variables that are pertinent to a Lookup field.

Working with Post Selection Scripts

Follow these steps to add or change scripting for a Lookup field:

1. Click GearIcon.png > Customization > Objects > {object} > Fields.
2. Click the name of the Lookup field.
3. Enter or change the code in Post Selection JavaScript.

Notepad.png

Note: To run the JavaScript in the LongJump UI and the legacy AgileApps UI, enter the script in the Legacy UI Script tab. To run the JavaScript in the New AgileApps UI, enter the script in the New UI Script tab.


4. Click the Save button.

Lookup Variables

In the JavaScript code, the following variables are available:

  • objectId - The identifier for the Object
  • id - The identifier for the selected record
  • name - The label of the selected record, as defined by the Record Identifier configured for the object.

Learn More

Examples

Display the Record Locator of the Selected Record

This example uses the name variable to display the record locator of the record.

<syntaxhighlight lang="javascript" enclose="div">

alert("You have selected record: " + name); </syntaxhighlight>

Copy a Field from Another Record

This code accesses the record targeted by a Lookup, retrieves a field value, and places it into the current form. Here, the current record is an OrderItem. When the user selects the Order the item is part of, this code retrieves the Order number and stores it in the current record.

Here, an AJAX call accesses a platform REST API to retrieve data.

Learn more: AJAX and REST
<syntaxhighlight lang="javascript" enclose="div">

$.ajax({

 type: 'GET', 
 url: '/networking/rest/record/'+objectId+'/'+id+'?alt=json', 
 async: false,
 dataType: 'json', 
 success: function(response) { 
   // Get a value from the target record.  Set it in current record.
   var value = response.platform.record.somefieldname; 
   setTextFieldValue(_sdForm, "myfieldname", value);
 }, 
 error: function(xhr) { 
   var response = eval( "(" + xhr.responseText + ")" ); 
   alert(response.platform.message.description); 
 } 

}); </syntaxhighlight>

Considerations
  • The code adds the record ID to the object ID, and uses the REST API:record Resource to retrieve data from the target record.
  • The resource URL includes the query param alt=json, which tells the platform to return the data in the standard JavaScript data format.
  • The datatype parameter is set to json, as well. That setting tells the JavaScript code how to parse the returned data.
  • Since the code runs in an object Form, the copied data is immediately visible when the lookup is made.
  • The JavaScript is always executed in the context of a Form. Fields referenced in the JavaScript must be part of any form in which the user can do a Lookup. (Their field properties can be set to "hidden", but they should not be removed from the form.)
  • The JavaScript functions that can be used to set and get form fields are shown below.

JavaScript Field Type Reference

The following table shows how to access and update the different field types, where:

  • _sdForm is the variable that references the current form
  • field is a string containing the name of the field
    (as with all strings, literal values must be in quotes)
  • value is a value you specify (generally a string)
  • value is language keyword, typed exactly as shown--as in this line,
    for example, which gets the value from a field called email_address:
_sdForm.email_address.value

Notepad.png

Note:
Form data is in User Format. Data entered into the Form must be in that format, as well. Data going to and from the platform, on the other hand, must be in Database Format.

Learn more: Localization#JavaScript Programming

Notepad.png

Note: JavaScript functions mentioned in the table does not support Web Forms.

Type Getter Setter
Auto Number n/a n/a
Checkbox

getCheckBoxState(_sdForm, field)
Returns: true or false

setCheckboxState(_sdForm, field, state)
state: true or false

Example:
setCheckboxState(_sdForm, "item_approved", true);

Currency

getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

Date

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

Date time

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

Dependent Picklist

getPickListSelectedValue(_sdForm, field)
Returns: selected String containing value

setPickListValue(_sdForm, field, value)
value: String containing new value

Email Address

getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

External Lookup n/a n/a
File Field n/a n/a
Formula n/a n/a
Geolocation

getTextFieldValue(_sdForm, field)
Returns: A string containing a latitude and longitude,
    separated by a comma and a space.
Ex: 37.403930662906106, -121.97971165820213

setTextFieldValue(_sdForm, field, value)
value: A string containing the new geolocation value

Global Picklist

getPickListSelectedValue(_sdForm, field)
Returns: selected String containing value

setPickListValue(_sdForm, field, value)
value: String containing new value

Image Field n/a n/a
Lookup

getLookupFieldValue(_sdForm, field)
Returns: String containing record ID

getLookupFieldText(_sdForm, field)
Returns: String containing the displayed text

setLookupValue(_sdForm, field, value, text)
value: String containing record ID
text: String containing the text to display

Multiple Checkboxes

getMultiCheckBoxValue(_sdForm, field)
Returns: An array of values, one for each checked box

getMultiCheckBoxValue(_sdForm, field, index)
index: 0 for the first checkbox,
      1 for the second, and so on.
Returns: The value of the box if selected, else an empty string

setMultiCheckBoxValue(form, field, [value1, ...])
Argument: Array of values to set

Example:
setMultiCheckBoxValue(_sdForm, field, ["A", "B"])
(Checkboxes for all other values are turned off)

Multi Object Lookup n/a n/a
Multi Select Picklist

getMultiPickListSelectedValue(_sdForm, field)
Returns: Array of strings, with selected values
Example: ["A", "C"]

setMultiPickListValue(_sdForm, field, [value1, ...])
Argument: Array of values to select

Example:
setMultiPickListValue(_sdForm, field, ["A", "B"] )

Number

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value, or a number

Number with decimals

sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value, or a float

Percentage

sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

Phone/Fax

sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

Picklist

getPickListSelectedValue(_sdForm, field)
Returns: selected String containing value

setPickListValue(_sdForm, field, value)
value: String containing new value

Example:
setPickListValue(_sdForm, "status", "Closed");

Radio Buttons

getRadioButtonValue(_sdForm, field)
Returns: String containing selected value

setRadioButtonValue(_sdForm, field, value)
value: String containing new value to select

Example:
setRadioButtonValue(_sdForm, "color", "Black");

Rich Text Area n/a n/a
Rollup Summary Field n/a n/a
TextArea

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

TextField

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

Example:
setTextFieldValue(_sdForm, "first_name", "Adam");

Time

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value

URL

_sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing value

setTextFieldValue(_sdForm, field, value)
value: String containing new value