It's all about the answers!

Ask a question

Get amount of time a WI has been in a given state? (javascript)


Daniel Flores Montanez (19112) | asked Jun 01 '16, 11:22 a.m.
edited Jun 12 '16, 5:49 p.m. by Geoffrey Clemm (29.3k23035)
 I've looked at this other question and building up on it.=
https://jazz.net/forum/questions/180890/defect-age-by-state

Not sure if anyone has done this yet, but the problem that I'm encountering is that the current time doesn't refresh when the page gets refreshed. 

I've used  both getTime() and Date.now() and it is the same thing. The date only gets refreshed when you change the state of the WI instead of automatically every time you refresh the page.

You can see this when you run a simple customized attribute with the following javascript

dojo.provide("com.example.GetTurnAroundTime");
dojo.require("com.ibm.team.workitem.api.common.WorkItemAttributes");
dojo.require("dojo.date");
dojo.require("dojo.date.stamp");

(function() {
    dojo.declare("com.example.GetTurnAroundTime", null, {
    getValue: function(attribute, workItem, configuration) {
        try {
           var WorkItemAttributes= com.ibm.team.workitem.api.common.WorkItemAttributes;
           var currentDate= Date.now(); 
  
           if(currentDate != null)
           return currentDate.toString();
        }
    }
  });
})();  

The end goal is to calculate how long the WI has been under a certain state, but this is the first step in solving this problem.
Any help or input would be appreciated.



Comments
Daniel Flores Montanez commented Jun 01 '16, 12:21 p.m.

 I've noticed that the time gets updated every time you save, not necessarily with change of states.


I would still want it to be automatic instead of the the time having to rely on saving the work item each time.


Daniel Flores Montanez commented Jun 01 '16, 12:24 p.m.

 I've just noticed the time changes every time you save the work item. It actually has nothing to do with the state change, but it still needs to be saved.


I would want it to update every time the page gets refreshed and not necessarily saved

Accepted answer


permanent link
Ralph Schoon (55.9k23642) | answered Jun 06 '16, 4:35 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
It is very hard to reliably detect a state change in an attribute customization. It would be necessary to store a state in a hidden attribute and use that to determine the state actually changed. I think it would be better to use a custom work item save follow up action/participant, as that can reliably detect a state change. Here some examples how they wold look like: https://rsjazz.wordpress.com/?s=participant
Ralph Schoon selected this answer as the correct answer

One other answer



permanent link
Donald Nong (14.4k213) | answered Jun 06 '16, 3:54 a.m.
That's not possible. You want to change an attribute but you don't want to save the change, aren't you contradicting yourself?

You may have in mind something like the countdown clock on some auction sites, but such feature does not exist in RTC.

Comments
Daniel Flores Montanez commented Jun 07 '16, 10:45 a.m.

Not necessarily .. for example you can have 2 input decimal attributes that multiply into a 3rd decimal output attribute.

The third attribute will have those other 2 as dependencies.

When you type in any numbers into the 2 input attributes. The third will display in real time.
this is what i want for time. to alway update without saving. almost like a countdown.
This works if you set time as a string, but not a timestamp


Cesar Sasaki commented Jun 30 '17, 12:50 p.m.

 Hi Daniel

I think what are youtrying to do is not possible, at least the way you are thinking.

You are assigning the value of Now(); to an attribute. But that assignment it is done when you save the workitem. So you will need to save the workitem.
You can store in hidden attributes the dates that the state changes. For example
Get state1 and state2 dates and then you do a math.

Your answer


Register or to post your answer.