Looking for a better way to collect and manage our team and department dashboards. It's difficult for someone to go into JIRA and find a dashboard if they don't know how it was saved; short of creating their own view.
The current workaround is maintaining a manual hyperlinked list to the various JIRA dashboards within Confluence. There's got to be a better way to identify a dashboard object to do a query and display this in Confluence?
There's no way to generate a dynamic list of JIRA Dashboards in Confluence out-of-the-box, no.
Edit: You could write a simple User Macro that accomplished this with Javascript for instance –JIRA has an API to get all dashboards. https://docs.atlassian.com/jira/REST/cloud/#api/2/dashboard
I've only poked at this a little, but you could try your hand as well. I need to refactor this into functions before I keep working at it.
image2016-8-16 10:56:42.png
## @noparams
#set($D = "$")
#set($P = "#")
<div id="jra-dash-lister"><ul><span id="jra-dash-loading" class="aui-icon aui-icon-wait">Loading...</span></ul></div>
<pre><script>
// <![CDATA[
AJS.toInit(function(){
AJS.${D}.ajax({
url: '/rest/jiraanywhere/1.0/servers',
type: "GET",
contentType: "application/json",
success: function(jiraLinks){
primaryJiraId = jiraLinks[0].id;
primaryJiraAddress = jiraLinks[0].url;
AJS.${D}.ajax({
url: '/plugins/servlet/applinks/proxy?appId=' + primaryJiraId + '&path=' + primaryJiraAddress + '/rest/api/2/dashboard',
type: "GET",
contentType: "application/json",
success: function(dashboardList){
AJS.${D}('${P}jra-dash-loading').remove()
dashboards = dashboardList.dashboards;
for (i = 0; i < dashboards.length; i++) {
AJS.${D}('${P}jra-dash-lister ul').append('<li><a href="' + dashboards[i].view + '">' + dashboards[i].name + '</a></li>')
}
AJS.${D}('${P}jra-dash-lister ul').append('<p id="jra-dash-count">Showing ' + dashboardList.maxResults + ' of ' + dashboardList.total + ' <a id="jra-dash-next" href="' + dashboardList.next + '">Next Page</a></p>');
AJS.${D}('a${P}jra-dash-next').click(function(event){
event.preventDefault();
AJS.${D}('${P}jra-dash-lister li').remove()
AJS.${D}.ajax({
url: '/plugins/servlet/applinks/proxy?appId=' + primaryJiraId + '&path=' + ${D}(this).attr('href'),
type: "GET",
contentType: "application/json",
success: function(dashboardList){
AJS.${D}('${P}jra-dash-loading').remove()
AJS.${D}('${P}jra-dash-count').remove()
dashboards = dashboardList.dashboards;
for (i = 0; i < dashboards.length; i++) {
AJS.${D}('${P}jra-dash-lister ul').append('<li><a href="' + dashboards[i].view + '">' + dashboards[i].name + '</a></li>')
}
AJS.${D}('${P}jra-dash-lister ul').append('<p>Showing ' + dashboardList.maxResults + ' of ' + dashboardList.total + ' <a id="jra-dash-next" href="' + dashboardList.next + '">Next Page</a></p>');
}
})
})
}
})
}
})
})
// ]]>
</script></pre>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.