Difference between revisions of "JavaScript Functions"
imported>Aeric |
imported>Aeric |
||
(84 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
# | <!--TBD: Functions for use in [[Pages]] and [[Custom Form Actions]]--> | ||
__TOC__ | |||
=== Accessing Form Fields === | |||
{{:Referencing Form Fields in JavaScript}} | |||
=== Accessing User Information === | |||
This function returns information about the logged-in user in a json object. | |||
:<syntaxhighlight lang="javascript" enclose="div"> | |||
getUserDetails() | |||
</syntaxhighlight> | |||
Values availble in the json object are: | |||
:* '''id -''' user id | |||
:* '''first_name -''' user's first name. | |||
:* '''last_name -''' user's last name. | |||
:* '''language -''' user's language code. (ex: <tt>en</tt>) | |||
:* '''access_profile_name -''' user's access profile name. | |||
:* '''time_zone_name -''' user's time zone name. (ex:America/Indianapolis) | |||
:* '''time_zone_description -''' localized time zone description.<br>ex: (GMT-05:00) Eastern Standard Time (America/Indianapolis) | |||
:* '''date_format -''' user's date format. | |||
:* '''time_format -''' user's time format. | |||
:* '''locale -''' user's locale code. | |||
:* '''primary_team_name -''' user's primary team. | |||
:* '''current_role_name -''' user's current role.<br>Can be empty if the user has a profile that allows global access, but does not play any specific role in the application. | |||
:* '''roles -''' list of the user's roles in the current application, with current role first. | |||
:* '''teams -''' list of teams the user belongs to, with the primary team name first. | |||
:* '''userCustomFields -''' an object containing values for each custom field defined on the User object, where the access key is the field name | |||
;Example: | |||
This script prefills fields in current form with data for the logged-in user, where each user record has a custom field called <tt>customer_discount</tt>: | |||
:<syntaxhighlight lang="javascript" enclose="div"> | |||
var userDetails = getUserDetails(); | |||
setTextFieldValue(_sdForm, "column_id", userDetails.id); | |||
setTextFieldValue(_sdForm, "first_name", userDetails.first_name); | |||
setTextFieldValue(_sdForm, "last_name", userDetails.last_name); | |||
setTextFieldValue(_sdForm, "language", userDetails.language); | |||
setTextFieldValue(_sdForm, "time_zone_name", userDetails.time_zone_name); | |||
setTextFieldValue(_sdForm, "time_zone_description", userDetails.time_zone_description); | |||
setTextFieldValue(_sdForm, "roles", userDetails.roles) ; | |||
setTextFieldValue(_sdForm, "discount", userDetails.userCustomFields.customer_discount); | |||
</syntaxhighlight> | |||
=== Hiding Action Items and Assignment Buttons === | |||
{{Note| To apply these functions with the new AgileApps UI, see the section '''Considerations for Existing Custom Script Methods''' in [[JavaScript Field Type Reference for New AgileApps User Interface]].}} | |||
These functions can be used to hide the actions-menu-items and record-assignment buttons, by calling them from the <tt>On Load Script</tt> section of a [[Form Script]]. | |||
==== hideActionsMenuItems ==== | |||
Hide one or more items in the ACTIONS menu: | |||
:<syntaxhighlight lang="javascript" enclose="div"> | |||
hideActionsMenuItems(['value-1', 'value-2', ...]); | |||
</syntaxhighlight> | |||
where the parameter is an array of strings that contains the menu-item values (found by inspecting the <tt>value</tt> attribute of elements in the UI). | |||
;Example:<tt>hideActionsMenuItems(['assignOwnerShipButton','claimOwnerShipButton']);</tt> | |||
The above example hides "assign to user" and "claim" options from actions menu. | |||
==== hideClaimAndAssignButtons ==== | |||
Hide the Claim-record and Assign-record buttons. | |||
:<syntaxhighlight lang="javascript" enclose="div"> | |||
hideClaimAndAssignButtons(['id-1', 'id-2', ...]); | |||
</syntaxhighlight> | |||
where the parameter is an array of strings which contains ID-attributes from the respective buttons. | |||
;Example:<tt>hideClaimAndAssignButtons(['assignOwnerShipButton','assignTeamOwnerShipButton','claimOwnerShipButton']);</tt> | |||
The above example hides "assign to user", "assign to team" and "claim" buttons from owner pop-up. | |||
=== Localization === | |||
These functions are used to format and parse data.<br> | |||
''Learn more:'' [[Localization#JavaScript Programming]] | |||
:<tt>L10n.formatCurrency(''value'', ''precision'')</tt> | |||
::* Format a value-string specified in [[Database Format]] with no currency character and no grouping indicators (commas), and with a decimal point for fractional amounts. | |||
::* Return a String with the value formatted using the company's locale setting for currencies, with the number of decimal places specified for the <tt>precision</tt>. If the conversion fails, return the original string. | |||
:<tt>L10n.formatDate(''value'')</tt> | |||
::* Format a date value. | |||
::* Return a String with the date formatted using the user's date format. | |||
:::'''Note:'''<br>As best practice, do not hardcode a date string, as that value will fail for a user in a different locale. Instead, create an instance of a JavaScript <tt>Date</tt> object and pass that value as the argument to the function. | |||
:<tt>L10n.formatDateTime(''value'')</tt> | |||
::* Format a date/time value. | |||
::* Return a String with the date formatted using the user's date format, and time formatted for the user's locale. | |||
:::'''Note:'''<br>As best practice, do not hardcode a date or time string, as that value will fail for a user in a different locale. Instead, create an instance of a JavaScript <tt>Date</tt> object and pass that value as the argument to the function. | |||
:<tt>L10n.formatNumber(''value'', ''precision'')</tt> | |||
::* Format a value-string specified in [[Database Format]] with no grouping indicators (commas), with a decimal point for fractional amounts. | |||
::* Return a String with the value formatted using the user's locale, with the number of decimal places specified for the <tt>precision</tt>. If the conversion fails, return the original string. | |||
:<tt>L10n.formatPercent(''value'', ''precision'')</tt> | |||
::* Convert a value-string specified in [[Database Format]] with no percent sign, no grouping indicators (commas), and with a decimal point for fractional amounts. | |||
::* Return a String with the value formatted using the user's locale, with the number of decimal places specified for the <tt>precision</tt>. If the conversion fails, return the original string. | |||
:<tt>L10n.formatTime(''value'')</tt> | |||
::* Format a date/time value. | |||
::* Return a String with the time formatted for the user's locale | |||
:::'''Note:'''<br>As best practice, do not hardcode a date or time string, as that value will fail for a user in a different locale. Instead, create an instance of a JavaScript <tt>Date</tt> object and pass that value as the argument to the function. | |||
:<tt>L10n.parseCurrency(''value'')</tt> | |||
::* Parse a currency value-string in the format specified by the company's locale setting for currencies. | |||
::* Return a String in [[Database Format]] format. If parsing fails, return the original string. | |||
:<tt>L10n.parseDate(''value'')</tt> | |||
::* Parse a date-string in the format specified by the user's settings. | |||
::* Return a JavaScript <tt>Date</tt> object. If parsing fails, returns null. | |||
:<tt>L10n.parseDateTime(''value'')</tt> | |||
::* Parse a date/time string, where the date format is specified by the user's settings and the time format is determined by the user's locale. | |||
::* Return a JavaScript <tt>Date</tt> object. If parsing fails, returns null. | |||
:<tt>L10n.parseNumber(''value'')</tt> | |||
::* Parse a numeric value-string (with or without a fractional amount) in the format specified by the user's locale. | |||
::* Return a String in [[Database Format]] format. If parsing fails, return the original string. | |||
:<tt>L10n.parsePercent(''value'')</tt> | |||
::* Parse a percentage-string in the format specified by the user's locale. | |||
::* Return a String in [[Database Format]] format. If parsing fails, return the original string. | |||
:<tt>L10n.parseTime(''value'')</tt> | |||
::* Parse a time-string in the format specified by the user's locale setting. | |||
::* Return a JavaScript <tt>Date</tt> object. If parsing fails, returns null. | |||
:<tt>L10n.validateCurrency(''value'')</tt> | |||
::* Verify that the currency value-string is in the format specified by the company's locale setting for currencies. | |||
::* Return <tt>true</tt> if the data is in the expected format, otherwise <tt>false</tt>. | |||
:<tt>L10n.validateDate(''value'')</tt> | |||
::* Verify that the date string is in the format specified by the user's settings. | |||
::* Return <tt>true</tt> if the data is in the expected format, otherwise <tt>false</tt>. | |||
:<tt>L10n.validateDateTime(''value'')</tt> | |||
::* Verify the date/time string, where the date is in the format specified by the user's settings and the time format is determined by the user's locale. | |||
::* Return <tt>true</tt> if the data is in the expected format, otherwise <tt>false</tt>. | |||
:<tt>L10n.validateNumber(''value'')</tt> | |||
::* Verify that the numeric value-string (with or without a fractional amount) is in the format specified by the user's locale. | |||
::* Return <tt>true</tt> if the data is in the expected format, otherwise <tt>false</tt>. | |||
:<tt>L10n.validatePercent(''value'')</tt> | |||
::* Verify that the percentage-string is in the format specified by the user's locale. | |||
::* Return <tt>true</tt> if the data is in the expected format, otherwise <tt>false</tt>. | |||
:<tt>L10n.validateTime(''value'')</tt> | |||
::* Verify that the time-string is in the format specified by the user's locale. | |||
::* Return <tt>true</tt> if the data is in the expected format, otherwise <tt>false</tt>. | |||
<noinclude> | |||
[[Category:JavaScript APIs]] | |||
</noinclude> |
Latest revision as of 11:08, 13 August 2020
Accessing Form Fields
JavaScript is a powerful language that can do many things. But one of it's most common uses is to dynamically modify the behavior of Forms, using Form Scripting and Field Scripting.
Note: To reference Form fields in JavaScript for the new AgileApps UI, see JavaScript Field Type Reference for New AgileApps User Interface.
Referencing the Current Form
In the HTML document object model (DOM), the current form is named _sdForm.
This line of code gets a reference to it and puts it in the form variable:
- <syntaxhighlight lang="javascript" enclose="div">
var form = _sdForm; </syntaxhighlight>
Accessing Fields in the Current Form
To find the name of a field in the platform:
- Go to > Customization > Objects > {object} > Fields
- Find the label of the field you're interested in
- Get its name from the Field Name column
That name can then be used in the JavaScript code.
All fields can be accessed using the platform's JavaScript functions, as described in the Field Types section below. The most commonly accessed field types (TextField, TextArea, Date, DateTime, Time, and URL) can also be accessed using _sdForm[0]. For example, this line of code gets a reference to the first_name field, and puts it in the variable fName_field:
- <syntaxhighlight lang="javascript" enclose="div">
var fName_field = _sdForm[0].first_name; </syntaxhighlight>
Fields have two properties that you can access in JavaScript:
- name: the name of the field
- value: the value of the field
So this line retrieves the value of the field:
- <syntaxhighlight lang="javascript" enclose="div">
var fName = fName_field.value; </syntaxhighlight>
As does this longer version:
- <syntaxhighlight lang="javascript" enclose="div">
var fName = _sdForm[0].first_name.value; </syntaxhighlight>
Other fields can be accessed using the platform's JavaScript functions.
For a complete list, see the Field Types section below.
Updating Fields in the Current Form
The method used to update a field depends on the field type. All of the methods have the general form:
- <syntaxhighlight lang="javascript" enclose="div">
set...Value(_sdForm, field, value); </syntaxhighlight>
Below are some examples of common methods. (The section that follows contains a complete list.)
- <syntaxhighlight lang="javascript" enclose="div">
setTextFieldValue(_sdForm, "first_name", "Adam");
setPickListValue(_sdForm, "first_name", "Adam");
setMultiPickListValue(_sdForm, "first_name", ["new","closed"]);
// value is an array of strings
setRadioButtonValue(_sdForm, "first_name", "Adam");
setCheckboxState(_sdForm, "first_name", true); // checked setCheckboxState(_sdForm, "first_name", false); // unchecked
setLookupValue(_sdForm, "project_number", "123456", "My Project");
// where 123456 is the record ID of the target record // "My Project" is the value of the record locator field(s) for that record
</syntaxhighlight>
Field Type Reference
Note: To view the field type reference in the new AgileApps user interface, see JavaScript Field Type Reference for New AgileApps User Interface.
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
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
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 falsesetCheckboxState(_sdForm, field, state)
state: true or false
Example:
setCheckboxState(_sdForm, "item_approved", true);Currency getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valueDate _sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valueDate time _sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valueDependent Picklist getPickListSelectedValue(_sdForm, field)
Returns: selected String containing valuesetPickListValue(_sdForm, field, value)
value: String containing new valueEmail Address getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valueExternal 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.97971165820213setTextFieldValue(_sdForm, field, value)
value: A string containing the new geolocation valueGlobal Picklist getPickListSelectedValue(_sdForm, field)
Returns: selected String containing valuesetPickListValue(_sdForm, field, value)
value: String containing new valueImage Field n/a n/a Lookup getLookupFieldValue(_sdForm, field)
Returns: String containing record ID
getLookupFieldText(_sdForm, field)
Returns: String containing the displayed textsetLookupValue(_sdForm, field, value, text)
value: String containing record ID
text: String containing the text to displayMultiple Checkboxes getMultiCheckBoxValue(_sdForm, field)
Returns: An array of values, one for each checked boxgetMultiCheckBoxValue(_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 stringsetMultiCheckBoxValue(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 valuesetTextFieldValue(_sdForm, field, value)
value: String containing new value, or a numberNumber with decimals sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new value, or a floatPercentage sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valuePhone/Fax sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valuePicklist getPickListSelectedValue(_sdForm, field)
Returns: selected String containing valuesetPickListValue(_sdForm, field, value)
value: String containing new value
Example:
setPickListValue(_sdForm, "status", "Closed");Radio Buttons getRadioButtonValue(_sdForm, field)
Returns: String containing selected valuesetRadioButtonValue(_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 valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valueTextField _sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_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 valuesetTextFieldValue(_sdForm, field, value)
value: String containing new valueURL _sdForm[0].fieldname.value
-or-
getTextFieldValue(_sdForm, field)
Returns: String containing valuesetTextFieldValue(_sdForm, field, value)
value: String containing new value
Accessing User Information
This function returns information about the logged-in user in a json object.
- <syntaxhighlight lang="javascript" enclose="div">
getUserDetails() </syntaxhighlight>
Values availble in the json object are:
- id - user id
- first_name - user's first name.
- last_name - user's last name.
- language - user's language code. (ex: en)
- access_profile_name - user's access profile name.
- time_zone_name - user's time zone name. (ex:America/Indianapolis)
- time_zone_description - localized time zone description.
ex: (GMT-05:00) Eastern Standard Time (America/Indianapolis) - date_format - user's date format.
- time_format - user's time format.
- locale - user's locale code.
- primary_team_name - user's primary team.
- current_role_name - user's current role.
Can be empty if the user has a profile that allows global access, but does not play any specific role in the application. - roles - list of the user's roles in the current application, with current role first.
- teams - list of teams the user belongs to, with the primary team name first.
- userCustomFields - an object containing values for each custom field defined on the User object, where the access key is the field name
- Example
This script prefills fields in current form with data for the logged-in user, where each user record has a custom field called customer_discount:
- <syntaxhighlight lang="javascript" enclose="div">
var userDetails = getUserDetails(); setTextFieldValue(_sdForm, "column_id", userDetails.id); setTextFieldValue(_sdForm, "first_name", userDetails.first_name); setTextFieldValue(_sdForm, "last_name", userDetails.last_name); setTextFieldValue(_sdForm, "language", userDetails.language); setTextFieldValue(_sdForm, "time_zone_name", userDetails.time_zone_name); setTextFieldValue(_sdForm, "time_zone_description", userDetails.time_zone_description); setTextFieldValue(_sdForm, "roles", userDetails.roles) ; setTextFieldValue(_sdForm, "discount", userDetails.userCustomFields.customer_discount); </syntaxhighlight>
Hiding Action Items and Assignment Buttons
Note: To apply these functions with the new AgileApps UI, see the section Considerations for Existing Custom Script Methods in JavaScript Field Type Reference for New AgileApps User Interface.
These functions can be used to hide the actions-menu-items and record-assignment buttons, by calling them from the On Load Script section of a Form Script.
hideActionsMenuItems
Hide one or more items in the ACTIONS menu:
- <syntaxhighlight lang="javascript" enclose="div">
hideActionsMenuItems(['value-1', 'value-2', ...]); </syntaxhighlight> where the parameter is an array of strings that contains the menu-item values (found by inspecting the value attribute of elements in the UI).
- Example
- hideActionsMenuItems(['assignOwnerShipButton','claimOwnerShipButton']);
The above example hides "assign to user" and "claim" options from actions menu.
hideClaimAndAssignButtons
Hide the Claim-record and Assign-record buttons.
- <syntaxhighlight lang="javascript" enclose="div">
hideClaimAndAssignButtons(['id-1', 'id-2', ...]); </syntaxhighlight> where the parameter is an array of strings which contains ID-attributes from the respective buttons.
- Example
- hideClaimAndAssignButtons(['assignOwnerShipButton','assignTeamOwnerShipButton','claimOwnerShipButton']);
The above example hides "assign to user", "assign to team" and "claim" buttons from owner pop-up.
Localization
These functions are used to format and parse data.
Learn more: Localization#JavaScript Programming
- L10n.formatCurrency(value, precision)
- Format a value-string specified in Database Format with no currency character and no grouping indicators (commas), and with a decimal point for fractional amounts.
- Return a String with the value formatted using the company's locale setting for currencies, with the number of decimal places specified for the precision. If the conversion fails, return the original string.
- L10n.formatDate(value)
- Format a date value.
- Return a String with the date formatted using the user's date format.
- Note:
As best practice, do not hardcode a date string, as that value will fail for a user in a different locale. Instead, create an instance of a JavaScript Date object and pass that value as the argument to the function.
- L10n.formatDateTime(value)
- Format a date/time value.
- Return a String with the date formatted using the user's date format, and time formatted for the user's locale.
- Note:
As best practice, do not hardcode a date or time string, as that value will fail for a user in a different locale. Instead, create an instance of a JavaScript Date object and pass that value as the argument to the function.
- L10n.formatNumber(value, precision)
- Format a value-string specified in Database Format with no grouping indicators (commas), with a decimal point for fractional amounts.
- Return a String with the value formatted using the user's locale, with the number of decimal places specified for the precision. If the conversion fails, return the original string.
- L10n.formatPercent(value, precision)
- Convert a value-string specified in Database Format with no percent sign, no grouping indicators (commas), and with a decimal point for fractional amounts.
- Return a String with the value formatted using the user's locale, with the number of decimal places specified for the precision. If the conversion fails, return the original string.
- L10n.formatTime(value)
- Format a date/time value.
- Return a String with the time formatted for the user's locale
- Note:
As best practice, do not hardcode a date or time string, as that value will fail for a user in a different locale. Instead, create an instance of a JavaScript Date object and pass that value as the argument to the function.
- L10n.parseCurrency(value)
- Parse a currency value-string in the format specified by the company's locale setting for currencies.
- Return a String in Database Format format. If parsing fails, return the original string.
- L10n.parseDate(value)
- Parse a date-string in the format specified by the user's settings.
- Return a JavaScript Date object. If parsing fails, returns null.
- L10n.parseDateTime(value)
- Parse a date/time string, where the date format is specified by the user's settings and the time format is determined by the user's locale.
- Return a JavaScript Date object. If parsing fails, returns null.
- L10n.parseNumber(value)
- Parse a numeric value-string (with or without a fractional amount) in the format specified by the user's locale.
- Return a String in Database Format format. If parsing fails, return the original string.
- L10n.parsePercent(value)
- Parse a percentage-string in the format specified by the user's locale.
- Return a String in Database Format format. If parsing fails, return the original string.
- L10n.parseTime(value)
- Parse a time-string in the format specified by the user's locale setting.
- Return a JavaScript Date object. If parsing fails, returns null.
- L10n.validateCurrency(value)
- Verify that the currency value-string is in the format specified by the company's locale setting for currencies.
- Return true if the data is in the expected format, otherwise false.
- L10n.validateDate(value)
- Verify that the date string is in the format specified by the user's settings.
- Return true if the data is in the expected format, otherwise false.
- L10n.validateDateTime(value)
- Verify the date/time string, where the date is in the format specified by the user's settings and the time format is determined by the user's locale.
- Return true if the data is in the expected format, otherwise false.
- L10n.validateNumber(value)
- Verify that the numeric value-string (with or without a fractional amount) is in the format specified by the user's locale.
- Return true if the data is in the expected format, otherwise false.
- L10n.validatePercent(value)
- Verify that the percentage-string is in the format specified by the user's locale.
- Return true if the data is in the expected format, otherwise false.
- L10n.validateTime(value)
- Verify that the time-string is in the format specified by the user's locale.
- Return true if the data is in the expected format, otherwise false.