How can i extract global value of checklist

Hello,
with groovy, how can i extract options from checklist?

i know, how i can extract value of option , but this show me only the name of the item like 'priority , not the option "checked", "mandatory" etc..
How can i do?
thanks for you reponse

3 answers

Hi,

You should take a look at this other thread. It should guide you in doing so.

Cheers,

hello,

i saw that. I realised my script with this code.

But i have always my problem sad

i can extract the option of items (name, checked, mandatory) :

my code :

(Script Field)

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
//import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.fields.*
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.config.SubTaskManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.customfields.option.*
//return "";
def result = "";
def customFieldManager = ComponentAccessor.getCustomFieldManager();  
def OptionsManager optManager = ComponentAccessor.getOptionsManager();
  
def cf = customFieldManager.getCustomFieldObjectByName("Association - statuts conformes")
def cfVal = issue.getCustomFieldValue(cf)
def fieldConfig = cf.getRelevantConfig(issue)
def cfType = cf.getCustomFieldType()
def valueOb = cfType.getDefaultValue(fieldConfig);
  
def option = optManager.getOptions(fieldConfig)
def optionCfgTest = cf.getConfigurationItemTypes()
def List<Option> optionsList = option.getRootOptions();
def List<String> buildOptions = new ArrayList<String>();
 
if(optionsList.size()>0){
 
	
	for(Option optionI : optionsList){
 
	buildOptions.add(optionI.getValue());
    result = buildOptions
	}
}
return valueOb

I tested several possibilities.
Result or valueOb gives me, the same result, I just saw a list of the name of the article like this :

[Article Objet dans les statuts : l'objet de l'association est-il bien la promotion de l'enseignement et de la connaissance scientifique ?, Article Ressources dans les statuts : les ressources autorisées incluent le paiement de prestations de services rendus ?, Absence de risque de conflit d'intérêt avec l'entité organisatrice du stand (ex : un conseil de l'ordre) rendant l'opération inappropriée].

how can i see :

[{"name" : Article Objet dans les statuts : l'objet de l'association est-il bien la promotion de l'enseignement et de la connaissance scientifique ?,"checked" : false, "mandatory" : false}]

thanks for your help

Bonjour,

It would definitely help to know what you are trying to do as it is not clear from the code itself. Why do you want to have the JSON representation of the field?

From the script, you are always pulling out the options used to configure the field. Not the issue values themselves. That is why Result or valueOb return the same values.

If I understand you correctly, what you should be doing is using cfVal and not valueOb. cfVal should return a list of ChecklistItems. Loop over the object in the list and call isOption() on each one. When the return value is true, then call "checked" to see if is checked or not.

En espérant que ça vous aide ...

Bonsoir,

je me permet de vous répondre en français (mon anglais n'étant pas fameux smile ).

comment faire pour boucler sur un objet? (j'ai testé de split avec "," dans une liste, mais scriptrunner me signale que je ne peux le faire)

auriez vous svp la syntaxe avec isOption()?

Mon besoin, est de boucler sur chaque item de la checklist, sans connaitre le nom de l'option.

merci pour vos renseignements (et cool les petits mots en français smile ).

cdt,

jérôme

Bonjour Jérôme,

Je n'utilise pas Groovy donc je ne peux valider la syntaxe mais je vais quand même essayer smile

Par contre, il y a souvent confusion avec le mot option (valeur globale pour toutes les Checklists) donc je ne suis pas certains que le code fasse exactement ce que vous voulez faire mais voici:

 

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.Issue


def customFieldManager = ComponentAccessor.getCustomFieldManager()
   
def cf = customFieldManager.getCustomFieldObjectByName("Association - statuts conformes")
def cfType = cf.getCustomFieldType()
def checklistItems = issue.getCustomFieldValue(cf)
   
checklistItems.each { checklistItem ->
	// To get the name of the item
	checklistItem.name
 
	// To get the checked status
	checklistItem.isChecked()
 
	// To see if it is mandatory
	checklistItem.isMandatory()
 
	// To conditionally do something if it is an option
	if (checklistItem.isOption()) {
 
	}
			
	// To retrieve a JSON representation of the checklist item for storage
	cfType.getStringFromSingularObject(checklistItem)
 
	// To create a new checklist item from a JSON String
	cfType.getSingularObjectFromString('{"name" : "My Checklist Item", "checked" : true, "mandatory" : false}')
}
return

bonjour,

merci ça m' a l'air parfait smile.

je n'ai plus qu'à tester tout ça.

(en fait il me manquait les méthodes associées à votre objet checklistItem.

par contre j'ai toujours pas vraiment compris le isOption.

merci beaucoup pour la rapidité des réponses!

c'est un super plug in.

 

ps: j'avais posé une autre question par contre sur le fait de rajouter par workflow des checklists ... mais que celles-ci n'apparaissaient que si il existait au moins un item global déjà paramétré.
je ne sais pas si c'est une restriction de JIRA ou de votre plug in? 

Pour les options, rérérez-vous au lien suivant dans la documentation. Pour ce qui est de l'autre question, je vais y répondre mais où elle a été posée. Je n'ai jamais été avisé de la question car vous n'aviez pas mis le label de l'add-on.

Bonjour yves,

je reviens tardivement vers vous concernant ma problématique.

j'ai copié le code ci-dessus, mais il ne reconnait pas checklistItem.name.

j'ai pensé importer votre class ChecklistItem  : 

import com.okapya.jira.customfields.ChecklistItem

mais à ce moment, il ne connait pas non plus la Class dans scriptRunner.

vous a t on remonté cette problématique?

merci.

 

Bonjour Jérome,

Probablement mon erreur: Java vs Groovy smile 

Pourrais-tu essayer avec

checklistItem.getName()

 

Pour ce qui est de l'import, je ne connais pas vraiment Groovy.

j'ai pensé à ça aussi, mais pas plus de résultat.

En fait, comme ScriptRunner ne peut importer la class, il ne reconnait pas la méthode getName().

Si je passe en Java, ça devrait donc fonctionner.

j'ai plus qu'à tester smile.

merci tout de même.

bonne journée.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Jul 10, 2018 in Marketplace Apps

If you’re an Atlassian app developer, you’ll want to know about Atlas Camp!

This September 6-7, hundreds of Atlassian App developers will flock to Barcelona Spain to build skills, discover product roadmaps, meet face-to-face with the Atlassian team, and learn how to extend t...

183 views 0 4
Read article

Atlassian User Groups

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

Find a group

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

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you