Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Read and Write TGNG data (Table Grid Next Generation)

jeff singler
October 1, 2020

Hello,

I am attempting to read contents of a table grid next generation custom field from a current issue and copy it's contents to the same table grid field in a create new issue form.  Unsure how this gets done, the challenge here seems to be targeting a new form to write the grid data.  Here is some dirty code we have been playing with.

 

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.plugin.PluginAccessor;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager;
import com.idalko.tgng.jira.server.api.*
import static com.atlassian.jira.issue.IssueFieldConstants.*;

IssueManager issueManager = ComponentAccessor.getOSGiComponentInstanceOfType(IssueManager.class)
//Issue issue = issueManager.getIssueObject(issue.key); //actual use
//Long issueId = issue.getId()
CustomFieldManager customFieldManager = ComponentAccessor.getOSGiComponentInstanceOfType(CustomFieldManager.class);


if (getBehaviourContextId() == "SPR") {
getFieldById("project-field").setReadOnly(true)
getFieldById("issuetype-field").setReadOnly(true)

def contextIssue = issueManager.getIssueObject(getContextIssueId())
def contextIssueId = contextIssue.getId()

//Get Company Value ....................
def CompanyCF = customFieldManager.getCustomFieldObject("customfield_11002")//Company
def contextCompanyCF = contextIssue.getCustomFieldValue(CompanyCF) as String
def CompanyCFconfig = CompanyCF.getRelevantConfig(contextIssue)
def optionsManager = ComponentAccessor.getOptionsManager()
def options1 = optionsManager.getOptions(CompanyCFconfig)
def optionToSelect = options1.find { it.value == contextCompanyCF }
//Get Items grid.......................................
// Get TGNG custom field id
CustomField tgngCustomField = customFieldManager.getCustomFieldObjectsByName("Items")[0]
Long tgngCustomFieldId = tgngCustomField.getIdAsLong()
ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
PluginAccessor pluginAccessor = ComponentAccessor.getPluginAccessor()
Class apiServiceClass = pluginAccessor.getClassLoader().loadClass("com.idalko.tgng.jira.server.api.GridService")
def gridService = ComponentAccessor.getOSGiComponentInstanceOfType(apiServiceClass)

// Read field data
def fieldData = gridService.readFieldData(contextIssueId, tgngCustomFieldId, user, null)
def gridRows = fieldData.getRows()
//def fieldData2 = ""

/*StringBuilder result = new StringBuilder()
for (row in gridRows) {
def columns = row.getColumns()
result.append("Qty: ${columns.get("qty")}, ")
result.append("Item#/Description: ${columns.get("vendoritemnumber")}, ")
result.append("GL Account: ${columns.get("glaccountno")}, ")
result.append("UoM: ${columns.get("uom")}; ")
result.append("Unit Price: ${columns.get("unitprice")};<br>")*/

//fieldData2 = gridService.addRows(null, tgngCustomFieldId, user, [
//["qty": "2", "vendoritemnumber": "123456", "glaccountno": "654321", "uom": "Each", "unitprice": "2.50"]
//])
//}



//Write Form Values..........
getFieldById("summary").setFormValue("${contextIssue.summary}").setReadOnly(true)//Summary
getFieldById("issuelinks-linktype").setFormValue("Creates").setReadOnly(true)//link Type
getFieldById("issuelinks-issues").setFormValue(contextIssue.key).setReadOnly(true)
getFieldById("customfield_11002").setFormValue(optionToSelect.optionId).setReadOnly(true)//Company
getFieldById("customfield_11009").setFormValue(contextIssue.getCustomFieldValue(tgngCustomField))

}

2 answers

1 accepted

0 votes
Answer accepted
JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
August 4, 2014

Hello Daniil. This looks similar to https://jamieechlin.atlassian.net/browse/GRV-470. I never understood what the issue was there, it's a bit of a mess because the end user could not edit the task so kept creating subtasks.

Hard to see what the connection is, maybe something to do with Cyrillic alphabet? If your log shows errors can you attach it to that issue please?

0 votes
hote
September 18, 2014

I met the bug too, and my environment is jira 6.3.1

The questioner means when choose post function like “create sub task” or “Transition parent when all subtasks are resolved ” , there's no place to set parameters.

Here I attached the right page and the wrong page:

image2014-9-19 12:3:32.png

image2014-9-19 12:6:2.png

JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
September 18, 2014

This is https://jamieechlin.atlassian.net/browse/GRV-470, and is fixed in 3.0.4.

Suggest an answer

Log in or Sign up to answer