Wiki Markup in Formula Columns
The following article only applies to Structure for Jira Server or Data Center. If you're using Structure for Jira Cloud, see Text Formatting with Emojis and Markdown.
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
Include wiki markup language in your formula column, surrounded by double quotes ("). See Markup Options below for more details.
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}")
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}")
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)")
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)