Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status
colourYellow
titleNew in JMCF 2.0.0

Excerpt


A Calculated Multi-select custom field type represents a collection of Options and is displayed as a String representing the option values. It is a read-only field. You will need to configure options to this field just like any Jira Standard custom field of Multi-select list/Checkboxes type.

Adding a Calculated Multi-select custom field type

To add a Calculated Multi-select custom field type to your instance:

  1. Log in to JIRA as an administrator.
  2. Go to the Administration icon  and click on it.
  3. Click on Issues - > Custom fields.
  4. Click on Add custom field.
  5. Click on Advanced in the left panel.
  6. Locate Calculated Multi-select Field type and select it.
  7. Click on Next.
  8. Provide a name for the custom field
  9. You can optionally provide a description for the custom field.
  10. Add options for the custom field.
  11. Click on Create
  12. Associate the custom field to the appropriate screens.
  13. Locate the custom field in the Custom fields administration page and click on the cog wheel.
  14. Click on Configure and create a formula (explained below) for the field.
  15. You can create multiple contexts if you need to associate different formulas with particular projects or issue types.
  16. Perform a re-index as prompted by JIRA.

Search template

When creating a Calculated Multi-select custom field type, you can configure the Search template as Multi select searcher for guided search, and it can be used in statistics dashboard gadgets. 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.

Configuring the Groovy formula for a Calculated Multi-select custom field type

To write a formula for the Calculated Multi-select custom field type;

  1. Locate the custom field on the Custom Fields administration page.
  2. Click on the cog wheel and click on Configure
  3. Click on Edit Groovy Formula
  4. In the editor write a Groovy script that returns a String representing a comma-separated list of option values/ids or an array of option values/ids or a collection of option objects. Also, you can test your script against any issue using the Groovy script tester.
  5. Click on Save.

As documented on the Expected Value tab of the Groovy Editor help, the Groovy formula must return either:

  • A comma-separated list of option values or IDs
  • An array of option values or IDs
  • A Collection of Option objects
  • null or []

Examples of Groovy formula for a Calculated Multi-select custom field type:

  • A Groovy expression returning a String representing the option value

    Code Block
    languagegroovy
    linenumberstrue
    "Option 1"


  • A Groovy expression returning a String representing the option id

    Code Block
    languagegroovy
    linenumberstrue
    10010


  • A Groovy expression returning a String with comma separated values that represent the values of the options.

    Code Block
    languagegroovy
    linenumberstrue
    "Skype Installation,Eclipse Installation"


  • A Groovy expression returning an array of strings that represent the values of the options.

    Code Block
    languagegroovy
    linenumberstrue
    ["Skype Installation","Eclipse Installation"]


  • A Groovy expression returning an option object

    Code Block
    languagegroovy
    linenumberstrue
    issue.get("Radio buttons field")


  • Groovy expression returning a collection of option objects

    Code Block
    languagegroovy
    linenumberstrue
    issue.get("Checkboxes field")


  •  A Groovy expression returning the options of two Single-select fields that contain the text "Installation"

    Code Block
    languagegroovy
    linenumberstrue
    issue.getRawValue("Single select 1").findAll{
      it.getValue().contains("Installation")
    } + 
    issue.getRawValue("Single select 2").findAll{
      it.getValue().contains("Installation")
    }


Customizing the display of the Calculated Multi-select custom field value on the issue detail view

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-select custom field type value:

  1. Locate the custom field on the Custom Fields administration page.
  2. Click on the cog wheel and click on Configure
  3. Click on Edit Velocity Template.
  4. Input the template.
  5. Click on Save.

You can use the following Velocity variables in the template:

  • $value: the raw field value, a collection of Option objects.
  • $formattedValue: String with comma separated values that represent the values of the returned options.
  • and other variables described on this page

For example:

Code Block
<div style="border: solid">
  $formattedValue
</div>

the raw value of the calculated field in a solid border.

Code Block
#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 options returned by the calculated field.

Customizing the display of the Calculated Multi-select custom field value on the list view

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-select custom field type value:

  1. Locate the custom field on the Custom Fields administration page.
  2. Click on the cog wheel and click on Configure
  3. Click on Edit List View Velocity Template.
  4. Input the template.
  5. Click on Save.

You can use the following Velocity variables in the template:

  • $value: the raw field value, a collection of Option objects.
  • $formattedValue: String with comma separated values that represent the values of the returned options.
  • and other variables described on this page

For example:

Code Block
<div style="border: solid">
  $formattedValue
</div>

the raw value of the calculated field in a solid border.

Code Block
#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 options returned by the calculated field.

Displaying the Calculated Multi-select custom field type on Transition and Edit screen

The Never show on Transition and Edit screens option controls whether the calculated Multi-select 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.

Accessing the Calculated Multi-select custom field value from other Groovy scripts

You can access this field using any of the following getters of the Issue interface