Scoring Fields definition

You can add as many as Scoring fields as you want for your Data Panel

  • Select in the list which Scripted Fields that you want to display.
  • Define a label to display
  • Set the order to display scoring fields, in the table footer.


One scripted field should only be associated with one. To get consistency in the score and the data displayed in the panel, do not share a scripted field between further panels.

Define a scoring rule

For each scoring field you should use the add-on Script Runner.

From the Add-on menu, click on the sub-menu Script Fields.

You should :

  • Define your script
  • Choose the type of field, in or case it a Number Field

Example of script.

import com.atlassian.jira.ComponentManager
import com.atlassian.plugin.PluginAccessor
  
import java.util.HashMap
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType
  
enableCache = {-> false}
  
PluginAccessor pluginAccessor = componentManager.getPluginAccessor();
Class dataPanelScoringServiceClass = pluginAccessor.getClassLoader().findClass("com.valiantys.jira.plugins.exocet.service.DataPanelScoringService");
  
def dataPanelScoringService = componentManager.getOSGiComponentInstanceOfType(dataPanelScoringServiceClass);
def customFieldManager = ComponentManager.getInstance().getCustomFieldManager();
  
def members = customFieldManager.getCustomFieldObjectByName("Members");
  
Double somme= 0;
  
for (returnedIssue in dataPanelScoringService.getSetOfIssuesByCfName("SCORE",issue)){
         somme += returnedIssue.getCustomFieldValue(members);
}
  
return somme;


What you have to know to be fully integrated into a Data Panel 

  • Get the set of issue according to the data panel previoulsy configured

First get access to the public service provided by Copy & Sync.

PluginAccessor pluginAccessor = componentManager.getPluginAccessor();
Class dataPanelScoringServiceClass = pluginAccessor.getClassLoader().findClass("com.valiantys.jira.plugins.exocet.service.DataPanelScoringService");


Then iterate on the Issue displayed by the panel

for (returnedIssue in dataPanelScoringService.getSetOfIssuesByCfName("SCORE",issue)){
         somme += returnedIssue.getCustomFieldValue(members);
}

As you can see, the retieved set of issues is depending of the current Scripted Fields, in our case "SCORE".

This is precisely the limitation seen previously. One Scripted Field should be associated only with one Data Panel

  • The cache must be disabled.
enableCache = {-> false}


  • Limitations in the computing rules

With groovy there is no limitation in your formula. Do the script you want with Script Runner and exocet will display the result in a pretty web panel.