How can I show statistics on labels used in Confluence?

Gustaf Bengtsson Sahlstrom November 14, 2016

We are looking at storing system information in Confluence, and the idea is to use labels as a way to "classify" the systems in various ways. Now, we would also like to be able to have some kind of dashboard where we could show statistics on the various labels. Pie/bar charts etc.

Is that something that can be done...? The 'Chart' macro is simply manual, and 'Popular Labels' can only show a tag cloud or list, no graphs. Haven't been able to find anything in the googleverse or Marketplace so far, so any tips, tricks and suggestions are welcome...

2 answers

3 votes
Stephen Deutsch
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 14, 2016

If you want to create a graph based on the number of content that has a certain label, then the best way to go would be to use the included chart macro and use this user macro to generate the label count:

## @param Label:title=Label|type=string|required=true|desc=Please enter a label to count
#set ( $containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager') )
#set ( $getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null) )
#set ( $containerManager=$getInstanceMethod.invoke(null,null) )
#set ( $containerContext=$containerManager.containerContext )
#set ( $labelManager = $containerContext.getComponent('labelManager') )
#set ( $requestedLabel = $labelManager.getLabel($paramLabel) )
#if ( $requestedLabel )
$labelManager.getContentCount($requestedLabel)
#else
0
#end

Then just put this macro in the table cell of the chart macro where you would normally put a number.

Gustaf Bengtsson Sahlstrom November 14, 2016

Thanks! I'll take this for a spin and see what I can get done.

Bob Do March 7, 2018

Is it possible to limit the number of labels to one space?

1 vote
Tristan Albach October 1, 2018

After testing this macro, we were getting higher label counts than expected. It turns out there are three possible states for a content object (Current, Deleted, and Draft). We had a developer of ours update the macro to only include "Current" pages. Here is the updated macro:

 

## @Param Label:title=Label|type=string|required=true|desc=Please enter a label to count
#set ( $containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager') )
#set ( $getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null) )
#set ( $containerManager=$getInstanceMethod.invoke(null,null) )
#set ( $containerContext=$containerManager.containerContext )
#set ( $labelManager = $containerContext.getComponent('labelManager') )
#set ( $requestedLabel = $labelManager.getLabel($paramLabel) )
#set ($allContent = $labelManager.getAllContentForLabel(0,500,$requestedLabel) )
##Count: $allContent.getCount() <br>

#set ($listContent = $allContent.getList() )

#set ($tmpCount = 0)
#foreach ($theContent in $listContent)
## $tmpCount | $theContent.getDisplayTitle() <br>

#if ($theContent.isCurrent() )
#set ($tmpCount = $tmpCount +1)
#end

#end
$tmpCount

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events