A Calculated Multi-user custom field type represents a collection of users and is displayed as a String representing the user display names. It is a read-only field. |
To add a Calculated Multi-user custom field type to your instance:
Issues - > Custom fields.
Add custom field
.Advanced
in the left panel.Calculated Multi-user Field type
and select it.Next
.Create
Configure
and create a formula for the field (see below).When creating a Calculated Multi-user custom field type, you can configure the Search template as User Picker & Group Searcher
to be able to search issues for users in that custom field. If you select “None” for the searcher, then you won’t see any reference to this field in the Issue Navigator search fields. Note that changing a custom field searcher requires a re-index.
To write a formula for the Calculated Multi-user custom field type;
Configure
Edit Groovy Formula
Save.
As documented on the Expected Value tab of the Groovy editor help, the Groovy formula must return either:
null
or []Examples of Groovy formula for a Calculated Multi-user custom field type:
A Groovy expression returning a String representing the username
"carter" |
A Groovy expression returning a String with comma separated values that represent usernames
"carter,charlie" |
A Groovy expression returning an array of strings that represent the usernames
["carter","charlie"] |
A Groovy expression returning an ApplicationUser object
issue.get("reporter") |
A Groovy expression returning a collection of ApplicationUser objects
issue.get("Watchers") |
You can define a velocity template that will return the Html representation of the calculated custom field on the issue detail view. Leave it empty to use the default template.
To write a velocity template for a Calculated Multi-user custom field type value:
Configure
Edit Velocity Template
.Save.
You can use the following Velocity variables in the template:
$value
: the raw field value, a collection of ApplicationUser objects.$formattedValue
: String with comma separated values that represent the user display names, with avatars.For example:
#set($separator = "") #set($emailAddress ="") #foreach($value in $value) #set($emailAddress=$emailAddress+$separator+$value.emailAddress) #set($separator = ",") #end $emailAddress |
to display the Email Address of the users in the calculated field.
#if( $value.size() > 1 ) <span class="aui-lozenge aui-lozenge-success">$formattedValue</span> #else <span class="aui-lozenge aui-lozenge-new">$formattedValue</span> #end |
displays the values in specific colored lozenge based on the number of users in the calculated field.
You can define a velocity template that will return the Html representation of the calculated custom field in search result list views. Leave it empty to use the default template.
To write a velocity template for a Calculated Multi-user custom field type value:
Configure
Edit List View Velocity Template
.Save.
You can use the following Velocity variables in the template:
$value
: the raw field value, a collection of ApplicationUser objects.$formattedValue
: String with comma-separated values that represent the user display names, with avatars.For example:
#set($separator = "") #set($emailAddress ="") #foreach($value in $value) #set($emailAddress=$emailAddress+$separator+$value.emailAddress) #set($separator = ",") #end $emailAddress |
to display the Email Address of the users in the calculated field.
#if( $value.size() > 1 ) <span class="aui-lozenge aui-lozenge-success">$formattedValue</span> #else <span class="aui-lozenge aui-lozenge-new">$formattedValue</span> #end |
displays the values in specific colored lozenge based on the number of users in the calculated field.
The Never show on Transition and Edit screens
option controls whether the calculated Multi-user custom field can appear on transition and edit screens. If you select this option, the field will not be visible on any Edit or Transition screen, even if it is added to the screen.
You can access this field using any of the following getters of the Issue interface
get("Your custom field name") or get("customfield_xxxxx")
that returns a
Collection
<ApplicationUser>
getAsString("Your custom field name")
or
getAsString("customfield_xxxxx")
that returns a String
with comma separated usernames.