...
We'll show how to obtain a Preview Context used with Templates at edit time for render checking. In this example, we'll add custom content for the resolution of an issue. By default there are only Created, Updated and Deleted event templates, so this will be a modification to the Updated event template.
Collect the webhook data as Convert a received webhooks from JEMHC > Auditing > Events, into a Preview Context that can be used with TemplateSets.
Create Custom Macro to provide detection logic and rendering of required content
...
Go to Auditing > Events and locate an issue that has been resolved : and sent
We just noticed that its possible to create a Preview Context from a queuing event which wont work - ensure the event was ‘sent’ which will fill in parts of the issue data like the description. This will be fixed in an upcoming release.
...
An event entry will look something like this:
...
Most properties lie under the $context.issue.fields prefix, as shown:
field | expression |
---|
Issue Key | $context.issue.key.asText()
|
Project Key | Code Block |
---|
$context.issue.fields.project.key.asText() |
|
Description (as Text) | $fields.description.asText() |
Description (as HTML) | $jemhUtils.wikiToHtml($fields.description.asText()) |
Custom Field Value (Text) | $context.issue.fields.customfield_10610.asText()
|
Custom Field Value (Single Choice) | $context.issue.fields.customfield_13900.value.asText()
|
Custom Field Value (Multiple Choice) | Code Block |
---|
#foreach ($item in $context.issue.fields.customfield_13600)
$item.value.asText()
#end |
|
Reporter Display Name | $context.issue.reporter.displayName.asText
|
()Comment if present$context.issue.fields.comment
|
All Comments (if present) | Code Block |
---|
<h1>Prior Comments</h1>
<p>Issue $context.issue.key.asText() has $fields.comment.total comments</p>
#foreach( $comment in $fields.comment.comments )
<h3>Comment created $comment.created.asText()</h3>
$jemhUtils.wikiToHtml($comment.body.asText())
#end |
|
Access individual comments | Code Block |
---|
<h2>STATIC comment extract</h2>
<pre>
1) $fields.comment.comments[0].id -- $fields.comment.comments[0].created -- <p>$fields.comment.comments[0].body.asText()</p>
2) $fields.comment.comments[1].id -- $fields.comment.comments[1].created -- <p>$fields.comment.comments[1].body.asText()</p>
3) $fields.comment.comments[2].id -- $fields.comment.comments[2].created -- <p>$fields.comment.comments[2].body.asText()</p>
</pre> |
|
Display comment is reverse order | Code Block |
---|
<h2>REVERSED comments</h2>
#if ($fields.comment.total >0)
#foreach($i in [1..$fields.comment.total])
#set ($actualIdx = $fields.comment.total - $i)
#set ($comment = $fields.comment.comments[$actualIdx.intValue()])
<p>
<h3>Comment created $comment.created.asText()</h3>
$jemhUtils.wikiToHtml($comment.body.asText())
</p>
#end
#else
no comments yet
#end |
|
Labels | #foreach ($aLabel in $context.issue.fields.labels) $aLabel #end
|
Sprint name |
|
Working with dates
Date timestamps | Code Block |
---|
#set( $createdStr = $comment.created.asText() )
#set( $timeStr = $createdStr.substring($createdStr.indexOf('T')+1) )
#set( $timeSplit = $timeStr.split(":"))
<h3>Comment created date: $createdStr.substring(0,$createdStr.indexOf('T')) at $timeSplit[0]:$timeSplit[1] </h3> |
|
Date (translate ISO dates) | Code Block |
---|
#set ($dateObj = $dateFormatter.getDate($comment.created.asText()))
$dateFormatter.format($dateObj, "dd/MMM/yy h:mm a") |
|
Create the custom macro
The System Macros show macros defined within JEMHC and inherited by all instances:
...