Get amount of time a WI has been in a given state? (javascript)
Daniel Flores Montanez (19●8●13)
| asked Jun 01 '16, 11:22 a.m.
edited Jun 12 '16, 5:49 p.m. by Geoffrey Clemm (30.1k●3●30●35)
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.
|
Accepted answer
Ralph Schoon (63.5k●3●36●46)
| 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
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
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
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.
Comments
I've noticed that the time gets updated every time you save, not necessarily with change of states.
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.