Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Page properties
hiddentrue




UI Text Box
sizemedium
typeinfo

Starting with version 1.3.0, it is possible to add Sprint and Board pickers.


UI Text Box
typenote

For this to work, Jira Software has to be installed in your system.


Agile Board Picker example

This chart shows all open sprints in the chosen boards.

UI Expand
titleLayout Script


Code Block
languagejs
themeMidnight
linenumberstrue
var c3arg = {
    onrendered: updateFrameHeight,
    data: chartData,
    axis: {
        x: {
            type: 'category', // this needed to load string x value
            label: {
                text: chartData.custom.xLabel,
                position: 'outer-left'
            }
        },
        y: {
            label: chartData.ytype
        }
    }
};
 
c3.generate(c3arg);



UI Expand
titleData Script


Code Block
languagejs
themeMidnight
linenumberstrue
import com.atlassian.jira.component.ComponentAccessor;
import com.decadis.jira.xchart.api.util.DateUtils;
import com.decadis.jira.xchart.api.model.Period;
import com.decadis.jira.xchart.api.model.ChartData;
import com.decadis.jira.xchart.api.CountGroup;
 
import com.atlassian.greenhopper.service.rapid.view.RapidViewService;
import com.atlassian.greenhopper.service.rapid.RapidViewQueryService;
import com.atlassian.greenhopper.service.sprint.Sprint;
 
import org.apache.log4j.Logger;
 
def logger = Logger.getLogger("BoardPicker");
def data = chartBuilder.newDataCollector();
 
def rapidViewService = ComponentAccessor.getOSGiComponentInstanceOfType(RapidViewService.class);
def rapidViewQueryService = ComponentAccessor.getOSGiComponentInstanceOfType(RapidViewQueryService.class);
 
for (def boardId in BoardPicker)
{
    def rapidView = rapidViewService.getRapidView(user, Long.parseLong(boardId)).getValue();
    if (rapidView != null)
    {
      List<Sprint> sprints = rapidViewQueryService.getOpenSprintsAndBacklogProjects(user, rapidView).getValue().left();
      for (Sprint sprint in sprints)
      {
            data.addValue(1, sprint.getName(), rapidView.getName());
      }
    }
}
 
data.fillMissingValues();
def chartData = chartBuilder.newChartData("Open Sprints")
chartData.setType("bar");
chartData.addCustomData("xLabel", "Boards");
  
chartBuilder.getChartUtil().transformResult(data, chartData, true);
  
return chartData;



Agile Sprint Picker example

This chart is a category chart that shows the number of issues in the selected sprints.

UI Expand
titleLayout Script


Code Block
languagejs
themeMidnight
linenumberstrue
var c3arg = {
    onrendered: updateFrameHeight,
    data: chartData,
    axis: {
        x: {
            type: 'category', // this needed to load string x value
            label: {
                text: chartData.custom.xLabel,
                position: 'outer-left'
            }
        },
        y: {
            label: chartData.ytype
        }
    }
};
 
c3.generate(c3arg);



UI Expand
titleData Script


Code Block
languagejs
themeMidnight
linenumberstrue
import com.atlassian.jira.component.ComponentAccessor;
import com.decadis.jira.xchart.api.util.DateUtils;
import com.decadis.jira.xchart.api.model.Period;
import com.decadis.jira.xchart.api.model.ChartData;
import com.decadis.jira.xchart.api.CountGroup;
import com.atlassian.jira.user.ApplicationUser;
 
import com.atlassian.greenhopper.service.sprint.SprintIssueService;
import com.atlassian.greenhopper.service.sprint.SprintService;
import com.atlassian.jira.issue.Issue;
import org.apache.log4j.Logger;
 
def logger = Logger.getLogger("SprintPickerLog");
def data = chartBuilder.newDataCollector();
 
// this is how the specific Jira Agile classes can be used in xCharts
def sprintService = ComponentAccessor.getOSGiComponentInstanceOfType(SprintService.class);
def sprintIssueService = ComponentAccessor.getOSGiComponentInstanceOfType(SprintIssueService.class);
 
ApplicationUser applicationUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
 
for ( def sp in SprintPicker )
{
    def sprint = sprintService.getSprint(applicationUser, new Long(sp)).get();
    Iterable<Issue> issuesInSprint = sprintIssueService.getIssuesForSprint(user, sprint).get();
    long size = issuesInSprint.spliterator().getExactSizeIfKnown();
    data.addValue(size, "Issues", sprint.getName());
}
 
data.fillMissingValues();
def chartData = chartBuilder.newChartData("Issue Count")
chartData.setType("bar");
chartData.addCustomData("xLabel", "Sprint");
 
chartBuilder.getChartUtil().transformResult(data, chartData, false)
 
return chartData;




Related examples

Page properties report
cqllabel = "chart_script_example" and space = currentSpace()


Excerpt Include
DECADIS:Contact support
DECADIS:Contact support
nopaneltrue