- Display JQL Condition
- Display Condition (Template-Based)
- Display Condition vs Display JQL
- Error Handling
- Common JQL Patterns
- Troubleshooting
- Next Steps
Dynamic conditions that control when panels appear based on issue data, user context, or JQL queries.
Display JQL Condition
Dynamic filter using JQL. Panel shows only when the current issue matches this query.
How It Works
The system runs the JQL query with the current issue and checks if it returns a match. This is evaluated for each issue view.
Basic Examples
priority in (Highest, High)
status = "In Progress"
labels = "important"
With Template Variables
assignee = {{ currentUser.accountId }}
Shows panel only when current user is the assignee.
reporter = {{ currentUser.accountId }}
Shows panel only to the issue reporter.
project = {{ issue.fields.project.key }} AND type = Bug AND status != Done
Complex condition using issue context.
Combined Conditions
priority = High AND status != Done
duedate < now() AND status != Done
(priority = Highest OR labels = "urgent") AND status != Done
Display Condition (Template-Based)
Template-based filter for dynamic panel visibility. More flexible than Display JQL - supports complex logic and works with JSM Create modules.
How It Works
The system evaluates a template expression and interprets the output:
| Output | Panel |
|---|---|
Empty string, false, no, 0 |
Hidden |
| Any other value | Shown |
Basic Examples
Check labels:
{{ 'urgent' in fields.labels }}
Check priority:
{{ fields.priority.name == 'High' }}
Check assignee exists:
{% if fields.assignee %}show{% endif %}
Check current user is assignee:
{{ fields.assignee.accountId == currentUser.accountId }}
Expression vs If-Statement Style
Expression style - outputs true/false:
{{ fields.priority.name in ['High', 'Highest'] }}
If-statement style - outputs text or nothing:
{% if fields.priority.name == 'High' %}show{% endif %}
Both styles work. Expression style is more concise for simple conditions.
Combined Conditions
AND logic:
{{ fields.priority.name == 'High' and fields.status.name != 'Done' }}
OR logic:
{{ 'urgent' in fields.labels or fields.priority.name == 'Highest' }}
Complex conditions:
{% if fields.priority.name in ['High', 'Highest'] and fields.assignee %}
{% if fields.duedate and isPast(fields.duedate) %}show{% endif %}
{% endif %}
Display Condition vs Display JQL
| Feature | Display Condition | Display JQL |
|---|---|---|
| Syntax | Template expressions | JQL query |
| Evaluated on | Client-side | Server-side |
| Works with JSM Create | Yes | No |
| Complex logic | Easy (and/or/if) | Limited |
| Current user checks | currentUser.accountId |
currentUser() |
| Performance | Faster (no API call) | Slower (JQL search) |
| Error behavior | Fail-close (hide) | Fail-open (show) |
When to use which: Use Display Condition for most cases. Use Display JQL when you need to check related issues or fields not available in issue data.
Error Handling
Display Condition (Fail-Close)
Display Condition uses fail-close behavior:
- If expression has syntax errors → panel hidden
- If required data is missing → panel hidden
- If evaluation fails → panel hidden
This prevents accidental exposure of panels when conditions can’t be properly evaluated.
Display JQL (Fail-Open)
Display JQL uses fail-open behavior:
- If JQL has syntax errors → panel shown
- If query fails → panel shown
Always test your JQL conditions before deploying.
Common JQL Patterns
By Status
status = "To Do"
status in ("In Progress", "In Review")
status != Done
statusCategory = "In Progress"
By Priority
priority = Highest
priority in (High, Highest)
priority != Low
By Dates
duedate < now()
duedate <= endOfDay()
created >= -7d
updated >= -1d
created >= startOfMonth()
By Labels
labels = "needs-review"
labels in ("urgent", "escalated")
labels is EMPTY
By Components
component = "Backend"
component in ("API", "Database")
component is EMPTY
By Custom Fields
"Team" = "Engineering"
cf[10001] = "Value"
"Story Points" > 5
By Current User
assignee = {{ currentUser.accountId }}
reporter = {{ currentUser.accountId }}
watcher = {{ currentUser.accountId }}
Troubleshooting
Panel Not Showing
- Test Display JQL in Issue Navigator - Add
AND key = ISSUE-123to test with specific issue - Check Display Condition syntax - Use Preview to test template expressions
- Verify data exists - Check that fields you’re testing actually have values
Panel Showing Everywhere
You may have left conditions empty or have a syntax error in Display Condition (which fails-open for JQL).
Testing Display Conditions
Use the Preview panel with a real issue key to test how your condition evaluates.
Next Steps
- Context Filters - Project, issue type, and user field filters
- Templates - Template syntax reference
- JSM Create Modules - Using conditions on create forms
Message Panel for Jira Cloud