- Created by Jonathan Muse, last modified by Bogdan Neacsu on Feb 13, 2024
- Mentions
- 0 Associations
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 11 Next »
Contents
Recommendation
Before using SIL Script Custom Field, see Simple Issue Language documentation for a better grasp of SIL usage and capabilities.
Configuring PCF - SIL Script custom field
After you create the field, click the Configure link for this field. You will see the page like the following example:
Click Edit SIL Script and the following screen will appear:
Here you have two tabs: “General” and “Scripts”.
The General tab. Here, you can set the formatting of the value under “Value formatted as”. It can either be “Script Template”, “Date” or “Date Time”, depending what your SIL script will return. You can set the field’s Refresh interval to “Always”, “Never” or “Specify interval”. Note that the refresh interval does not do a refresh on the field on that interval no matter what. Instead, when the value is needed, if the interval passed, the field will be recalculated. What that means is for example, if the Refresh interval is set to “Always”, and the field’s value reflects for example the current minute in the hour, when searching issues by the field's value, you have to search for the last value that was viewed in a non-editable place (E.G. View issue screen). If you search for the current minute, the value won’t be present in the search results.
The Scripts tab.
Here you have to set the field’s SIL script (the script that computes the value to be displayed), and optionally, the template (see SIL Template Language).
Click Save, and the script is associated with the current custom field.
The value returned by the script will be the value of the custom field.
Warning
The script is read-only. Please keep the following in mind:
You must avoid changing any issue values in the script. In fact, you can change the issue variables but they will not be changed (issue will not be saved). However, routines may have side effects.
This field only appears in non-editable places, like on the View screen of an issue or as a column in a JQL search
Thread Local Caching
If you are not fully aware of what this implies, we recommend that you leave the option off.
Because multiple calls to get the value of a SIL Script custom field for a certain issue are inevitable, we implemented an option to generate the value only once per HTTP request. This can improve performance, but might have some side effects.
For instance, if the value is generated before some other values it depends on are modified, the result might not reflect the latest updates.
Using PCF - SIL Script custom field
This is how the field displays the value returned by the script.
Examples
Seeing Issue Age
interval age = currentDate() - created; return "This issue is " + age + " old";
Showing the number of subtasks for a ticket
number noSubtasks = size(subtasks(key)); return "This issue has " + noSubtasks + " subtasks";
Showing average age for issue subtasks
date now = currentDate(); // just to make sure we use the same reference date string [] subtasks = subtasks(key); interval age; for(string task in subtasks){ age = age + (now - %task%.created); } return "Average age of subtasks is " + (age / size(subtasks));
Displaying results from the database
//select the city from the specified region return sql("TestSQL", "select city from cities c, district d, region r where c.iddistrict=d.id and d.idregion=r.id and r.region='Bucharest'");
Seeing how long a ticket is in the particular status
string field_name = "status"; string[] field_history = fieldHistory(key, field_name); number n = arraySize(field_history); date startDate; if (n > 0) { startDate = arrayGetElement(field_history, n - 2); return "Current issue has been " + status + " for " + (currentDate() - startDate); } return "Current issue has been " + status + " for " + (currentDate() - created);
Displaying statuses count for a ticket
string[] statuses; string[] statusHistory = fieldHistory(key, "status"); for(number i = 1; i < size(statusHistory); i = i + 2) { string statusStr = getElement(statusHistory, i); statuses = addElementIfNotExist(statuses, statusStr); } return size(statuses);
Seeing everyone who has ever been an Assignee for the ticket
string[] assignees; assignees = addElementIfNotExist(assignees, userFullName(assignee)); string[] assigneeHistory = fieldHistory(key, "assignee"); for(number i = 1; i < size(assigneeHistory); i = i + 2) { string assigneeName = userFullName(getElement(assigneeHistory, i)); assignees = addElementIfNotExist(assignees, assigneeName); } return assignees;
Making SIL Script custom fields searchable
Log into your Jira as Admin.
Go to Administration > Custom fields, and click Edit for the necessary SIL Script custom field.
Select a Search Template for that custom field according to the value type returned by it.
If you are about to add a new SIL Script custom field, you can choose the Search Template at the custom field creation step.
After changing the Search Templates for all the custom field that you want, perform a re-index in Jira for the search to work fine.
After you set a searcher for the SIL Script custom field, you can perform a search for all issues containing the desired value for that custom field.
See also
For more details on searching issues in Jira, see Searching for Issues tutorial from the Jira documentation.
See More
- PCF - Single Select
- PCF - Single Autocomplete
- PCF - Multi Select
- PCF - Multiple Autocomplete
- PCF - Checkbox
- PCF - Radio Buttons
- PCF - SIL Script Custom Field
- PCF - Regular Expression Custom Field
- PCF - Interval Field
- PCF - SIL User Picker
- Importing and exporting PCF fields
- Integrating Power Custom Fields with Power Scripts for Jira
- Examples for PCF
- No labels