By adding wiki markup to a formula column, you can call attention to critical information, color-code data fields, or add other visual customizations to a structure.

Wiki markup allows you to:

  • Specify the text color within a column
  • Highlight cells with background coloring
  • Insert images
  • Add emojis

Using Wiki Markup

To add wiki markup to a formula column:

Click the Add Column button (+) and select Formula

  1. Include wiki markup language in your formula column, surrounded by double quotes ("). See Markup Options below for more details.
  2. Under the Format menu, select Wiki Markup. (This is important - your content will not display correctly unless the Wiki Markup format is selected.)

As you save/update the formula, your new column should update automatically. Once you're finished, click anywhere on your structure to close the Add Column dialogue and see your new column.

The example above highlights all the Epics in the structure: 

Here's the formula we used - just in case you want to try it yourself:

IF(issuetype="Epic", "{panel:bgColor=#ADFF2F}Epic{panel}")
CODE

With a few more If statements, you could color-code your entire structure by issue type. Or you could assign different colors to each Assignee or some other custom field. The possibilities are endless!

Markup Options

Structure uses the Jira Markup language to enable wiki markup within formula columns.

Using wiki markup, you can add the following elements to a cell:

  • Custom text formatting
  • Text, background and border color
  • Images
  • Emojis

You can find a complete list of available formatting options and conventions on Jira's Text Formatting Notation Help page.

While it is possible to add tables and lists to a formula column, we do not recommend it. Due to the limited space, these items may not appear as expected.

Export

Wiki Markup can be exported to Excel or printed, using Structure's Export feature.

Your markup should export just as it appears in Structure, with some exceptions:

  • Colored borders are not exported to Excel or printable.
  • When exporting to Excel, text cannot be combined with emojis or other images within the same cell. If both are present, only the text will be exported.
It's fine to mix text and emojis/images in the same column, just not the same cell.

Examples

Example 1: Progress Warnings

In the following example, we have created a simple formula to draw attention to overdue and upcoming due dates:

  • When an issue is overdue, a red "OVERDUE” warning appears in the column
  • When an issue is due within the next 7 days, the columns displays a green “Due Soon”
  • When there's over a week to go, the issue gets a smiley face
  • And if the issue doesn't have a due date, it let's you know that too

To accomplish this, we added markup language to a standard IF statement:

IF (dueDate < today(), "{color:red}OVERDUE{color}", 
    DAYS_BETWEEN(today(), DueDate) <= 7, "{color:green}Due Soon{color}", 
    DAYS_BETWEEN(today(), DueDate) > 7, ":D", 
    "{color:blue}Needs Due Date{color}")
CODE

We used text to call attention to overdue items, but you could also add a flag: "(flag)"

To learn more about using If statements, DAYS_BETWEEN, or any other functions, see Expr Function Reference.

Example 2: Project Markers

In this example, we've created a column to quickly identify each project we're working on. In this case, each project is marked by a unique star color.


To create this column, we used the special character notations for stars "(*)" - along with color designations:

CASE(project, "SAFe Program", "(*b)", "SAFe Team A", "(*y)", "SAFe Team B", "(*r)", "Marketing", "(*g)")
CODE


You could apply this same concept to any field, and you don't have to stick with stars. For example, you may want to color-code issues by team – or insert photos of your team mascots!

Example 3 - Issue Health

Here's the code for the issue health column you saw at the top of this article.

with WORK_TIME_TO_CALENDAR_TIME(time) = (
  with min = 60 * 1000:
  with hour = 60 * min:
  with day = 8 * hour:
  with week = 5 * day:
  with weeks = FLOOR(time / week):
  with r1 = time - weeks * week:
  with days = FLOOR(r1 / day):
  with r2 = r1 - days * day:
  with hours = FLOOR(r2 / hour):
  with r3 = r2 - hours * hour:
  with mins = r3 / min:
  (((weeks * 7 + days) * 24 + hours) * 60 + mins) * min
):

with FORMAT_CAPTION(image, color, caption, offset1, offset2) = (
  with SPACE(pixels) = """!https://upload.wikimedia.org/wikipedia/commons/5/52/Spacer.gif|width=$pixels!""":
  """{panel:borderStyle=solid|borderColor=white|bgColor=$color} !$image|width=20,height=20! ${SPACE(offset1)}{color:white}$caption{color}${SPACE(offset2)}{panel}"""
):

with diff = FLOOR((due_date - (TODAY() + WORK_TIME_TO_CALENDAR_TIME(sum {remaining}))) / 86400000):

IF type = "epic" or type = "epic enabler":
IF diff < 0:
  FORMAT_CAPTION("https://lh3.google.com/u/0/d/19uzgf1XoSVOgJqXjoJKSjKGZggnfV83A=w2760-h1400-iv1", "#EF4B59", "*At Risk* ", 7, 7)
ELSE IF diff < 15:
  FORMAT_CAPTION("https://lh3.google.com/u/0/d/1pAa-BvSvKCiPv1oplNFbkih1t7wuT2A6=w2880-h1430-iv1", "#FFAF00", " *OK* ", 18, 20)
ELSE:
  FORMAT_CAPTION("https://lh3.google.com/u/0/d/1pNS0ctx-1T8z5s73rT_IsJmxV5fNhSKF=w2880-h1430-iv1", "#59B161", "*Great*", 13, 15)

CODE