Hello,
On my workflow, I have a field that contains the time spent on an issue.
My main idea is to make a report of sum of time spent each month from all the issues.
I can get these informations (time spent, time remaining) from agregate functions or by exporting by Excel file, but I want to show these details on a gadget in a Dashboard.
I don't know how to develop a gadget and it seems to be difficult.
I have an another idea.
When we close the issue, call a groovy script that:
Could someone help me please?
Thanks
import org.apache.log4j.Category import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.search.SearchException import com.atlassian.jira.web.bean.PagerFilter import com.atlassian.jira.issue.util.IssueChangeHolder import com.atlassian.jira.issue.util.DefaultIssueChangeHolder; import com.atlassian.jira.issue.ModifiedValue import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.ComponentManager; import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.customfields.manager.OptionsManager import com.atlassian.jira.issue.customfields.option.Option import com.atlassian.jira.issue.*; import java.sql.Timestamp Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault()); int currentDay = localCalendar.get(Calendar.DATE); println currentDay if ( currentDay == 18 ){ println "WE ARE IN CURRENT DAY _script Somme Precedent" def jqlSearch = "project = 'AISC - Suivi des demandes' and status was in (Validation) and ('Date de livraison' >= startOfMonth(-1) and 'Date de livraison' <=endOfMonth(-1))" def userManager = ComponentAccessor.getUserManager() def issueManager = ComponentAccessor.getIssueManager() def searchService = ComponentAccessor.getComponentOfType(SearchService) def user = userManager.getUserByName("yk3520").directoryUser SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch) def value = 0 def customFieldManager = ComponentAccessor.getCustomFieldManager() def myCustomField = customFieldManager.getCustomFieldObjectByName("Temps d'intervention") if (parseResult.isValid()) { try { def results = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()) def issues = results.getIssues() issues.each { if (it.getCustomFieldValue(myCustomField)) value += it.getCustomFieldValue(myCustomField).toInteger() } } catch (SearchException e) { e.printStackTrace() } } else { log.warn("Invalid query") return null } // Save the value at custom field with name A number custom field of issue with key TEST-1 def targetIssue = issueManager.getIssueByCurrentKey("SL-8") def customField = customFieldManager.getCustomFieldObjects(targetIssue).find {it.name == "Total intervention M-1"} if (customField) { def changeHolder = new DefaultIssueChangeHolder() customField.updateValue(null, targetIssue, new ModifiedValue(targetIssue.getCustomFieldValue(customField), value.toString()),changeHolder) log.debug "Custom field $customField.name} updated with value ${value}" return } log.warn "Custom field ${customField?.name} was not updated" } else { println "WE ARE NOT IN CURRENT DAY" }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.