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...
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.
Thanks! I'll take this for a spin and see what I can get done.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.