Links
TrackStudio Enterprise 3.1
Calculating Custom Field Value

This topic describes how to use scripts to calculate a custom field value.

To calculate a custom field value:

  1. Click the User Management -> Scripts.
  2. Create a new script or choose an existing one from the list.
  3. Click the Scripts -> Edit tab.
  4. Choose a task to test the script.
  5. Click the Edit button.
  6. Type the text of the script in the popup window. Left-click on a variable or a constant in the left section of the window to add it to the expression.
  7. Optional: Click the Test button to check the correctness of the expression by calculating it.
  8. Click the Save button.
  9. Add a custom field and fill in the Script property for it.

To return the day of the week on which an issue was created use the following task processing script:

gran.tools.Logger log = new gran.tools.Logger("script");
log.debug("start script");
Calendar ca = Calendar.getInstance();
ca.setTime(new Date(task.getSubmitdate().getTime()));
int day = ca.get(Calendar.DAY_OF_WEEK);
switch (day){
     case Calendar.SUNDAY: return "Sunday";
     case Calendar.MONDAY: return "Monday";
     case Calendar.TUESDAY: return "Tuesday";
     case Calendar.WEDNESDAY: return "Wednesday";
     case Calendar.THURSDAY: return "Thursday";
     case Calendar.FRIDAY: return "Friday";
     case Calendar.SATURDAY: return "Saturday";
}
return null;

 

Associated custom field properties:

Property 
Value 
Type 
List 
List of Values 
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday 

To collect text from all messages for the current task use the following task processing script:

String s = "";
for(Iterator it = task.getMessages().iterator(); it.hasNext();) {
    String desc = it.next().getDescription();
    if (desc != null) {
      s += desc + " | ";
    }
}
return s;

Associated custom field properties:

Property 
Value 
Type 
String 

To calculate a summary of the actual budget for all not-closed tasks, use the following task processing script:

public double getAbudget(Object t) {
    double d = 0;
    if(t.getActualBudget() != null && t.getClosedate() == null)
        d = t.getActualBudget().doubleValue();
    for(Iterator it = t.getChildren().iterator(); it.hasNext();)
        d += getAbudget(it.next());
    return d;
}
return getAbudget(task);

Associated custom field properties:

Property 
Value 
Type 
Float 

To list all custom fields with values for the current task, use the following task processing script:

String s = "";
Map udfs = task.getUDFValues();
for(Iterator it = udfs.keySet().iterator(); it.hasNext();) {
    Object udf = udfs.get(it.next());
    s += udf.getCaption() + ":";
    s += udf.getValue(task) + "|";

}
return s;

Associated custom field properties:

Property 
Value 
Type 
String 

To return the number of days since the last update (this field can be used to find out what tasks have been neglected for a long time), use the following task processing script:

((new Date()).getTime() - task.getUpdatedate().getTime())/DAYS

Associated custom field properties:

Property 
Value 
Type 
Integer 

To show the link to Task->Uploads for tasks with custom fields use the following task processing script:

if (task.hasAttachments())
   return gran.app.Config.getInstance().getSiteURL()
          +"/jsp/task/viewtask/uploads/Uploads.jsp?TSSESSION="+task.getSecure().getId()
          +"&ID="+task.getId()
          +"\nDownload";
else
   return "";

Associated custom field properties:

Property 
Value 
Type 
URL 

To get a logged user login use the following task processing script:

ArrayList arr = new ArrayList();
arr.add(task.getSecure().getUser().getLogin());
return arr;

or the following user processing script:

ArrayList arr = new ArrayList();
arr.add(user.getSecure().getUser().getLogin());
return arr;

Associated custom field properties:

Property 
Value 
Type 
User 

To get a task list, use the following script:

ArrayList arr = new ArrayList();
arr.add("1");
arr.add("5");
arr.add("10");
return arr;

Associated custom field properties:

Property 
Value 
Type 
Task 

To get multiple values, use the following script:

ArrayList arr = new ArrayList();
arr.add("Sunday");
arr.add("Monday");
return arr;

Associated custom field properties:

Property 
Value 
Type 
Multiple List 
List of Values 
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday 
Copyright (c) 2002-2005. All rights reserved.