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
Atlassian Community Anniversary

Happy Anniversary, Atlassian Community!

This community is celebrating its one-year anniversary and Atlassian co-founder Mike Cannon-Brookes has all the feels.

Read more
Community showcase
Bridget Sauer
Published Thursday in Marketplace Apps

Calling all developers––You're invited to Atlas Camp 2018

 Atlas Camp   is our developer event which will take place in Barcelona, Spain  from the 6th -7th of   September . This is a great opportunity to meet other developers and get n...

77 views 0 5
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