Versions Compared

Key

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


Excerpt

A calculated date time custom field type returning a java.util.Date (which represents a date+time). It is a read-only field that returns the result of the evaluation of a formula.

Adding a calculated date/time custom field

To add a calculated number custom field type to your instance:

  1. Log in to JIRA as an administrator.
  2. Go to the Administration icon Image Added 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 Date/Time custom 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. Click on Create
  11. Associate the custom field to the appropriate screens.
  12. Locate the custom field in the Custom fields administration page and click on the cog wheel.
  13. Click on Configure and create a formula (explained below) for the field
  14. You can create multiple contexts if you need to associate different formulas with particular projects or issue types.
  15. Perform a re-index as prompted by JIRA.


Note

If you have upgraded from JMCF 1.x to 2.x please refer to the upgrade guide.

Search template:

When creating a calculated date/time custom field type, you can configure the Search template as Date range picker to be able to search issues within a date/time range of values for 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.

Configuring the Groovy formula for a calculated date/time type custom field

Note

Starting from 2.0.0 BeanShell has been replaced by Groovy in the JMCF add-on. Scripts written in BeanShell will work unchanged in Groovy except for some specific cases.

To write a formula for the custom field;

  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 java.util.Date. You can test you written script against any issue using the Groovy script tester.
  5. Click on Save.

Some examples of a Groovy formula:

  • A simple String representing a timestamp in the format specified in your Jira system settings. For example:

    Code Block
    languagegroovy
    linenumberstrue
    "11/Apr/17"


  • A Groovy expression that returns a java.util.Date

    Code Block
    languagegroovy
    linenumberstrue
    new Date()


  • A Groovy expression to reference any field of the issue that returns a Timestamp

    Code Block
    languagegroovy
    linenumberstrue
    issue.get("created")


  • A Groovy expression that includes arithmetic operators as well as any other Groovy operator, and Groovy method calls

    Code Block
    languagegroovy
    linenumberstrue
    issue.get("created") + 5


    Code Block
    languagegroovy
    linenumberstrue
    issue.get("duedate").format("YYYY/MM/DD")


Note

Make sure that the formula returns either a TimeStamp or a String representing a TimeStamp or null. You can test your written scripts against any issue using the Groovy script tester.

Customizing the display of the calculated date/time custom field type value

By default, the calculated date/time field value is displayed using Jira's default date format (if you leave the Edit date format to Default). However, you can customize it using Groovy. To configure a format for a calculated date/time 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 Format Expression.

  4. In the editor write a Groovy script to format the value returned by the Groovy formula (see above). 
  5. You can test you written script against any issue using the Groovy script tester.
  6. Click on Save.

The Groovy script must return a String containing HTML markup. 

Example 1

Consider an example where you want to calculate the amount to be paid in dollars for the Time Spent on the issue. For this, you will need to first calculate the amount to be paid and then format it using the numberTool to display it as a currency.

Groovy formula:

Code Block
languagegroovy
linenumberstrue
(issue.get("timespent") / 60 / 60) * 20

Groovy format:

Code Block
languagegroovy
linenumberstrue
numberTool.format('currency',value)

If the Time Spent on the issue is 7200 seconds, the Groovy expression will return the number 40 and it will be formatted to $40.

Example 2

Consider another example where you want to display an icon to the left of the field value depending on the field value. For this, you will need to format the value returned by the Groovy formula using the numberTool and add an IMG tag to display an icon to the left of the number.

Groovy format:

Code Block
languagegroovy
linenumberstrue
if (value > 21)
  return "<img src='/images/icons/priority_trivial.gif'> "+numberTool.format(value);
else if (value >= 10)
  return "<img src='/images/icons/priority_major.gif'> "+numberTool.format(value);
else
  return "<img src='/images/icons/priority_blocker.gif'> "+numberTool.format(value);

If the Groovy formula returns 23, the calculated field is displayed as Image Added