Is tree compatible with SIL?

Issue #52 resolved
Former user created an issue

when use tree Multiple choice ,i can't set value in SIL

Comments (7)

  1. Yury Oboz repo owner
    1. You need install SIL® Groovy Connector
    2. Create groovy script like this:
    import com.atlassian.jira.component.ComponentAccessor;
    
    def cfm = ComponentAccessor.getCustomFieldManager();
    def tsm = ComponentAccessor.getComponentClassManager().newInstance('ru.slie.jira.tree.manager.TreeSchemaManagerImpl');
    def field = cfm.getCustomFieldObject(10001L); // Customfield ID
    
    /* get option by name */
    def schema = tsm.getSchema(field.getRelevantConfig(issue));
    def option = tsm.getOptionByName(schema, "Node 1/Sub node 1.1");
    
    /* get option by id */
    // def option = tsm.getOptionById(74);
    
    if (option) {
        issue.setCustomFieldValue(field, [option]);
    }
    
    return "ololo";
    

    3. Create sil cript:

    executeGroovyScript(readFromTextFile("updatetree.groovy"));
    

    4. Create postfunction from exists sil script:

    5. Profit

  2. ray ming

    thanks a lot!

    i have also read [Issue #43],One more question。

    The following section from [Issue #43]

    /** get value by name **/
    /** Customfield, Node name, search limit; If customfield have only one connected schema - it good choice **/
    def options = tsm.findOptionByName(treeSingleField, "NMX/Q3-20/Requested", 1) 
    if (!options) {
        return "no options found";
    }
    def value = options.first()
    

    how to get and set value, if transfer specific treeMutiFiedl ?

  3. Yury Oboz repo owner

    import com.atlassian.jira.component.ComponentAccessor;
    
    def tsm = .....
    
    def cfm = ComponentAccessor.getCustomFieldManager();
    def treeMultiField = cfm.getCustomFieldObject(10000L); // get field by ID
    
    // def treeMultiField = cfm.getCustomFieldObjectsByName("Field Name"); // get field by name
    
    def currentOptions = issue.getCustomFieldValue(treeMultiField);
    
    def foundOptions = tsm.findOptionByName(treeMultiField, "NMX/Q3-20/Requested", 1); // Return list of TreeOption
    
    issue.setCustomFieldValue(treeMultiField, foundOptions); // set multi value
    // issue.setCustomFieldValue(singleMultiField, foundOptions.first()); // set single value
    
    def foundOptions2 = tsm.findOptionByName(treeMultiField, "NMX/Q3-20/Requested2", 1)
    
    issue.setCustomFieldValue(treeMultiField, [foundOptions.first(), foundOptions2.first()]); // set multi value
    

  4. ray ming

    thank you!!

    It seems that the live fields function in POWER SCRIPTS can only use SIL syntax.

    how to set treeMuti in Live fields function?

  5. Yury Oboz repo owner

    You need to create JS:

    AJS.$("#customfield_10001").empty().append("<option selected value='41'></option>").trigger("change");
    

    and SIL to execute a JS:

    lfExecuteJS("set_tree_value.js");
    

  6. Log in to comment