It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

How to count each status of the status macro

J S Jul 20, 2017

Hey,

I'm trying to summarize all the of the status information given by the status macro in one graph. To do this I need the total count of each possible status. Is there any way to do this because i didnt find any macro that would be able to this and counting it manually would take too much time in the long run.

Many thanks in advance!

 

2 answers

1 accepted

0 votes
Answer accepted
Andrey Khaneev Jul 20, 2017

Hi,

Dou you want to count statuses in a single page? How do you place them (maybe in a table or Page Properties Report macro)?

J S Jul 20, 2017

Hey,

i want to count the statuses of several pages. On the "main" page above I'm using the Page Properties Report Macro (+ labels) right now but I want to change it to a table, so that i can write the status name in one column and the count into another one.

My goal is to use the chart macro to display the information in a graph.

Andrey Khaneev Jul 20, 2017

Then you can use Pivot Table macro to count each status in a table or PPR macro. And you can use Chart from Table macro to visualize it.

Both macro are shipped with Table Filter and Charts add-on.

Andrey Khaneev Jul 20, 2017

Here is the video with your case.

J S Jul 20, 2017

It worked. Thanks a lot!

Andrey Khaneev Jul 20, 2017

You are welcome!

1 vote
Stephen Deutsch Jul 20, 2017

If you want to simply count all statuses in a single page (no filtering required), then you could simply install this simple user macro that puts a count of all same statuses (i.e. if the text is different, then it counts as unique) on a page in a table:

## @noparams
<table>
<tbody id="status-table">
<tr>
<th>Status</th>
<th>Count</th>
</tr>
</tbody>
</table>
<script>
AJS.toInit(function() {
var statusTable = jQuery("#status-table");
var statusMacros = {};
jQuery(".status-macro").each(function() {
if (statusMacros.hasOwnProperty(this.outerHTML)) {
statusMacros[this.outerHTML] += 1;
} else {
statusMacros[this.outerHTML] = 1;
}
});
Object.keys(statusMacros).forEach(function(key) {
statusTable.append('<tr><td class="confluenceTd">' + key + '</td><td class="confluenceTd"><p>' + statusMacros[key] + '</p></td></tr>')
});
});
</script>

 

Stephen Deutsch Jul 20, 2017

Ah, I think this is what you're looking for, but it renders the table on the front-end, so it wouldn't be able to be inserted into the graph macro... let me see if I can figure out how to do it on the back-end.

Stephen Deutsch Jul 20, 2017

In case someone wants to try it without installing a plugin, here's a user macro that should work inside the chart macro (but it won't be displayed properly until you save the page):

## @noparams
#set ( $container = {} )
#set( $contentBody = $content.bodyAsString )
#foreach ( $part in $contentBody.split('(?=<ac:structured-macro)|(?<=\/ac:structured-macro>)') )
#if ( $part.contains('ac:name="status"') )
#set ( $status = $part.replaceAll('ac:macro-id=".{36}" ', '') )
#set ( $statusCount = false )
#set ( $statusCount = $container.get($status) )
#if ( $statusCount )
#set ( $statusCount = $statusCount + 1 )
#set ( $void = $container.put($status, $statusCount) )
#else
#set ( $void = $container.put($status, 1) )
#end
#end
#end
<table>
<tbody>
<tr>
<th>Status</th>
<th>Count</th>
</tr>
#foreach ( $status in $container.keySet() )
<tr>
<td>$status</td>
<td>$container.get($status)</td>
</tr>
#end
</tbody>
</table>

 

A K Aug 31, 2017

that looks great, I'm trying to include this into my page right now.

I'm just a bit lost on where exactly to include the code block?

My diagram area looks somewhat like this (simplified):

chart_makro.JPG

Stephen Deutsch Aug 31, 2017

Hi AK,

you seem a little bit confused about the effects of the macro. What it does is count the status macros on the entirety of the page, so you shouldn't include the statuses within the diagram macro.

First of all, you will have to include the code in a user macro (give it a name):

https://confluence.atlassian.com/doc/writing-user-macros-4485.html

Then you have to include the macro with the name that you defined inside of the diagram macro, and this combination will generate a chart with a count of each status macro. Please make sure you use the 2nd one (the one from the reply, not the main answer).

Stephen Deutsch Aug 31, 2017

Please note that this only works for Server, as you can't use user macros in Confluence Cloud, but I'm working on building this functionality into a Confluence Cloud app.

A K Sep 01, 2017

Great, thanks for clarifying. I was looking for a way to do it without having to write a macro (it's hard to get that past our administration). Will see

Victoria Pooley May 02, 2018

@Stephen Deutsch if you're not a Global Admin and can't develop a User Macro as you've suggested above (and many others have also - including https://stiltsoft.com/blog/2017/09/counting-statuses-dates-tasks-and-other-items-in-confluence/), and the organisation doesn't appear to have added Pivot Macro to our environment - is there any other way to count status modules on a page. I've searched as many blogs and pages to find another way. My administrator here is slammed and won't be able to help me. 

Allan Ngo Jun 20, 2018

+1 to @Victoria Pooley
This would be a great standard feature to be able to report on this or pivot without additional plugins would be great.

Peter Florijn Feb 21, 2019

@Stephen Deutsch 

I try to use the status count in a Chart Macro.

The user macro version 1 is working OK.

The backend version is not giving the same results. (your second answer from 20 July)

It is not grouping by status but shows every status with Count 1.

Any suggestions ?

TIA

avinashp Jun 11, 2019

@Stephen Deutsch  - your macro is not grouping, can you check if you have time

Stephen Deutsch Jun 11, 2019

Something might have changed in recent versions, I'll check soon and update

avinashp Jun 17, 2019

@Stephen Deutsch  Did you get a chance to look into it ? 

Suggest an answer

Log in or Sign up to answer
This widget could not be displayed.
This widget could not be displayed.
Community showcase
Published in Confluence

6 Awesome Ways to Apply Trello, JIRA and Confluence to your Project

I attended  Atlassian Summit 2019  and learned a lot from the presenters, attendees and knowledgeable Atlassian product managers. The presentations I attended focused on applying Agile, pla...

2,396 views 11 28
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you