The Jira Timeline Report creates easy-to-understand 🧠, power-point-ready 🖥️ timeline reports!
It can:
- Show how your timeline has changed 📈
- Break out work by "dev", "qa" and "uat" timelines 📊
- Roll up timing data from stories, sprints, epics, initiatives and releases 📶
This project does NOT save any JIRA data. In fact, other than transporting an access token to the browser, no JIRA data even flows through our servers.
All the code is open source in Github so you can verify this yourself or host it yourself.
This project is supported by Bitovi, an Agile Project Management consultancy. For bugs or feature requests, please submit a Github Issue.
You can get help or ask questions on our:
Bitovi's Agile Project Management with Jira - Reporting training walks through configuring the tool.
The following documents how to configure the tool.
Specify a JQL
that loads all issues you want to report on and help determine the timeline of your report. The report will load faster the fewer issues you load.
Examples:
-
The following loads all Epics and Stories in your jira instance:
issueType in (Epic, Story) order by Rank
NOTE: Specifying
order by Rank
will list items in Rank order. This can be useful if you are usingRank
to prioritize your issues. -
The following loads all children of the issue
PROJ-1
.issuekey in portfolioChildIssuesOf("PROJ-1") order by Rank
NOTE:
portfolioChildIssuesOf
is only available with advanced roadmaps.
The primary timeline settings configure the main chart. It has two parts.
This configures the primary Jira artifact that be reported in the main chart.
This configures the type of report. The options:
- Start and due dates - Create a chart that shows the start and due date for each of the primary Jira artifacts.
- Due dates only - Create a chart that shows only the due dates of the primary Jira artifacts.
- Work breakdown - Create a start and due date chart, but show the start and due dates for work identified as "dev", "qa" or "uat". See Understanding Work Breakdown for more info.
The timing calculation section allows you to specify:
- How timing is "rolled up" across issue hierarchy.
- What issue type releases should report on
Note, your epics and initiatives will need the following statuses for the tool to work:
Idea
,To Do
, orOpen
representing ideas that you might not want on the report.QA
orIn QA
- represending work that is in QA.Partner Review
orUAT
- representing work that is in user acceptance testing.Blocked
- represending work that can not move forward.Done
orCancelled
- Work that is complete and will be hidden from the report.
The Agile Project Management with Jira - Continuous Exploration training has videos on how to create an initiative type with the right statuses.
Initiative timing is calculated from epic Start date
and Due date
fields. Initiative dates are ignored.
If the epic does not have a Start date
or End date
, the stories within the epic can be used to determine
the timing of the epic. In this case, the latest story's end date will be used as the epic's End date
and the earliest story's start date will be used as the epic's Start date
.
Story timing itself is determined from:
- The
Start date
andEnd date
of the story; or if these don't exist - The story's sprints
NOTE: To use story timing, you must use a JQL that includes stories.
To label epics as part of an initiative's QA or UAT timing, add a Label
that includes the characters QA
or UAT
.
See Contributing
- The server folder contains a
server.js
which bootstraps an express application that renders the application - It has an endpoint that fetches the access token from Jira and refreshes the access token when expired.
- The
pages
folder contains the html files that are rendered. - The
public
folder contains the javascript files that are included in the html files. - The
jira-oidc-helpers
is a collection of modules with all the helpers required to interact with Jira and save your access and refresh tokens tolocalStorage
. - You will make changes to the
main-helper.js
files based on your use case. Everything you need to make your request has been layered injira-oidc-helpers
. - Call the
jiraFetch
helper with the url path you want from your main and handle the data how you see fit. e.g
const issue = await jiraHelper.jiraFetch(urlPath);